C语言 cudaEvent和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)。谢谢。

我发现测量单位有问题。我不是一个很好的cuda程序员,但我可以告诉gettimeofday函数。Gettimeofday以秒和微秒表示时间,因此正确的伪代码行应该是:

// time = (stop.tv_usec-start.tv_usec)*1.0e-6 + (stop.tv_sec - start.tv_sec);

这里给出了cuda特定的解决方案:定时cuda操作。我希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新