chelsea0x3b/cudarc

Safe rust wrapper around CUDA toolkit

何を解決するか

CUDAツールキットとの対話に最小限で安全なRust APIを提供し、開発者がGPUアクセラレーションを活用できるようにします。これにより、通常CUDA開発に必要とされる低レベルで不安定なCスタイルのFFI(外部関数インターフェース)呼び出しを直接扱う必要がなくなります。

仕組み

cudarcはCUDAツールキットライブラリの上にレイヤードされたラッパー構造を構築します。3つのレベルのアクセスを提供します:

  1. sys: bindgenによって生成された原始的なFFI API。
  2. result: CUDA関数の戻り値をRustのResult型に変換する薄いラッパー。
  3. safe: 安全性と使いやすさを最優先とした高レベルで使いやすい抽象化。

Driver API、NVRTC(ランタイムコンパイル)、cuBLAS、cuDNN、NCCLなど、広範なCUDAライブラリをサポートしています。また、柔軟なリンクオプション(動的ロード、動的リンク、静的リンク)を可能にし、複数のCUDAバージョンに対応しています。

対象ユーザー

高性能なGPUカーネルを書く必要があり、CUDAリソース(メモリ割り当てやデータ転送など)を安全で自然なRustインターフェースを使って管理したいRust開発者。

特徴

  • 幅広いライブラリ対応: cuBLAS、cuDNN、NCCL、cuSPARSEなどの主要なCUDAツール用のラッパー。
  • ランタイムコンパイル: NVRTCとの統合により、ランタイム時にCUDAカーネルをコンパイル可能。
  • 柔軟な設定: フィーチャーフラグによる複数のCUDAおよびcuDNNバージョンのサポート。
  • 使いやすいカーネル起動: ビルダーパターンを使用してカーネル引数や起動設定を指定可能。

"This library makes it much easier to write GPU code in Rust without sacrificing safety or performance." — @jamesmcmahan

関連

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