Ami*_*min 19 cuda gpu gpgpu nvidia
我想测量GPU的时间内核,如何在NVIDIA CUDA中测量它?例如
__global__ void kernelSample()
{
some code here
get start time
some code here
get stop time
some code here
}
Run Code Online (Sandbox Code Playgroud)
tal*_*ies 36
你可以这样做:
__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);
}
Run Code Online (Sandbox Code Playgroud)
这给出了两次调用之间的时钟周期数.但要小心一点,计时器会在几秒后溢出,所以你应该确保连续调用之间的代码持续时间很短.您还应该知道编译器和汇编器确实执行指令重新排序,因此您可能需要检查时钟调用是否最终在SASS输出中彼此相邻(用于cudaobjdump检查).
试试这个,它测量2个事件之间的时间,以毫秒为单位.
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);
Run Code Online (Sandbox Code Playgroud)