Как измерить внутреннее время ядра в NVIDIA CUDA?

Я хочу измерить время внутреннего ядра графического процессора, как его измерить в NVIDIA CUDA? например

__global__ void kernelSample() { some code here get start time some code here get stop time some code here } 

Попробуйте это, он измеряет время между двумя событиями в миллисекундах.

  cudaEvent_t start, stop; float elapsedTime; cudaEventCreate(&start); cudaEventRecord(start,0); //Do kernel activity here cudaEventCreate(&stop); cudaEventRecord(stop,0); cudaEventSynchronize(stop); cudaEventElapsedTime(&elapsedTime, start,stop); printf("Elapsed time : %f ms\n" ,elapsedTime); 

Вы можете сделать что-то вроде этого:

 __global__ void kernelSample(int *runtime) { // .... clock_t start_time = clock(); //some code here clock_t stop_time = clock(); // .... runtime[tidx] = (int)(stop_time - start_time); } 

Который дает количество тактовых циклов между двумя вызовами. Будьте осторожны, таймер будет переполняться через пару секунд, поэтому вы должны быть уверены, что продолжительность кода между последовательными вызовами довольно короткая. Вы также должны знать, что компилятор и ассемблер выполняют переупорядочение команд, поэтому вы можете проверить, что вызовы часов не cudaobjdump друг на друга на выходе SASS (используйте cudaobjdump для проверки).

  • Ужасная производительность перерисовки DataGridView на одном из моих двух экранов
  • nvidia-smi Неустойчивое использование GPU-использования?
  • CUDA определяет streamи на блок, блоки на каждую сетку
  • В JDK 1.8 отображается искажение качания, исправлено в JDK 1.7
  • Как выбрать размер сетки и блока для ядер CUDA?
  • Проблема с ноутбуком + 2
  • Принудительное использование графического процессора NVIDIA в ноутбуках Optimus
  • Могу ли я заставить свой ноутбук использовать NVIDIA вместо Intel?
  • Размытое / нечеткое / удвоенное изображение
  • Как я могу заставить свой ноутбук использовать NVIDIA вместо Intel?
  • Программа CUDA приводит к сбою драйвера nvidia
  • Давайте будем гением компьютера.