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

Buz*_*uzz 5 cuda gpgpu

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

use*_*016 9

是.

当您的应用程序终止时(无论是否正常),操作系统都会回收它的所有内存,无论它是否已经free存在.类似地,GPU上分配的内存由其驱动程序管理,驱动程序将释放您的应用程序所拥有的所有资源,cudaFree无论是否.

然而,好的做法是每个分配都有匹配的释放,所以不要以此为借口不正确释放你的内存:)

  • 嗨@Buzz,这是一个很好的问题,答案并不简单,所以您不妨将其作为一个单独的问题来问。简而言之,一般来说,每个分配都应该有一个匹配的释放。在长时间运行的进程中跳过释放会导致内存泄漏,然后随着系统内存不足而崩溃。在短期进程或应用程序关闭期间跳过释放可以被视为一种优化。 (2认同)