「ブラックボックス」(GPU)がいくつかの大きなコード(おそらく他のコードも)できれいにシャットダウンしていないのではないかと疑っているのでcudaDeviceReset()
、main()
. ちょっと待って!これは、デストラクタで重要な CUDA コードを使用してSegmentation fault
静的に作成されたクラスのすべてのインスタンスになりますよね? main()
例えば
class A {
public:
cudaEvent_t tt;
cudaEvent_t uu;
A() {
cudaEventCreate(&tt);
cudaEventCreate(&uu);
}
~A(){
cudaEventDestroy(tt);
cudaEventDestroy(uu);
}
};
静的にインスタンス化:
int main() {
A t;
cudaDeviceReset();
return 0;
}
終了時にセグメンテーション違反。質問:cudaDeviceReset()
の終了時に自動的に呼び出される可能性がありmain()
ますか?
そうでなければ、 の有用なコード全体main()
を にシフトしrun()
、cudaDeviceReset()
の最後のコマンドとして使用する必要がありmain()
ますよね?