Hello在我的内核函数中我使用了3个设备函数,我想计算每个设备函数所花费的时间。有没有办法让设备在内核中运行时间?请让我知道谢谢
答案 0 :(得分:3)
引用CUDA C编程指南:
clock_t clock();
long long int clock64();
在设备代码中执行时,返回每个多处理器计数器的值 每个时钟周期递增一次。在开始和结束时对此计数器进行采样 一个内核,取两个样本的差异,并记录每个线程的结果 为每个线程提供设备所采用的时钟周期数的度量 完全执行线程,但不是设备实际的时钟周期数 花在执行线程指令上。以前的数字大于后者 线程是时间切片。
此时间适用于Matlab的tic
和toc
。 CUDA SDK中有一个 clock 示例。基本上,它就像这样
__global__ void max(..., int* time)
{
int i = threadIdx.x + blockIdx.x * blockDim.x;
clock_t start = clock();
//device function call
clock_t stop = clock();
...
time[i] = (int)(stop - start);
}