请教一个openmp程序的问题,谢谢

Greenland03 2007-11-14 09:23:51
如下的一个程序,没有并行性,如果这样编程
#include <omp.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int i=0;
#pragma omp parallel
{
printf("i = %d %d\n", i,omp_get_num_threads());
}
return 0;
}
为什么输出结果有时是
i = 0 2
i = 0 2
Press any key to continue
有时又是
i = 0 2
i = 0 2
i = 0 2
Press any key to continue
是说默认的线程数是2 吗?那为什么有时候运行会不同呢?
刚开始学习openmp,大家多多指教!另外怎样入手比较容易?有什么比较好的程序可
用openmp编写来体会它的优越性?谢谢!
...全文
140 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingdog 2007-11-18
  • 打赏
  • 举报
回复
设置openmp的线程数,可以在程序中使用函数设置。也可以通过设置系统环境变量,让该计算机上的程序使用默认设置的线程数。
appletreejiangxu 2007-11-18
  • 打赏
  • 举报
回复
默认应该不是2,我一般是自己设定线程数,几个核就设几,不设定应该是自动并行吧(不确定)
可以写一些纯计算的程序,比如重复运算加法,可以看出运算同样的计算量,多核明显快一些,如果你的cpu是单核的话,使用openmp不会使程序变。
我也是初学者,希望对你有所帮助

567

社区成员

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

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