Openmp问题请教

weichao2010 2011-04-01 11:29:10
一:环境
Ubuntu 10.04(lucid) 内核Linux 2.6.32-30-generic
内存:2G 处理器: Pentium(R) Dual-Core cpu


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

int main()
{
int N =1;
int i;
clock_t t0 =clock();
#pragma omp parallel for num_threads(5)
for(i=1;i<=100000;i++)
{
printf("total thread num is %d\n",omp_get_num_threads());
N *= i;
printf("the thread num is:%d\n",omp_get_thread_num());
}
clock_t t1 = clock();
printf("%d & %d\n",t0,t1);
printf("total time is %d\n",(int)(t1-t0));
printf("最后结果 = %d\n",N);
return 0;
}
很困惑使用OpenMP竟然更慢了,在这段程序中我只用了最基本的"parallel for",并没有很复杂的指令呀, 到底是什么原因变慢了呢,希望某位对OpenMP有研究的高手指点迷津!
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqwang2006 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wei832660 的回复:]
这个N*=i的值不会出错??
[/Quote]
我机器上不用OMP都求不了那么大的数的阶乘,不知道lz怎么想的
yqwang2006 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wei832660 的回复:]
这个N*=i的值不会出错??
[/Quote]
肯定会出错啊,都乱了……他就求一个N!
wei832660 2011-04-17
  • 打赏
  • 举报
回复
这个N*=i的值不会出错??
intel_iclifort 2011-04-02
  • 打赏
  • 举报
回复
双核的机器跑5个线程? overload了吧
weichao2010 2011-04-02
  • 打赏
  • 举报
回复
即使是开启两个线程结果还是一样,使用omp反而变慢了,让我困惑的是我在win7上跑的结果让人满意,难道与系统有关!

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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