openmp菜鸟入门问题

Zhang_1985_2004 2009-03-02 05:38:00
加精
1.运行OpenMP程序时新建OMP_NUM_THREADS系统变量,但不管将其值怎么改变,程序运行出来的结果都是4个线程。(我的是双核电脑),这是为什么啊?
2.两个简单简单的FOR语句输出问题:

代码:(OMP_NUM_THREADS=4)

#include <iostream>
using namespace std;
#include "omp.h"
void main()
{
int i,j;
for(i=1;i<4;i++)
{
#pragma omp parallel for
for(j=1;j<4;j++)
cout<<i<<","<<j<<endl;
}
}

出来的结果是:
111,,,231


222,,,213


333,,,213


问题:为什么出来的不是内层FOR循环的并行,而是这样的的结果啊?


...全文
576 49 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
yltao83 2009-03-07
  • 打赏
  • 举报
回复
用 omp_set_num_threads(int) 可以设置所需要的进程数。
hawell2009 2009-03-06
  • 打赏
  • 举报
回复
学习中……
anny92 2009-03-06
  • 打赏
  • 举报
回复
OMP_NUM_THREADS 是用来设置openmp环境中线程的数量,就算你是双核的也可以有超过2条的线程

ranran0812 2009-03-05
  • 打赏
  • 举报
回复
学习~bai
dianzizhizhuo 2009-03-05
  • 打赏
  • 举报
回复
很好很好~!
HelltoHell 2009-03-05
  • 打赏
  • 举报
回复
int _tmain(int argc, _TCHAR* argv[])
{
int i,j;
for(i=1;i <4;i++)
{
cout << "i = " << i << endl;
#pragma omp parallel for num_threads(4)
for(j=1;j <4;j++)
{
cout << "running in thread " << omp_get_thread_num() << ":" << endl;
cout << i << "," << j << endl;
}
}
getchar();
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
int i,j;
#pragma omp parallel for num_threads(4)
for(i=1;i <4;i++)
{
cout << "running in thread " << omp_get_thread_num() << ":" << endl;
for(j=1;j <4;j++)
cout << i << "," << j << endl;
}
getchar();
return 0;
}

LZ运行下这两个可能会比较容易理解
szy41 2009-03-04
  • 打赏
  • 举报
回复
mark
nimamawobaba 2009-03-04
  • 打赏
  • 举报
回复
学习学习
ecoswaybin 2009-03-04
  • 打赏
  • 举报
回复
喜欢自由自在的,不受约束的生活,我的生活我主宰的自主派。18年寒窗苦读,毕业,找工作,工作,换工作……一晃五年已过,毕业时心中的那个目标,已被现实给揉碎!是为了生存而工作,还是为了更好的生活,而做出抉择?选择,需要勇气与智慧。遇到科士威是机缘巧遇,是一种灵魂深处的碰撞,由此结缘,并深深的爱上她!交流QQ:291163800
ph215405357 2009-03-04
  • 打赏
  • 举报
回复
jf
lexuce 2009-03-04
  • 打赏
  • 举报
回复
zhang88188 2009-03-04
  • 打赏
  • 举报
回复
学习
heiheidz 2009-03-04
  • 打赏
  • 举报
回复
来的不是内层FOR循环的并行,而是这样的的结果啊
heiheidz 2009-03-04
  • 打赏
  • 举报
回复
为什么出来的不是内层FOR循环的并行,而是这样的的结果啊
xiazhongliang 2009-03-04
  • 打赏
  • 举报
回复
在浏览网页的时候总是觉得,广告很扰乱我的视线,很烦人!希望网站建设的要好些
aimeast 2009-03-03
  • 打赏
  • 举报
回复
学习
houkai1986 2009-03-03
  • 打赏
  • 举报
回复
学习
NANCYBOY 2009-03-03
  • 打赏
  • 举报
回复
SOFA
bbsoc 2009-03-03
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
#include "omp.h"
void main()
{
int i,j;
for(i=1;i <4;i++)
{
#pragma omp parallel for
for(j=1;j <4;j++)
cout < <i < <"," < <j < <endl;
}
}
cubeboy 2009-03-03
  • 打赏
  • 举报
回复
谢谢分享谢谢分享谢谢分享谢谢分享谢谢分享谢谢分享谢谢分享谢谢分享
加载更多回复(25)

567

社区成员

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

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