2012-09-22 26 views

Respuesta

7

cudaFree() no es asincrónico. Una llamada de sincronización se llama internamente cuando se llama a un cudaFree() desde el Host.

No entendí cuál es realmente su necesidad de liberar memoria de forma asíncrona.

+4

Imagine una canalización de lanzamientos de kernel dependientes, algunos requieren asignaciones temporales. Sería bueno si el hilo de host pudiera insertar asincrónicamente 'cudaMalloc's y' cudaFree's en tal canalización. –

+1

En el caso de un gran problema, puede usar la memoria de liberación asincrónica para dejar espacio para otras transmisiones. En otras palabras, podrá manejar grandes problemas con muchas transmisiones dentro de una sola GPU. –

5

cudaFree() es sincrónico. Si realmente desea que sea asíncrono, puede crear su propio subproceso de CPU, otorgarle una cola de trabajo y registrar las solicitudes cudaFree desde su subproceso principal.

Dicho esto, las liberaciones asincrónicas parecen una solicitud extraña. Quizás puedas explicar por qué te gustaría que sea asincrónico. ¿Desea que la libertad ocurra inmediatamente después de que se desencadena un evento CUDA?

+0

Las liberaciones de transmisiones CUDA y eventos CUDA se han realizado de forma asíncrona desde su introducción, exactamente porque algunas aplicaciones tienen subrutinas que las utilizan, y existe el deseo de que esas subrutinas no provoquen que las rutas de código de sus interlocutores se vuelvan síncronas. Asincrónico libre es una solicitud totalmente razonable, por la misma razón. CUDA puede marcar asincrónicamente la memoria como libre, y si debe sincronizarse con la GPU para editar las tablas de página, realice esas operaciones perezosamente (espere hasta el próximo procesador de núcleo). – ArchaeaSoftware

+0

@Archaea: eso es interesante. Creo que el póster también está interesado en liberar memoria, no solo los objetos cudaEvent_t. ¿Cómo se asocia un cudaFree con un evento o secuencia? –

+1

Sr. Fooz, su respuesta es correcta (es decir, AFAIK cudaFree() es sincrónico), simplemente estoy señalando que es razonable querer que sea asincrónica. – ArchaeaSoftware