我正在閱讀CUDA By Example,我發現當他們介紹事件時,他們爲其創建的每個事件調用了cudaEventDestroy
。CUDA事件和流應該被銷燬嗎?
但是我注意到後面的一些例子忽略了這個清理函數。是否有任何忘記摧毀創建的事件和流的不良副作用(即,當您忘記釋放分配的內存時,就像內存泄漏一樣)?
我正在閱讀CUDA By Example,我發現當他們介紹事件時,他們爲其創建的每個事件調用了cudaEventDestroy
。CUDA事件和流應該被銷燬嗎?
但是我注意到後面的一些例子忽略了這個清理函數。是否有任何忘記摧毀創建的事件和流的不良副作用(即,當您忘記釋放分配的內存時,就像內存泄漏一樣)?
該應用程序在退出時仍然保留的任何資源都將被操作系統/驅動程序自動釋放。因此,如果應用程序僅創建有限數量的事件,則不必手動釋放它們。儘管如此,讓應用程序退出而不是有意地釋放所有資源是不好的做法,因爲很難區分真正的泄漏和「故意」泄漏。
您已經確定了本書示例代碼中的錯誤。
CUDA事件是輕量級的,但資源泄漏是資源泄漏。隨着時間的推移,如果你泄漏了足夠的信息,你將無法再創建它們。