关于cudaDeviceReset()
的正确使用存在各种问题,但我未能找到以下问题的答案。
cudaDeviceReset()
上的文档说explicitly destroys and cleans up all resources associated with the current device in the current process
。
假设我有一个包含许多数组的程序,所有数组都分配有cudaMalloc
。我可以在程序结束时使用cudaDeviceReset
代替许多cudaFree
语句来快速释放设备上的所有内存吗?这样做有什么不利之处吗?
答案 0 :(得分:4)
如果您愿意,可以在应用程序结束时致电cudaDeviceReset()
。实际上,对于视觉分析器的正确使用,这是recommended。
如果您确实已完成GPU并准备退出应用程序,那么如果您选择使用cudaDeviceReset()
,应该没有任何缺点。请注意,由于应用程序退出还将释放资源(由于应用程序出口处的cuda上下文被破坏),因此这些方案(cudaDeviceReset
与许多cudaFree
语句)可能都不是必需的。 。但请注意上面关于探查器使用的声明。