cudaEvent_t start, stop;
float gpuTime = 0.0f;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start,0);
addVector<<<1, SIZE>>>(devVec1, devVec2, devVec3);
cudaEventRecord(stop,0);
cudaEventSynchronize(stop);
cudaEventElapsedTime(&gpuTime, start, stop);
//Результаты расчета
for (int i = 0; i < SIZE; i++)
{
printf("Element #%i: %i\n", i , vec3[i]);
}
printf("Executing time by the GPU: %2.f millseconds\n", gpuTime);
.....
Не до конца разобрался в этой теме, вычисления проводит нормально, а вот времени постоянно 0 миллисекунд, хотя иногда бывает 1. Подскажите пожалуйста что не так, что исправить что бы получить точное время? Как обработать этот cudaEvent?
Скорее всего: 1) происходит
Скорее всего:
1) происходит переполнение float'a в переменной gpuTime, уменьшите размер массива или воспользуйтесь средствами OpenMP для проверки.
2) Вход в ядро вообще не осуществляется. Проверьте реализацию, особенно кол-во тредов\блоков.
3) Возможно, наоборот, размер массива небольшой, поэтому время выполнения ничтожно.