3

CUDA ドキュメントは、CUDA アプリケーションが例外をスローした後にメモリ データがどのように変化するかについて明確ではありません。

たとえば、カーネルの起動 (動的) で例外が発生した場合 (例: Warp Out-of-range Address)、現在のカーネルの起動は停止されます。この時点の後、デバイス上のデータ (例: __device__ 変数) は引き続き保持されますか、それとも例外と共に削除されますか?

具体例は次のようになります。

  1. CPU がカーネルを起動する
  2. カーネルが __device__ variableA の値を 5 に更新してクラッシュする
  3. CPU memcpy デバイスからホストへの variableA の値。この場合、CPU が取得する値は何ですか?5 か何か?

誰かがこの背後にある理論的根拠を示すことができますか?

4

1 に答える 1