Я немного озадачен использованием cudaEvent_t
.В настоящее время я использую вызов clock()
, подобный этому, чтобы определить продолжительность вызова ядра:
cudaThreadSynchronize();
clock_t begin = clock();
fooKernel<<< x, y >>>( z, w );
cudaThreadSynchronize();
clock_t end = clock();
// Print time difference: ( end - begin )
Ищу таймер с более высоким разрешением, который я рассматриваю с помощью cudaEvent_t
.Нужно ли мне звонить cudaThreadSynchronize()
, прежде чем я записываю время, используя cudaEventRecord()
или это избыточно?
Причина, по которой я спрашиваю, заключается в том, что есть другой звонок cudaEventSynchronize()
, который, кажется, ожидаетсобытие записывается.Если запись задерживается, не будет ли вычисленная разница во времени показывать дополнительное время после завершения работы ядра?