2012-06-06 4 views
5

Czytam CUDA Na przykład i odkryłem, że po wprowadzeniu zdarzeń wywoływali oni cudaEventDestroy dla każdego utworzonego zdarzenia.Czy wydarzenia i strumienie CUDA zawsze powinny być niszczone?

Jednak zauważyłem, że niektóre późniejsze przykłady zaniedbały tę funkcję oczyszczania. Czy są jakieś niepożądane efekty uboczne zapomnienia, aby niszczyć utworzone zdarzenia i strumienie (np. Jak wyciek pamięci, gdy zapomnisz zwolnić przydzieloną pamięć)?

Odpowiedz

4

Wszelkie zasoby, które aplikacja nadal trzyma w momencie jej opuszczenia, będą automatycznie zwolnione przez system operacyjny/sterowniki. Tak więc, jeśli aplikacja tworzy tylko ograniczoną liczbę zdarzeń, nie jest absolutnie konieczne, aby uwolnić je ręcznie. Mimo to, zezwolenie aplikacji na wyjście bez całkowitego uwolnienia wszystkich zasobów jest złym działaniem, ponieważ trudno odróżnić rzeczywiste przecieki od wycieków "celowych".

0

Zidentyfikowano błędy w kodzie przykładowym książki.

Wydarzenia CUDA są lekkie, ale wyciek zasobów jest wyciekiem zasobów. Z biegiem czasu, jeśli wyciekniesz ich wystarczająco dużo, nie będziesz już w stanie ich tworzyć.