互換性ガイド
English | 简体中文 | 日本語 | Deutsch | Русский
ドキュメント · プログラミングガイド · 中文
1. CUDA の概念
| CUDA の既知の概念 | Ruda の対応インターフェース |
|---|---|
| ホストとデバイスの責務 | ホスト側 Rust コードとカーネル DSL |
| Grid/block | RudaCount/RudaDim |
| 1 次元のグローバルスレッド位置 | ABSOLUTE_POS |
| メモリ確保と転送 | ComputeClient のメモリおよび読み戻しインターフェース |
| カーネルのコンパイルと起動 | ruda-kernel、ruda-compiler、デバイスランタイム |
| BLAS、DNN、FFT、疎行列ライブラリ | ruBLAS、ruDNN、ruFFT、ruSPARSE |
| 集合通信 | ruCCL |
これは概念の対応表であり、関数をそのまま置き換えるものではありません。Ruda API の所有権、引数、同期、エラーの契約に従ってください。
2. CUDA C++ と PTX
Ruda は CUDA C++/NVRTC 経路と、明示的に選択する直接 PTX 経路を提供します。どちらも NVIDIA ドライバ経由で実行します。
CUDA C++ コンパイル経路は、任意の CUDA プロジェクトの無変更コンパイル、CUDA Runtime/Driver ABI の完全な置き換え、既存ライブラリバイナリの直接再リンクを提供しません。本ガイドに、すべての CUDA アプリケーションを自動変換するコマンドはありません。
直接 PTX は生成器が実装する Kernel IR を処理するもので、任意の PTX 入力プログラムを処理するものではありません。未対応の演算が別のコンパイラに自動フォールバックすることはありません。
3. バックエンドと dtype
バックエンドごとにスカラー型、アトミック演算、行列命令、メモリレイアウト、同期が異なります。デバイス機能を問い合わせてから、各演算の型とレイアウトの要件を確認してください。
共通の DType 列挙型に含まれる型が、すべてのバックエンドのすべての演算で使えるとは限りません。同じ汎用 Rust インターフェースでも、丸めや性能が同一になる保証はありません。
HIP は別の実行インターフェースを使います。PTX 命令セットのバージョン番号を適用しないでください。
4. Cargo と命名
ライブラリ表示名、Cargo パッケージ名、Rust のインポート名は異なる場合があります。計算ライブラリ一覧を参照してください。feature が利用可能な組み合わせを制御し、既定のビルドですべての経路が有効になるわけではありません。
カーネルフロントエンドは #[ruda]、RudaCount、RudaDim を使います。
5. バージョンと数値検証
ソースのバージョン、ロックファイル、feature、コンパイラバックエンド、PTX/SM、ドライバ、GPU の組み合わせが検証構成を定義します。
計算ライブラリの呼び出しを置き換える場合は、レイアウト、転置、インデックスの基数、入力と累積の dtype、正規化、特殊値、同期を一致させてください。例えば ruFFT は 2 のべき乗でない長さをパディングするため、任意長 FFT の意味論をそのまま保つ代替ではありません。