1

Visual Studio 2008 を使用して Windows で作業しています。実行中に Cuda プログラムがクラッシュします。つまり、画面が黒くなります。また、ウォッチドッグ タイムアウトが原因で実行に時間がかかりすぎるため (約 10 秒)、OS がカーネルを強制終了すると考えられます。しかし、なぜ同じプログラムがクラッシュしないのか、またはカーネルをデバッグするときに OS が強制終了しないのはなぜなのかわかりません。デバッグ中のカーネルの実行には、まだ約 10 秒 (またはそれ以上) かかります。

ありがとうございました

4

4 に答える 4

1

この問題が発生しました。

私の場合、NSight CUDA デバッガー (Visual Studio 2012) を介してプログラムを実行すると、正常に実行されました。ただし、NSight の外部で Visual Studio の内部デバッガーを使用して実行した場合、または個別に実行した場合、への呼び出しcudaGLMapBufferObject(void** devPtr, GLuint bufObj)は失敗し、不明なエラーの列挙型が返さcuda_statusれます。その後に終了しなかった場合、他の呼び出しは同じエラーで失敗します。

これは、動的にサイズ変更された共有メモリを使用していたカーネルで、3 番目のパラメータ (ランタイム サイズの共有メモリのサイズを定義するため) を渡すのを忘れたことが原因でした。

于 2014-04-21T20:18:53.770 に答える
-1

多くの場合、これはデバッグの初期化値からゼロに発生する可能性がありますが、リリースでは値が初期化されません。まず、すべてが初期化されていることを確認します。別の投稿者が言及した競合状態も発生する可能性があります。リリース ビルドで最適化を無効にすることもできます。頻繁ではありませんが、時折、コンパイラはコードを破壊する安全でない最適化を実行します。通常、コンパイラにバグがあると思う場合、特に数年の経験のない人にとっては、それは間違っていることに注意してください。

于 2013-02-05T22:01:56.970 に答える
-1

通常、これらの問題は、競合状態の問題がある場合に発生します。デバッグの実行は遅いのでバグは発生しませんが、デバッグがオフの場合、命令が異なる順序で処理され、プログラムがクラッシュします。

于 2013-01-30T23:44:45.030 に答える