xtensor-stack/xtensor

C++ tensors with broadcasting and lazy computing

해결하는 문제

xtensor 는 다차원 배열 표현을 사용한 수치 분석을 위한 C++ 라이브러리입니다. Python 의 NumPy 와 유사한 기능을 C++ 에 도입하여, Python 의 오버헤드 없이 복잡한 수학 연산을 배열에서 수행할 수 있게 하며, Python 생태계에서 온 사용자들에게 친숙한 API 를 유지합니다.

작동 방식

이 라이브러리는 확장 가능한 표현식 시스템을 사용하여 지연 브로드캐스팅 을 구현합니다. 즉각적인 계산 대신, 덧셈이나 사인 함수와 같은 연산은 xexpression 객체를 반환합니다. 실제 값은 결과가 xarrayxtensor 와 같은 컨테이너에 접근하거나 할당될 때 계산됩니다.

주로 두 가지 주요 컨테이너 유형을 제공합니다:

  • xarray: 런타임에 리사이징이 가능한 동적 컨테이너로, NumPy 배열과 유사합니다.
  • xtensor: 차원이 컴파일 시점에 설정되는 컨테이너로, 형태와 스트라이드를 스택에 할당할 수 있어 성능 향상이 가능합니다.

대상 사용자

다차원 배열 조작과 브로드캐스팅 기능이 필요한 수치 분석, 데이터 과학, 고성능 컴퓨팅을 수행하는 C++ 개발자를 대상으로 합니다.

주요 특징

  • NumPy 스타일 API: C++ 표준 라이브러리의 관례를 따르면서도 NumPy 의 배열 프로그래밍 모델을 모방합니다.
  • 지연 계산: 접근 시점에만 표현식을 평가함으로써 불필요한 계산을 줄입니다.
  • 브로드캐스팅: NumPy 스타일의 규칙에 따라 서로 다른 형태의 배열 간 요소 단위 연산을 지원합니다.
  • 상호 운용성: 어댑터를 통해 NumPy, Julia, R 데이터 구조를 인플레이스로 처리할 수 있습니다.
  • SIMD 가속: xsimd 와 통합되어 SSE, AVX, AVX512, Neon 명령 세트를 활용해 성능을 향상시킵니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트