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

デバッグと診断

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

ドキュメント · コンパイラ · ランタイム API · 中文

1. 障害が発生したステージを特定する

段階または症状 まず確認してください
Cargo マニフェストまたは依存関係の解決に失敗しました パス、機能、ロックファイル、依存関係キャッシュ
Rust ビルドの失敗 最初のコンパイラ エラー、ツールチェーン、および機能の組み合わせ
CUDA ツールキットの検索に失敗しました CUDA_PATH、インストール ディレクトリ、およびヘッダー
ドライバーまたはデバイスの初期化エラー ドライバーの可用性、デバイス インデックス、および動的ライブラリのロード
直接 PTX 構成の失敗 ダイレクト ptx 機能、コンパイラーの選択、および PTX バージョン
直接 PTX コンパイル エラー エラーで指定された操作、ターゲット、または引数のレイアウトはサポートされていません
リードバックまたは同期の失敗 以前の非同期送信、入力バインディング、およびデバイス エラー
数値結果が正しくありません シェイプ、ストライド、dtype、境界、同期、およびアルゴリズム コントラクト

最終的なビルド失敗の概要だけでなく、最初のエラーとそのコンテキストも保持します。

2. コンパイルとキャッシュのログ

ランタイム構成は ruda::runtime::config にあります。CompilationConfig は logger、cache、check_mode を提供します。CompilationLogLevel は disabled、basic、full としてシリアライズされ、full はソースレベルのコンパイル情報を含みます。

ptx-runtime の例では、コンパイルと PTX のディスク キャッシュ ヒットをカウントします。 RUDA_PTX_TEST_CACHE は、すべてのアプリケーションによって自動的に読み取られるわけではなく、その例によってのみ読み取られます。

compilation.rs および ptx_runtime.rs を参照してください。

3. 境界チェック

BoundsCheckMode には 3 つの構成があります。

構成 実行時の動作
auto 通常の起動ではチェックが使用されます。明示的にチェックされていない起動ではスキップされる可能性があります
enforce 起動時のチェックを強制します
validate 通常の起動ではチェックが保持されます。未チェックのパスは検証モードを選択します

検出能力はコンパイラとバックエンドに依存します。これらのモードがすべての範囲外アクセス、競合、生存期間のエラーを自動検出するわけではありません。失敗するケースを継続させるためだけに検査を無効にしないでください。

4. 非同期エラー

ComputeClient::launch は計算結果を返しません。 Result を返すリードバックを通じて、または同期を待機することによって、完了を監視します。引数の検証、カーネルのコンパイル、デバイスの実行の失敗を区別します。

5. 問題を再現する

サンプル ページ には、共有メモリの制限、テンソル、ビット単位、および半精度の場合がリストされています。

問題を報告するときは、ソース バージョン、機能、完全なコマンド、バックエンド、PTX バージョン、GPU/ドライバー/ツールキット、入力、および実際の出力を含めてください。機密情報を削除し、貢献ガイド に従ってください。