Repolode
NVIDIA

NVIDIA/MatX

NVIDIA GPUまたはマルチスレッドCPUで実行でき、カーネル融合にも対応した、NumPy風テンソル式のためのC++20ヘッダーオンリーライブラリ。

代替できる製品:NumPyCuPy

スター
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. 1

    リポジトリをCMakeプロジェクトに追加し、そのインターフェースターゲットをリンクします

    add_subdirectory(path/to/MatX)
  2. 2

    ソースファイルにAPIをインクルードします

    #include <matx.h>
  3. 3

    MatXのサンプルとテストをローカルでビルドします

    cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON
  4. 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 の数値は毎日更新されます。

関連プロジェクト

採用したカーネルを次世代の参照カーネルへ昇格させながら、CUDAとCuTe DSLのカーネルを最適化する自己進化型GPUカーネルエージェント。

AI・機械学習#gpu#cuda#cute-dsl
276+206 今週37PythonApache-2.0更新 一昨日

HGEMM、FP8/FP4 GEMM、Flash-Attentionを網羅する200以上のカーネルを収録した、最新のCUDA学習ノートとコードのオープンソース書籍。

学習リソース#cuda#gpu#tensor-cores
1.2万+16 今週1275CudaGPL-3.0更新 昨日