chelsea0x3b/cudarc
Safe rust wrapper around CUDA toolkit
解消される課題
NVIDIA CUDA toolkitとやり取りするための、最小限かつ安全なRust APIを提供します。これにより、開発者はCUDA開発で通常必要とされる、生の、安全ではないCスタイルのFFI (Foreign Function Interface) 呼び出しを直接扱うことなく、GPUアクセラレーションを活用できるようになります。
仕組み
このプロジェクトは、CUDA toolkitライブラリ(Driver API、NVRTC、cuBLAS、cuDNNなど)の周囲に、階層化されたラッパーシステムを作成します。これらのラッパーは、3つの抽象化レベルに整理されています:
- sys: bindgenを介して生成された生のFFI API。
- result: 生の戻り値をRustの
Result型に変換する薄いラッパー。 - safe: エルゴノミクス(使いやすさ)とメモリ安全性を優先した、高レベルで安全な抽象化。
複数のリンキング方法(動的ロード、動的リンク、および静的リンク)をサポートしており、ビルド時にターゲットとするCUDAバージョンを指定できます。
対象ユーザー
安全なRust環境内で、高性能なGPUカーネルを記述し、線形代数、乱数生成、およびディープラーニングのプリミティブを利用するためにNVIDIAの特化型ライブラリを活用したいRust開発者。
ハイライト
- 幅広いライブラリサポート: cuBLAS、cuDNN、NCCL、cuRAND、cuSPARSEを含む、幅広いCUDAツールのためのラッパー。
- 実行時コンパイル: 実行時にCUDAカーネルをコンパイルするためのNVRTCとの統合。
- 柔軟なリンキング: 動的ロード(ビルド時にライブラリが不要)、動的リンク、および静的リンクをサポート。
- エルゴノミックなカーネル起動: ビルダーパターンを使用して、カーネル引数と起動構成を指定。
関連
- プロジェクト
- Dispatch
- プロジェクト
- Dispatch
- プロジェクト