OpenMP对CPU的使用率不一样?

aleyuan 2012-03-13 09:37:25
我写了一段代码想试试OpenMP的加速效果,结果发现我的双核CPU使用率一高一低,差别比较明显

代码里有几种方法对长180000的数组赋值500次。
1.单线程不用OpenMP
2.双线程外循环为180000
3.四线程,外循环180000
4.双线程,外循环300
5.双线程,外循环600
6.双线程,外循环100
而且测试结果基本上都是1.4.<6.<2.5.<3.(快<慢)
问题1就是CPU使用率一高一低
问题2是为什么OpenMP不会比单线程快?
int _tmain(int argc, _TCHAR* argv[])
{
int a[180000];
int begin,end;
int loop=15;
while(loop)
{
begin = clock();
for(int i=0;i<180000;i++)
for(int j=0;j<500;j++)
a[i]=j;
end = clock();
cout<<end-begin<<" ";

begin = clock();
#pragma omp parallel for num_threads(2)
for(int i=0;i<180000;i++)
for(int j=0;j<500;j++)
a[i]=j;
end = clock();
cout<<end-begin<<" ";

begin = clock();
#pragma omp parallel for num_threads(4)
for(int i=0;i<180000;i++)
for(int j=0;j<500;j++)
a[i]=j;
end = clock();
cout<<end-begin<<" ";

begin=clock();
#pragma omp parallel for num_threads(2)
for(int i=0;i<300;i++)
{
for(int k=0;k<600;k++)
{
int index = i*600+k;
for(int j=0;j<500;j++)
a[index]=j;
}
}
end = clock();
cout<<end-begin<<" ";

begin=clock();
#pragma omp parallel for num_threads(2)
for(int i=0;i<600;i++)
{
for(int k=0;k<300;k++)
{
int index = i*300+k;
for(int j=0;j<500;j++)
a[index]=j;
}
}
end = clock();
cout<<end-begin<<" ";

begin=clock();
#pragma omp parallel for num_threads(2)
for(int i=0;i<100;i++)
{
for(int k=0;k<1800;k++)
{
int index = i*1800+k;
for(int j=0;j<500;j++)
a[index]=j;
}
}
end = clock();
cout<<end-begin<<" ";

cout<<endl;
loop--;
}


getchar();
//#pragma
return 0;
}
...全文
862 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihandsome 2012-11-27
  • 打赏
  • 举报
回复
对于那个很慢的那个,你的电脑是双核的,当多于2个线程的时候CPU就会在调度上面浪费更多的时间了,而两个CPU的分工是不一样的~
modyaj 2012-10-30
  • 打赏
  • 举报
回复
OpenMP没有开的话 那就是串行的,和平时的程序运行起来没半点区别
tssand 2012-10-15
  • 打赏
  • 举报
回复
最近我也在研究OpenMP。。。结贴吧楼主。
aleyuan 2012-09-30
  • 打赏
  • 举报
回复
谁回答我一下,好让我结贴~
aleyuan 2012-03-13
  • 打赏
  • 举报
回复
啊~~~~~~~~~我知道了,原来工程没有属性里没有开支持OpenMP。。。居然还能运行。。。

566

社区成员

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

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