ドキュメント / 日本語ソースを見る ↗

コンパイラガイド

English | 简体中文 | 日本語 | Deutsch | Русский

ドキュメント · PTX リファレンス · プログラミング ガイド · 中文

1. コンパイルパイプライン

汎用カーネル経路は ruda-kernel::dsl のマクロと型から始まり、Kernel IR を生成し、バックエンドで低位表現への変換とコード生成を行います。ruda-compiler にコンパイラ実装があり、デバイスドライバがその出力を実行環境に渡します。

NVIDIA は 2 つのコンパイル パスを提供します。

選択 カーネルコンパイルパイプライン
nvrtc (デフォルト) Rust カーネル フロントエンド → IR → CUDA C++ → NVRTC → PTX
ptx Rust カーネル フロントエンド → IR → PTX

どちらも NVIDIA ドライバーを通じて実行されます。 CUDA C++ コンパイル パスは、任意の C++ プロジェクトをインポートしたり、CUDA ソースの完全な互換性を提供したりするためのインターフェイスではありません。

2. Cargo feature

コンポーネント/機能 目的
ruda-kernel/frontend カーネル DSL フロントエンド
ruda-kernel/lowering-cpp C++ への低位化の統合
ruda-compiler/cpp C++ バックエンドの実装
ruda-compiler/ptx 直接 PTX コンパイラ
ruda-driver-cuda/direct-ptx CUDA バックエンドでの直接 PTX 選択を有効にします。

機能により、どのコードが構築されるかが決まります。環境変数は実行時にパスを選択します。これらは別個のコントロールです。 CUDA マニフェスト および コンパイラー マニフェスト を参照してください。

3. 環境変数

変数 行動
RUDA_CUDA_COMPILER nvrtc または ptx を受け入れます。設定されていない場合、デフォルトは nvrtc になります。
RUDA_PTX_VERSION 直接 PTX には明示的な major.minor バージョンが必要です。
CUDA_PATH CUDA ツールキットのインストール ルート
RUDA_PTX_TEST_CACHE ptx-runtime サンプルだけが読み取るキャッシュディレクトリの上書き設定

不明なコンパイラ値によりエラーが発生します。 direct-ptx を有効にせずに ptx を選択すると、NVRTC に切り替えるのではなく、エラーが発生します。 compiler_backend.rsを参照してください。

4. ターゲットとキャッシュ

スタンドアロンの直接 PTX コンパイルには、明示的な PTX バージョンと SM ターゲットが必要です。 PTX は命令セットのバージョンを識別します。 SM はターゲット アーキテクチャを識別します。これらは交換可能ではありません。

CUDA ドライバーの直接 PTX キャッシュ名前空間には、バックエンド識別子、SM、および PTX バージョンが含まれており、NVRTC キャッシュとは別のものです。

5. コンパイルエラー

サポートされていない IR、引数メタデータ、またはターゲット条件によりエラーが発生します。ダイレクト PTX は、コンパイル パスを自動的に切り替えるのではなく、サポートされていない操作を報告します。 デバッグを参照してください。

ruda-compiler には、WGSL、SPIR-V、および MLIR モジュールも含まれています。