openmp 负载不均

jiaolongdy 2009-03-26 08:26:21
加精
我用 openMP写了一个C++程序在Linux下运行,我看CPU的利用律总是不均衡。希望大家能给我一些建议。
...全文
582 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbb21 2010-11-10
  • 打赏
  • 举报
回复
schedule dynamic...
liqiang_8612 2009-04-17
  • 打赏
  • 举报
回复
为什么我用thread profiler测的timeline总是一个进程从头到尾都是串行(桔黄色的线),而另一个进程并行开销完了之后就是wait(浅绿色的线)?负载严重不平衡,利用了schedule子句也无济于事,请大虾指教
yngabc 2009-04-02
  • 打赏
  • 举报
回复
推荐个技术网站,有不少资料,做软件的朋友可以去看看,网址是:http://www.ciitc.com
qq234524923 2009-03-31
  • 打赏
  • 举报
回复
学习学习
guangboo 2009-03-31
  • 打赏
  • 举报
回复
倾听
子晞 2009-03-31
  • 打赏
  • 举报
回复
可以看一下openmp的官方文档,有没有使用过cilk++,它的负载方式不像openmp,总有强空cpu,在多线程任务运行时,cpu几乎idle为0.
sjlianan 2009-03-31
  • 打赏
  • 举报
回复
学习中///
ph215405357 2009-03-31
  • 打赏
  • 举报
回复
jf
yeg001 2009-03-31
  • 打赏
  • 举报
回复
也正在学习使用omp
c3125815 2009-03-31
  • 打赏
  • 举报
回复
xx
szy41 2009-03-31
  • 打赏
  • 举报
回复
mark
joknm 2009-03-30
  • 打赏
  • 举报
回复
sddsafs
lovezx1028 2009-03-30
  • 打赏
  • 举报
回复
1111111111
Josh 2009-03-30
  • 打赏
  • 举报
回复
学习中
nettman 2009-03-30
  • 打赏
  • 举报
回复
Mark!
surge0321 2009-03-30
  • 打赏
  • 举报
回复
学习
loulou_ff 2009-03-30
  • 打赏
  • 举报
回复
mark
jiaolongdy 2009-03-28
  • 打赏
  • 举报
回复
谢谢!正在学习中。。。
intel_iclifort 2009-03-27
  • 打赏
  • 举报
回复
简单地说,就是一个线程充当Boss的角色,负责分割原始数据为若干子任务,然后分配给其他的线程(worker)。每个worker独立完成自己分配到的任务后,再通知Boss申请获得新的任务。或者Boss定期去查看worker是否完成,可以接收新任务。

这样虽然每个子任务的工作量可能不一样(即完成的时间不一致),但每个worker最终获得的总工作量大致是相等的,所以解决了负载不均衡的问题

Boss/Worker模式非常适合那些数据相互之间依赖性不高,可以快速分割的并行模式。当然具体的实现也可以是工作队列等等。。。

jiaolongdy 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 intel_iclifort 的回复:]
估计是算法设计的问题,数据的分割不均匀

如果是循环,改用静态分配试试, 比如
#pragma omp parallel for schedule(static, 8)
for( int i = start; i <= end; i ++ )

或者采用生产者-消费者 (Boss-Worker)模式来解决

[/Quote]

用生产者-消费者 (Boss-Worker)模式怎么解决?清说的详细点。谢谢
加载更多回复(1)

566

社区成员

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

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