2012-09-28 7 views
10

L'host attende che il dispositivo termini l'esecuzione in modo semplice? ad es. il programma ha la struttura come segueLa CPU attende che DEVICE faccia terminare l'esecuzione del kernel ....?

// cpu code segment 

// data transfer from host to device 

QUESTION - WILL CPU WAIT FOR DEVICE TO FINISH TRANSFER? IF NO, IS IT POSSIBLE? IF YES, HOW? 

// kernel launch 

QUESTION - WILL CPU WAIT FOR DEVICE TO LET IT FINISH KERNEL EXECUTION (CONSIDERING KERNEL EXECUTION WILL TAKE NOTABLE TIME say-5 sec)? IF NO, IS IT POSSIBLE? IF YES, HOW? 

// data transfer from device to host 

// program terminates after printing some information 
+0

@Spontifixus, non è chiaro? Mi chiedo lo stesso di OP. –

+1

@ Primož'c0dehunter'Kralj Hai ragione. La domanda è appena formattata male. – Spontifixus

risposta

14

Le funzioni di sincronizzazione del runtime CUDA consentono di ottenere ciò che si desidera.

cudaDeviceSynchronize():

Quando si chiama questa funzione, la CPU attenderà fino a quando il dispositivo ha completato tutto il suo lavoro, se si tratta di copia della memoria del kernel o di esecuzione.

cudaStreamSynchronize(cudaStream):

Questa funzione bloccherà la CPU finché il flusso CUDA specificato ha terminato la sua esecuzione. Altri flussi CUDA continueranno la loro esecuzione in modo asincrono.

+6

Per espanderti, ci sono due domande: 1) per il trasferimento dei dati la CPU bloccherà e attenderà il completamento del trasferimento se usi 'cudaMemcpy()' - se usi le versioni asincrone ('cudaMemcpyAsync()') quindi è asincrono e la CPU non bloccherà (ovviamente); 2) i lanci del kernel sono sempre asincroni come descritto nella guida alla programmazione - la sincronizzazione dopo la chiamata del kernel (usando 'cudaDeviceSynchronize()' (o equivalente del flusso) o chiamando una memcpia sincrona causerà il blocco della CPU. – Tom

+1

Ricorda anche che se sei usare la GPU quindi idealmente copi dati ed esegui i kernel in modo asincrono - potrebbe anche fare buon uso di tutti i motori a tua disposizione! – Tom

Problemi correlati