CPU、CUDA、OpenCLバックエンドを備え、数値計算や深層学習向けに設計された、Nim製の高速で使いやすいN次元テンソルライブラリ。
- スター
- 1,451
- フォーク
- 133
- 未解決の Issue
- 22
- 最終コミット
- 21 時間前
これは何?
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カーネル融合。
- 04NVPL、FFTW、OpenBLAS、BLISなどの最適化されたCUDAライブラリの利用とホストバックエンド。
- 05CMakeとConanパッケージングに対応したヘッダーオンリーでの統合。
ユースケース
- GPUの性能を維持しながら、NumPy風の数値計算コードをPythonから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の性能を維持しながら、NumPy風の数値計算コードをPythonから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で汎用ワークロードを実行できます。
HGEMM、FP8/FP4 GEMM、Flash-Attentionを網羅する200以上のカーネルを収録した、最新のCUDA学習ノートとコードのオープンソース書籍。