关于 cudaDeviceReset()
的正确使用存在各种问题,但我无法找到以下问题的答案。
cudaDeviceReset()
上的文档说它明确销毁并清除当前进程中与当前设备关联的所有资源
。
假设我有一个包含许多数组的程序,所有数组都使用 cudaMalloc
分配。我可以在程序末尾使用 cudaDeviceReset
而不是许多 cudaFree
语句来快速释放设备上的所有内存吗?这样做有什么缺点吗?
最佳答案
如果您愿意,可以在应用程序结束时调用 cudaDeviceReset()
。其实这是recommended正确使用可视化分析器。
如果您实际上已经完成了 GPU 的使用并准备好退出您的应用程序,那么如果您选择使用 cudaDeviceReset()
应该没有任何缺点。请注意,对于这种情况,这些方法(cudaDeviceReset
与许多 cudaFree
语句)可能都不是真正必需的,因为应用程序退出也会释放资源(由于应用程序退出时的 cuda 上下文)。但请注意上面关于分析器使用的声明。
关于c++ - cudaDeviceReset 诉 cudaFree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050323/