2012-06-06 11 views
5

Estoy leyendo CUDA por ejemplo y encontré que cuando introdujeron eventos, llamaron al cudaEventDestroy por cada evento que crearon.¿Deben siempre destruirse los eventos y flujos de CUDA?

Sin embargo, noté que algunos ejemplos posteriores descuidaron esta función de limpieza. ¿Hay algún efecto secundario indeseable de olvidar destruir los eventos y flujos creados (es decir, como una pérdida de memoria cuando se olvida de liberar la memoria asignada)?

Respuesta

4

Todos los recursos que la aplicación todavía tenga en el momento de su salida serán automáticamente liberados por el sistema operativo/controladores. Por lo tanto, si la aplicación crea solo un número limitado de eventos, no es estrictamente necesario liberarlos manualmente. Aún así, dejar que la aplicación salga sin liberar todos los recursos a propósito es una mala práctica porque se hace difícil distinguir entre fugas genuinas y fugas "a propósito".

0

Ha identificado errores en el código de muestra del libro.

Los eventos CUDA son livianos, pero una fuga de recursos es una pérdida de recursos. Con el tiempo, si pierde suficiente de ellos, ya no podrá crearlos.

Cuestiones relacionadas