我试图通过使用gettimeofday或cudaEventRecord来计时循环。然而,他们报告的结果却截然不同。下面是伪代码:
// get time here (start)
while (..)
{
. ..
}
// get time here (stop)
// calculate time
// time = (stop.tv_usec-start.tv_usec)*1.0e-3 + (stop.tv_sec - start.tv_sec); or
// cudaEventElapsedTime(&time,start,stop);
我没有同时使用它们,而是分别使用它们,结果是不一样的。当使用cudaEvent时,我也调用cudaEventSynchrosize(stop)。谢谢。
我发现测量单位有问题。我不是一个很好的cuda程序员,但我可以告诉gettimeofday函数。Gettimeofday以秒和微秒表示时间,因此正确的伪代码行应该是:
// time = (stop.tv_usec-start.tv_usec)*1.0e-6 + (stop.tv_sec - start.tv_sec);
这里给出了cuda特定的解决方案:定时cuda操作。我希望这对你有帮助。