xtensor-stack/xtensor
C++ tensors with broadcasting and lazy computing
해결하는 문제
xtensor 는 다차원 배열 표현을 사용한 수치 분석을 위한 C++ 라이브러리입니다. Python 의 NumPy 와 유사한 기능을 C++ 에 도입하여, Python 의 오버헤드 없이 복잡한 수학 연산을 배열에서 수행할 수 있게 하며, Python 생태계에서 온 사용자들에게 친숙한 API 를 유지합니다.
작동 방식
이 라이브러리는 확장 가능한 표현식 시스템을 사용하여 지연 브로드캐스팅 을 구현합니다. 즉각적인 계산 대신, 덧셈이나 사인 함수와 같은 연산은 xexpression 객체를 반환합니다. 실제 값은 결과가 xarray 나 xtensor 와 같은 컨테이너에 접근하거나 할당될 때 계산됩니다.
주로 두 가지 주요 컨테이너 유형을 제공합니다:
xarray: 런타임에 리사이징이 가능한 동적 컨테이너로, NumPy 배열과 유사합니다.xtensor: 차원이 컴파일 시점에 설정되는 컨테이너로, 형태와 스트라이드를 스택에 할당할 수 있어 성능 향상이 가능합니다.
대상 사용자
다차원 배열 조작과 브로드캐스팅 기능이 필요한 수치 분석, 데이터 과학, 고성능 컴퓨팅을 수행하는 C++ 개발자를 대상으로 합니다.
주요 특징
- NumPy 스타일 API: C++ 표준 라이브러리의 관례를 따르면서도 NumPy 의 배열 프로그래밍 모델을 모방합니다.
- 지연 계산: 접근 시점에만 표현식을 평가함으로써 불필요한 계산을 줄입니다.
- 브로드캐스팅: NumPy 스타일의 규칙에 따라 서로 다른 형태의 배열 간 요소 단위 연산을 지원합니다.
- 상호 운용성: 어댑터를 통해 NumPy, Julia, R 데이터 구조를 인플레이스로 처리할 수 있습니다.
- SIMD 가속:
xsimd와 통합되어 SSE, AVX, AVX512, Neon 명령 세트를 활용해 성능을 향상시킵니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트