-2

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

4

1 回答 1

1

我发现测量单位有问题。我不是 cuda 程序员,但我可以讲述 gettimeofday 函数。gettimeofday 以秒和微秒为单位表示时间,因此正确的伪代码行将是:

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

这里给出了 cuda 特定的解决方案:Timing CUDA operations。我希望这会有所帮助。

于 2014-07-26T07:12:18.320 回答