gpt4 book ai didi

c - OpenMP time 和 clock() 给出了两个不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:58 28 4
gpt4 key购买 nike

我有顺序代码可以通过 OpenMP 并行化。我已经放入了相应的编译指示并进行了测试。我通过检查主函数花费的时间来衡量性能增益。

奇怪的是通过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.

最佳答案

clock 函数测量 cpu 时间,即您主动花在 CPU 上的时间,OMP 函数测量执行过程中耗时,两个完全不同的东西。

您的进程似乎在某处等待而被阻塞。

关于c - OpenMP time 和 clock() 给出了两个不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44509637/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com