Код CUDA на GPU (Titan XP) внезапно замедляется более чем в 1000 раз [dубликат]

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

__global__ void kernelSample()
{
  some code here
  get start time 
  some code here 
  get stop time 
  some code here
}
16
задан 15 January 2016 в 14:15

1 ответ

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

__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);
}

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

33
ответ дан 15 August 2018 в 16:52
  • 1
    Я тестирую и не работаю должным образом. clock () - это функция хоста, а не функция устройства. – Amin 15 May 2012 в 19:38
  • 2
    clock() - функция устройства, и она действительно работает. См. Раздел B10 руководства по программированию CUDA для описания функций clock() и clock64(). Если он «не работает должным образом», вы делаете что-то неправильно или неправильно понимаете, что означает выход. – talonmies 15 May 2012 в 19:41
  • 3
    Выходной сигнал - это тактовый цикл. Как преобразовать в секунды? – Amin 15 May 2012 в 21:03
  • 4
    Я сделал , что в моем ответе это был тактовый цикл. Разделите его по частоте шейдерной тактовой частоты в килогерцах, чтобы получить ответ в миллисекундах (обратите внимание, что если у вас нет нового кеппера GPU, у вашего GPU есть две тактовые частоты, вам понадобятся часы шейдера, а не основная тактовая частота) – talonmies 15 May 2012 в 22:10
  • 5
    @Amin: если бы это решило вашу проблему, возможно, вы были бы любезны принять ее. – talonmies 16 May 2012 в 08:18

Другие вопросы по тегам:

Похожие вопросы: