2011-06-28 4 views
0

複数の連続するCUDAイベント(1つのストリーム内)がある場合(たとえば、cudaMemcpyに続いてカーネルが起動し、別のcudaMemcpyが続く)、安全/最後のイベントでのみ同期しますか?例:cudaでタイミングをとる

cudaEventRecord(event1_start); 
// do something 
cudaEventRecord(event1_stop); 

cudaEventRecord(event2_start); 
// do something else 
cudaEventRecord(event2_stop); 

cudaEventSynchronize(event2_stop); 
cudaEventElapsedTime(&time1, event1_start, event1_stop); 
cudaEventElapsedTime(&time2, event2_start, event2_stop); 

私の理解では、これらのイベントと実際のcuda呼び出しはFIFOキューに入れられます。 CPUは最後のイベントが記録されるまで待ってからすべてのタイミングを記録する必要があります。これは正しいです?

ありがとうございます!

答えて

1

これらがすべて同じストリームまたはデフォルトストリームで実行されている場合、それらは順次実行されるので、最後のものだけを同期させると「はい」と言います。私は決してそれをテストしなかったので、私はそれを保証しません。私はあなたが両方のイベントを同期させるか、最後のものだけを同期させて時間を比較する単純なケースでテストすることをお勧めします。

関連する問題