OpenMP time和clock()计算两个不同的结果我有通过OpenMP并行化的顺序代码。我已经放了相应的pragma并测试它。在测试时,我通过检查主要功能所花费的时间来解释性能提升。奇怪的是通过计算的经过时间cpu_time()并omp_get_wtime()返回两个不同的结果。您认为原因是什么?通过cpu_time()函数计算的经过时间与顺序时间类似。在计算开始之前ctime1_ = cpu_time();#ifdef _OPENMP
ctime1 = omp_get_wtime();#endif计算结束后ctime2_ = cpu_time();#ifdef _OPENMP
ctime2 = omp_get_wtime();#endifcpu_time()函数定义double cpu_time(void){
double value;
value = (double) clock () / (double) CLOCKS_PER_SEC;
return value;}打印结果printf("%f - %f seconds.\n", ctime2 - ctime1, ctime2_ - ctime1_);样本结果7.009537 - 11.575277 seconds.
3 回答
慕森王
TA贡献1777条经验 获得超3个赞
您观察到的是任何并行应用程序的完全有效结果 - 返回的所有线程的组合CPU时间clock()
通常大于测量的挂钟时间,omp_get_wtime()
除非您的应用程序主要是休眠或等待。
- 3 回答
- 0 关注
- 2232 浏览
添加回答
举报
0/150
提交
取消