18

ホストはデバイスが完全に実行を終了するのを待ちますか? たとえば、プログラムは次のような構造になっています

// 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 
4

1 に答える 1

26

CUDA ランタイムの同期機能を使用すると、目的を達成できます。

cudaDeviceSynchronize():

この関数を呼び出すと、メモリ コピーまたはカーネル実行のいずれであっても、デバイスがすべての作業を完了するまで、CPU は待機します。

cudaStreamSynchronize(cudaStream):

この関数は、指定された CUDA ストリームの実行が完了するまで CPU をブロックします。他の CUDA ストリームは、非同期で実行を継続します。

于 2012-09-28T12:15:05.513 に答える