Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果没有使用cudaFree(),在使用它的应用程序退出后,GPU上分配的内存会发生什么变化?_Cuda_Gpgpu - Fatal编程技术网

如果没有使用cudaFree(),在使用它的应用程序退出后,GPU上分配的内存会发生什么变化?

如果没有使用cudaFree(),在使用它的应用程序退出后,GPU上分配的内存会发生什么变化?,cuda,gpgpu,Cuda,Gpgpu,如果最后没有使用cudaFree(),那么在使用它的应用程序/内核函数退出后,正在使用的内存是否会自动释放?是 当应用程序终止时(无论是否正常),操作系统都会回收其所有内存,而不管它是否有空闲的d内存。 类似地,GPU上分配的内存由其驱动程序管理,该驱动程序将释放应用程序持有的所有资源,cudaFreed 然而,每个分配都有一个匹配的释放,这是一个很好的实践,所以不要以此为借口不正确地释放内存:)据我所知,如果不在循环中释放内存,或者如果多次声明内存,声明的内存将累积。最终系统将耗尽内存。谢谢你

如果最后没有使用cudaFree(),那么在使用它的应用程序/内核函数退出后,正在使用的内存是否会自动释放?

当应用程序终止时(无论是否正常),操作系统都会回收其所有内存,而不管它是否有
空闲的
d内存。
类似地,GPU上分配的内存由其驱动程序管理,该驱动程序将释放应用程序持有的所有资源,
cudaFree
d


然而,每个分配都有一个匹配的释放,这是一个很好的实践,所以不要以此为借口不正确地释放内存:)

据我所知,如果不在循环中释放内存,或者如果多次声明内存,声明的内存将累积。最终系统将耗尽内存。

谢谢你的回答,Gregor:)但是如果在应用程序结束后GPU驱动程序自动释放资源,为什么要增加程序员的工作量(还有一件事要记住和做)和代码长度(这意味着更难编写和调试)建议将取消分配作为一种好的做法?嗨@Buzz,这是一个好问题,答案并不琐碎,因此你不妨将其作为一个单独的问题提问。简言之,一般来说,每个分配都应该有一个匹配的解除分配。在长时间运行的进程中跳过释放将导致内存泄漏,然后在系统内存不足时崩溃。在短期流程中或在应用程序关闭期间跳过释放可以被视为一种优化。