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つの抽象化レベルに整理されています:

  1. sys: bindgenを介して生成された生のFFI API。
  2. result: 生の戻り値をRustのResult型に変換する薄いラッパー。
  3. safe: エルゴノミクス(使いやすさ)とメモリ安全性を優先した、高レベルで安全な抽象化。

複数のリンキング方法(動的ロード、動的リンク、および静的リンク)をサポートしており、ビルド時にターゲットとするCUDAバージョンを指定できます。

対象ユーザー

安全なRust環境内で、高性能なGPUカーネルを記述し、線形代数、乱数生成、およびディープラーニングのプリミティブを利用するためにNVIDIAの特化型ライブラリを活用したいRust開発者。

ハイライト

  • 幅広いライブラリサポート: cuBLAS、cuDNN、NCCL、cuRAND、cuSPARSEを含む、幅広いCUDAツールのためのラッパー。
  • 実行時コンパイル: 実行時にCUDAカーネルをコンパイルするためのNVRTCとの統合。
  • 柔軟なリンキング: 動的ロード(ビルド時にライブラリが不要)、動的リンク、および静的リンクをサポート。
  • エルゴノミックなカーネル起動: ビルダーパターンを使用して、カーネル引数と起動構成を指定。

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • Dispatch
  • プロジェクト