tskuzzy
tskuzzy

Reputation: 36476

Should CUDA events and streams always be destroyed?

I am reading CUDA By Example and I found that when they introduced events, they called cudaEventDestroy for each event they created.

However I noticed that some later examples neglected this cleanup function. Are there any undesirable side-effects of forgetting to destroy created events and streams (i.e. like a memory leak when you forget to free allocated memory)?

Upvotes: 6

Views: 1207

Answers (2)

ArchaeaSoftware
ArchaeaSoftware

Reputation: 4422

You have identified bugs in the book's sample code.

CUDA events are lightweight, but a resource leak is a resource leak. Over time, if you leak enough of them, you won't be able to create them anymore.

Upvotes: 1

Roger Dahl
Roger Dahl

Reputation: 15734

Any resources the app is still holding at the time it exits will be automatically free'ed by the OS / drivers. So, if the app creates only a limited number of events, it is not strictly necessary to free them manually. Still, letting the app exit without freeing all resources on purpose is bad practice because it becomes hard to distinguish between genuine leaks and "on purpose" leaks.

Upvotes: 5

Related Questions