cudaEvent和gettimeofday报告截然不同的时间

时间:2014-07-26 06:48:56

标签: c cuda timing gettimeofday

我正在尝试使用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)。感谢。

1 个答案:

答案 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。  我希望这会有所帮助。