Если у вас есть несколько последовательных событий CUDA (в одном потоке), которые вы хотите синхронизировать (например, cudaMemcpy, за которым следует запуск ядра, за которым следует еще один cudaMemcpy), безопасно / правильно / точно синхронизировать только последниесобытие?Например:
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 нужно только дождаться, когда будет записано последнее событие, прежде чем он запишет время для всех.Это правильно?
Спасибо!