chelsea0x3b/cudarc
Safe rust wrapper around CUDA toolkit
何を解決するか
CUDAツールキットとの対話に最小限で安全なRust APIを提供し、開発者がGPUアクセラレーションを活用できるようにします。これにより、通常CUDA開発に必要とされる低レベルで不安定なCスタイルのFFI(外部関数インターフェース)呼び出しを直接扱う必要がなくなります。
仕組み
cudarcはCUDAツールキットライブラリの上にレイヤードされたラッパー構造を構築します。3つのレベルのアクセスを提供します:
- sys: bindgenによって生成された原始的なFFI API。
- result: CUDA関数の戻り値をRustの
Result型に変換する薄いラッパー。 - 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