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();#endif
cpu_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.
梵蒂冈之花
慕森王
皈依舞
相关分类