ベクトル間の距離を計算するカーネルを実装しました。プログラムは期待どおりに実行され、結果は CPU と同じです。プログラムは、デバイスで使用されているリソースを解放し ( cudaFree
)、正常に終了します。さらに、終了する前にcudaDeviceReset()
.
すべての CUDA API 呼び出しはラップされ、Eclipse Nsight API の例のようにエラーをチェックします。プログラムの実行でエラーは報告されません。
グローバルメモリへの読み取りまたは書き込みアクセスを実行する前に、メモリ位置インデックスのカーネルチェック。つまり、if ( idx < N ) ...
CPU では、ループは、カーネルの呼び出しの前と次の反復の前に aと aを実行する実行p
時間です。Aは、カーネルの後、cudaFree 呼び出しの前に配置され、GPU によって起動された作業が完了するのを待ちます。cudaMalloc
cudaMemcpy(HtoD)
cudaFree()
cudaDeviceSynchronize()
はcuda-memcheck
、リリースおよびデバッグ モードでプログラムを分析するときにエラーを報告しません。
ただし、プログラムの実行中にコンピューターが再起動することがありますが、エラーを追跡するための繰り返しパターンが見つかりません。だから、私の質問は次のとおりです。このエラーをどのようにトラップできますか?
Xシステムを実行しているUbuntu x86_64 GNU/LinuxでCUDAリリース5.0、V0.2.1221を使用しています。デバイスは GTX480 で、インストールされているドライバーのバージョンは 304.54 です。