【发布时间】:2017-01-25 03:19:49
【问题描述】:
我正在编写一个代码,其中我必须对一块数据执行向量矩阵乘法,将结果复制回 CPU,然后开始乘以另一个块。我使用 cublas 库(以下代码)执行向量到矩阵的乘法。
clock_t a,b;
a = clock();
for(int i=0;i<n;i++)
{
cublasSgemv(handle,CUBLAS_OP_T,m,k,&alpha, dev_b1+((i+1)*m), m, dev_b1+(i*m),1, &beta,out,1);
out+=(n-(i+1));
cudaMemcpy(b3,dev_b3, sizeof(float)*(cor_size), cudaMemcpyDeviceToHost);
}
b = clock();
cout<<"Running time is: "<<(double)(b-a)/clocks_per_sec;
我必须测量这个 for 循环的运行时间。我读了一些关于 CudaEvent 的东西,但就我而言,我想测量总循环的时间而不是内核,所以我使用了时钟函数。我想知道这是测量这段代码时间的正确方法还是有更准确的方法来做到这一点? 我知道,为了测量运行时间,我们必须多次重复运行代码并取所有运行的平均运行时间,所以另一个问题是,对于运行代码应该重复的次数是否有任何权衡?
谢谢
【问题讨论】:
标签: time parallel-processing cuda gpu gpgpu