Я хочу измерить время внутреннего ядра графического процессора, как его измерить в NVIDIA CUDA? например,
__global__ void kernelSample()
{
some code here
get start time
some code here
get stop time
some code here
}
Вы можете сделать что-то вроде этого:
__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 для проверки).