我正在阅读CUDA示例,我发现当他们介绍事件时,他们为他们创建的每个事件调用了cudaEventDestroy
。
但是我注意到后来的一些例子忽略了这个清理功能。是否存在忘记破坏已创建事件和流的不良副作用(例如,当您忘记释放已分配的内存时内存泄漏)?
答案 0 :(得分:5)
应用程序在退出时仍保留的任何资源都将由操作系统/驱动程序自动释放。因此,如果应用程序仅创建有限数量的事件,则不必手动释放它们。尽管如此,让应用程序退出而不是故意释放所有资源是不好的做法,因为很难区分真正的泄漏和“故意”泄漏。
答案 1 :(得分:0)
您已经在本书的示例代码中发现了错误。
CUDA事件是轻量级的,但资源泄漏是资源泄漏。随着时间的推移,如果你泄漏了足够的东西,你将无法再创建它们。