高いコンピューティング能力でコンパイルされたCUDAコードは、コンピューティング能力の低いデバイスで、カーネルで黙って失敗する前に、完全に長い時間実行されます。私は、デバイス(Tesla C2050)が2.0
である間に、ビルドルールがsm_21
であったことを認識するために、半日も逃れていました。CUDA:適切なコンピューティング機能を確認するにはどうすればよいですか?
互換性のあるコンピューティング機能を搭載したデバイスで実行されている場合、セルフチェックできるCUDA APIコードはありますか?私は多くのコンピューティング能力のデバイスをコンパイルして作業する必要があります。このようなエラーが発生しないように私が取ることができる他の措置はありますか?
バイナリがデバイスを検出して適切なバージョンを読み込むことはできますが、単一のバージョン(一致しない)があるときに意味のあるエラーで終了しない理由は何ですか? –
基本的に抽象度が高すぎます。ドライバAPIを使用して「手作業で」プロセスを実行する場合、対象となるGPUに適したキューインがないと意味のあるエラーメッセージが返されます。しかし、多くのステップはすべて暗黙的に行われ(デバイスの選択、コンテキストの確立、モジュールのロード、コードとデータの取得)、故意に抽象化されたプロセスのいずれかが失敗した場合、ランタイムは汎用の初期化エラーを返します。その程度の制御が必要な場合は、ドライバAPIを使用してコンテキストを明示的に管理してから、ランタイムAPIのコンテキストを使用してください。 CUDA 3.1以降の相互運用性がサポートされました。 – talonmies
@Ashwin:投稿後2年半の回答を受け入れました。それは何らかの記録でなければなりません..... – talonmies