使用 OpenMP 后耗时增加了好几倍,如何正确使用 OpenMP?

灼眼的超哥 2019-08-09 03:42:20
写了个测试程序试试 OpenMP 的效果,然而并没有提升效率,是代码写得有问题吗?求改进。

代码:


#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <omp.h>

double calc() {
double sum = 0;

for (size_t i = 0; i < 10000000; ++i) {
sum += atan((int)((i * 1.0 + (1.0 + rand() % 100)) * 3.14) % 10);
}
return sum;
}

int main(void)
{
clock_t c;
double sec;
double results[40];
size_t i;

c = clock();
srand(time(NULL));
#pragma omp parallel for
for (i = 0; i < 40; ++i) {
results[i] = calc();
}
sec = (clock() - c) * 1.0 / CLOCKS_PER_SEC;
printf("%gs\n", sec);
return 0;
}


测试结果:



CPU 占用情况:


...全文
1274 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
灼眼的超哥 2019-08-10
  • 打赏
  • 举报
回复
已找到问题原因。 https://segmentfault.com/q/1010000020026020

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧