并行程序的时间计算

时间:2016-05-07 05:42:29

标签: c performance datetime time openmp

要计算c程序的总时间,我们通常会使用头文件clock()中的time()<time.h>函数。
   clock()测量CPU使用的滴答数(CLOCKS_PER_SEC)之后,我们可以轻松地将我们希望计算的代码片段的起点和终点之间的差异除以{{1} }。这有助于我们获得以秒为单位的时间 此外,CLOCKS_PER_SEC返回自特定时间点以来的整秒数。提到here

现在这是我的问题。要计算正常c程序所花费的总时间(记录加速操作),当使用time(null)运行时,我会使用系统中的所有处理器,计算所用时间的最佳方法是什么。由于OpenMP只会返回在每个处理器上运行程序所需的累计时间,所以基本上是
clock()

和time()是一个非常模糊的计算方法,因为我对以毫秒为单位的时间计算感兴趣。

2 个答案:

答案 0 :(得分:3)

OpenMP提供omp_get_wtime()来做到这一点。有没有理由不在代码中使用此功能?

答案 1 :(得分:-1)

由于您使用C编程,因此应使用函数getrusage()。这将告诉您整个进程及其子进程的系统和用户模式时间,单独的当前进程或所有线程。在开始时调用一次,在结束时调用一次,然后取消差异。