1

最近、CUDA 5をインストールしました(重要な場合は、Visual Studio 2010 Expressを使用しています)。カーネル内のグローバルメモリデバイスアレイで範囲外の読み取りアクセスを実行しようとすると、CUDAでエラーが発生するようになりました(エラー30'不明なエラー')。この一見自動化された範囲外のエラーチェックがCUDA5に新しく追加されたものかどうか疑問に思っています。以前のバージョンで見たのを覚えていません。

さらに、この自動範囲外エラーチェックをオフにする方法はありますか?この機能をオンにすると、カーネルに条件付きロジックを追加する必要があります(以前は、範囲外の結果を使用していませんでした)。

ありがとうございました、

アーロン

4

2 に答える 2

1

これはデバイスの例外であり、ソフトウェアによるものではありません。以前にクラッシュしなかった唯一の理由は、純粋な運 (そしておそらく古いコンパイラ) です。コンパイラの動作に依存することはできません (たとえば、古いコンパイラを使用していても、最適化レベルごとに異なる動作が見られる場合があります)。

于 2012-12-13T00:28:24.390 に答える
0

私の経験を考慮すると、範囲外エラー チェックは古い CUDA バージョンにもありますが、厳密には動作しません。一部のスレッドが割り当てられた配列の境界を超えた場合、より多くのスレッドとより大きな割り当てられた配列でカーネルを起動すると、より小さな配列でより小さなカーネルを起動するよりも頻繁にカーネル クラッシュが発生しました。

このチェックは CUDA ランタイム システムによって行われていると思いますが、これをオフにする方法はありません。@Roger Dahlに同意すると、このチェックをオフにする方法があった場合、範囲外に書き込むことは間違いなく「OK」ではありません。

于 2012-12-13T00:10:33.013 に答える