CUDA ドキュメントは、CUDA アプリケーションが例外をスローした後にメモリ データがどのように変化するかについて明確ではありません。
たとえば、カーネルの起動 (動的) で例外が発生した場合 (例: Warp Out-of-range Address)、現在のカーネルの起動は停止されます。この時点の後、デバイス上のデータ (例: __device__ 変数) は引き続き保持されますか、それとも例外と共に削除されますか?
具体例は次のようになります。
- CPU がカーネルを起動する
- カーネルが __device__ variableA の値を 5 に更新してクラッシュする
- CPU memcpy デバイスからホストへの variableA の値。この場合、CPU が取得する値は何ですか?5 か何か?
誰かがこの背後にある理論的根拠を示すことができますか?