Следует ли всегда уничтожать события и потоки CUDA?


Я читаю CUDA на примере, и я обнаружил, что когда они вводили события, они вызывали cudaEventDestroy для каждого события, которое они создали.

Однако я заметил, что некоторые более поздние примеры пренебрегают этой функцией очистки. Существуют ли какие-либо нежелательные побочные эффекты от забывания уничтожить созданные события и потоки (например, утечка памяти, когда вы забываете освободить выделенную память)?

2 5

2 ответа:

Любые ресурсы, которые приложение все еще держит в момент выхода, будут автоматически освобождены ОС / драйверами. Таким образом, если приложение создает только ограниченное число событий, нет необходимости освобождать их вручную. Тем не менее, позволить приложению выйти, не освободив все ресурсы специально, - плохая практика, потому что становится трудно отличить подлинные утечки от "преднамеренных" утечек.

Вы обнаружили ошибки в образце кода книги.

События CUDA являются легковесными, но утечка ресурсов-это утечка ресурсов. Со временем, если вы утечете достаточно из них, вы больше не сможете их создавать.