我正在尝试使用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)。感谢。
答案 0 :(得分:1)
我发现测量单位存在问题。我不是很多cuda程序员,但我可以告诉gettimeofday函数。 gettimeofday以秒和微秒表示时间,因此正确的伪代码行将是:
// time = (stop.tv_usec-start.tv_usec)*1.0e-6 + (stop.tv_sec - start.tv_sec);
这里给出了cuda特定的解决方案:Timing CUDA operations。 我希望这会有所帮助。