连续执行OpenMP脚本的时间问题

时间:2014-11-05 18:03:43

标签: c terminal openmp linuxmint xfce

我遇到了C OpenMP脚本执行时间的问题。

脚本中的时间是使用gettimeofday()函数在代码块上完成的:

gettimeofday(&tim, NULL);
double t1=tim.tv_sec+(tim.tv_usec/1000000.0);

.. Timed Code Here

gettimeofday(&tim, NULL);
double t2=tim.tv_sec+(tim.tv_usec/1000000.0);
printf("%.6lf seconds elapsed\n", t2-t1);

然而,当我连续运行脚本时,每次执行的时间都会增加:

terminal screenshot

自昨天以来我没有编辑过该脚本。另外,我发现当离开一些时间(比如10-20秒)然后重新运行程序时,时间开始减少。

我唯一的猜测是它与流程本身有关。我正在使用GCC版本 4.8.2在Linux Mint上编译17使用XFCE(gcc 4.8.2-19ubuntu1):

gcc bluromp.c -fopenmp -o bluromp.out

有什么想法吗?

编辑: 从time.h添加了clock()进行测试:

start_t = clock();

.. Timed Code Here

total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
printf("Time.h clock result: %ld\n", total_t);

结果:

terminal screenshot 2

时钟也在增加虽然工作量在程序中是相同的(如前所述,如果我等待~20秒执行时间较短

编辑2:

在另一台机器上运行时,程序连续运行的结果是正确的,所以问题在于我的系统。

编辑3:

使用Sync没有帮助,今天早上我的时间似乎是跳跃而不是简单地增加,我认为它必须是某处的缓存或内存问题:

enter image description here

编辑4:

使用vmstat获取内存/ cpu信息:

enter image description here

0 个答案:

没有答案