由于我怀疑“黑匣子”(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()应该被转移到 some run(),并且cudaDeviceReset()应该是 as last 命令main(),对吧?