c++ - cudaDeviceReset 诉 cudaFree

标签 c++ memory-management cuda

关于 cudaDeviceReset() 的正确使用存在各种问题,但我无法找到以下问题的答案。

cudaDeviceReset() 上的文档说它明确销毁并清除当前进程中与当前设备关联的所有资源

假设我有一个包含许多数组的程序,所有数组都使用 cudaMalloc 分配。我可以在程序末尾使用 cudaDeviceReset 而不是许多 cudaFree 语句来快速释放设备上的所有内存吗?这样做有什么缺点吗?

最佳答案

如果您愿意,可以在应用程序结束时调用 cudaDeviceReset()。其实这是recommended正确使用可视化分析器。

如果您实际上已经完成了 GPU 的使用并准备好退出您​​的应用程序,那么如果您选择使用 cudaDeviceReset() 应该没有任何缺点。请注意,对于这种情况,这些方法(cudaDeviceReset 与许多 cudaFree 语句)可能都不是真正必需的,因为应用程序退出也会释放资源(由于应用程序退出时的 cuda 上下文)。但请注意上面关于分析器使用的声明。

关于c++ - cudaDeviceReset 诉 cudaFree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050323/

相关文章:

c++ - 我如何在 CUDA 中正确使用全局内存?

c++ - std::set_intersection 在两个完全不同的容器上

memory-management - 为什么我们不在用户空间使用屏障

c++ - 突然从 cython 中反复调用 c++ 方法要慢得多

c - 使 malloc() 返回 NULL 而不是使程序崩溃?

java - 创建的对象数量

c++ - 有没有办法在一个 C++ 程序中同时使用 FFTW 和 cuFFTW?

cuda - CUDA内核中数组的内存空间

c++ - C++ 中的 R 值到底是什么?

用于未定方程系统的 C++ 库