수치 계산과 딥러닝을 위한 Nim 기반의 빠르고 사용하기 편한 N차원 텐서 라이브러리로, CPU, CUDA, OpenCL 백엔드를 지원합니다.
- 스타
- 1,451
- 포크
- 133
- 열린 이슈
- 22
- 마지막 커밋
- 12시간 전
어떤 프로젝트인가요?
MatX는 개발자가 브로드캐스팅, 슬라이싱, 리덕션, 선형대수, FFT, 솔버, 난수 생성 등을 포함한 배열 코드를 NumPy와 유사한 방식으로 작성할 수 있도록 해주는 C++20 수치 계산 라이브러리입니다. 표현식은 지연 평가되며, NVIDIA GPU용 CUDA executor, JIT executor, 멀티스레드 호스트 executor 등 선택한 executor로 실행할 때만 계산됩니다.
MathDx를 활성화하면 CUDA JIT executor가 지원되는 행렬 곱셈, FFT, 솔버, 난수 연산을 포함해 호환되는 표현식을 하나의 생성된 커널로 퓨전할 수 있습니다. 이로써 중간 임시 데이터와 추가 커널 실행을 없앨 수 있습니다. 이 프로젝트는 헤더 전용이며, GPU 빌드에는 C++20 툴체인과 CUDA Toolkit이 필요합니다. Linux를 지원하며 Windows는 알파 단계로 지원합니다.
호스트 실행에서는 빌드 시 해당 옵션을 활성화하면 FFT, BLAS, LAPACK 작업을 NVPL, FFTW, OpenBLAS, BLIS 같은 최적화된 CPU 백엔드에 위임할 수 있습니다.
핵심 기능
- 01임의의 차원 수, 뷰, 슬라이싱, 브로드캐스팅을 지원하는 NumPy 스타일 배열.
- 02GPU 또는 CPU executor를 통해 실행되는 지연 평가 요소별 표현식.
- 03지원되는 FFT, BLAS, 솔버, 난수 연산을 아우르는 JIT 커널 퓨전.
- 04최적화된 CUDA 라이브러리 활용과 NVPL, FFTW, OpenBLAS, BLIS 등의 호스트 백엔드.
- 05CMake 및 Conan 패키징을 통한 헤더 전용 통합.
활용 사례
- GPU 성능을 유지하면서 Python의 NumPy 스타일 수치 코드를 C++로 포팅.
- NVIDIA GPU에서 FFT와 요소별 연산을 결합하는 신호 처리 파이프라인 구축.
- GPU 또는 멀티스레드 CPU에서 배치 선형대수나 옵션 가격 책정 방식의 계산 실행.
- CUDA 관련 코드를 직접 작성하지 않고 수치 커널 프로토타이핑.
빠른 시작
- 1
저장소를 CMake 프로젝트에 추가하고 인터페이스 타깃을 링크합니다
add_subdirectory(path/to/MatX) - 2
소스 파일에 API를 포함합니다
#include <matx.h> - 3
MatX 예제와 테스트를 로컬에서 빌드합니다
cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON - 4
빌드를 컴파일하고 테스트 스위트를 실행합니다
cmake --build build -j
사용 전 알아둘 점
- CUDA executor를 사용하려면 NVIDIA GPU가 필요합니다. CPU 실행도 지원됩니다.
- JIT 커널 퓨전은 실험적 기능이며, 지원되는 셰이프 또는 연산과 함께 -DMATX_EN_MATHDX=ON 옵션이 필요합니다.
- 일부 호스트 측 리덕션과 변환은 여전히 단일 스레드로 실행됩니다.
포함된 컬렉션
토픽
자주 묻는 질문
- MatX은(는) 무엇인가요?
- NVIDIA GPU 또는 멀티스레드 CPU에서 실행되는 NumPy 스타일 텐서 표현식과 선택적 커널 퓨전을 지원하는 C++20 헤더 전용 라이브러리입니다. MatX는 개발자가 브로드캐스팅, 슬라이싱, 리덕션, 선형대수, FFT, 솔버, 난수 생성 등을 포함한 배열 코드를 NumPy와 유사한 방식으로 작성할 수 있도록 해주는 C++20 수치 계산 라이브러리입니다. 표현식은 지연 평가되며, NVIDIA GPU용 CUDA executor, JIT executor, 멀티스레드 호스트 executor 등 선택한 executor로 실행할 때만 계산됩니다.
- MatX은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- MatX은(는) BSD-3-Clause 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- MatX은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. MatX의 마지막 커밋은 2026년 11월 5일입니다.
- MatX은(는) 어디에 사용할 수 있나요?
- GPU 성능을 유지하면서 Python의 NumPy 스타일 수치 코드를 C++로 포팅. NVIDIA GPU에서 FFT와 요소별 연산을 결합하는 신호 처리 파이프라인 구축. GPU 또는 멀티스레드 CPU에서 배치 선형대수나 옵션 가격 책정 방식의 계산 실행. CUDA 관련 코드를 직접 작성하지 않고 수치 커널 프로토타이핑.
- MatX는 어떻게 설치하나요?
- 저장소를 CMake 프로젝트에 추가하고 인터페이스 타깃을 링크합니다: add_subdirectory(path/to/MatX) 소스 파일에 API를 포함합니다: #include <matx.h> MatX 예제와 테스트를 로컬에서 빌드합니다: cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON 빌드를 컴파일하고 테스트 스위트를 실행합니다: cmake --build build -j
- MatX은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/NVIDIA/MatX
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
NVIDIA GPU에서 고성능 GEMM 및 관련 선형대수 커널을 작성하기 위한 CUDA C++ 템플릿 라이브러리이자 Python DSL입니다.
NCCL은 단일 노드 및 멀티 노드 학습을 위한 all-reduce, all-gather 등의 최적화된 GPU 통신 프리미티브를 제공하는 NVIDIA 라이브러리입니다.
Vulkan 기반의 C++ 및 Python GPU 컴퓨팅 프레임워크로, AMD, Qualcomm, NVIDIA 등 여러 제조사의 GPU에서 범용 작업을 실행합니다.
NVIDIA GPU에서 머신러닝, 선형대수, 정보 검색을 위한 재사용 가능한 프리미티브를 제공하는 CUDA 가속 C++ 헤더 전용 라이브러리 및 Python 래퍼입니다.