Я пытаюсь рассчитать время сортировки тяги. Представьте, я использую события CUDA. но мне было любопытно, если события Cuda дадут мне неправильное значение. Это связано с тем, что на моем компьютере Thrust сортирует 2 миллиона операций с плавающей запятой в графическом процессоре за 34 мс. Но это кажется слишком быстрым
Я пробовал оба раза процессор и графический процессор и получил следующее:
Процессор (занимает около 36 мс)
__int64 ctr1 = 0 , ctr2 = 0 , freq = 0 ;
QueryPerformanceFrequency((LARGE_INTEGER *) &freq);
QueryPerformanceCounter((LARGE_INTEGER *) &ctr1);
thrust::sort(D.begin(),D.end());
// transfer data back to host
thrust::copy(D.begin(), D.end(), H.begin());
cudaThreadSynchronize(); // block until kernel is finished
QueryPerformanceCounter((LARGE_INTEGER *)&ctr2);
double ans = ((ctr2 - ctr1) * 1.0 / freq);
printf("The time elapsed in milliseconds is %f\n",(ans*1000));
GPU
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start, 0);
thrust::sort(D.begin(),D.end());
thrust::copy(D.begin(), D.end(), H.begin());
cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);
float elapsedTime;
cudaEventElapsedTime(&elapsedTime , start, stop);
printf("time is %f ms", elapsedTime);
Пожалуйста, дайте мне знать, какое время является правильным
Спасибо