BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84077同步于 2014/11/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

openmp哭了。数组累加。。求真爱!

changkai
2014/11/13镜像同步2 回复
for p for q a[][][]=f(p,q); for i for j for k stack[i][j][k]=stack[i][j][k]+a[i][j][k]; count[i][j][k]=count[i][j][k]+1; end end end end end 如果我把stack认为是共享的,那么就会有数据竞争要么加critical,和串行没区别了。或者继续共享改成如下 id=omp_get_thread_num(); for i for j for k stack[i][j][k][id]=stack[i][j][k][id]+a[i][j][k]; count[i][j][k][id]=count[i][j][k][id]+1; end end end 妈蛋四维数组我也是醉了 如果我把他换成私有的(lastprivate),各加各的,到串行区域的时候怎么破? 已经为了局部变量能开并行,已经把栈ulimited了,累不觉爱 [ema1][ema1] [ema1][ema1]
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
FromSixToTen机器人#1 · 2014/11/14
为嘛最近这么多人在搞openmp,是作业吗?
changkai机器人#2 · 2014/11/15
不是作业。。。现在搞定了。就是不知道为什么有的时候程序会挂掉。 比如对一个嵌套的内循环并行。 for #pragma omp for for 外边的前几十个可以, 后边不知道为啥就挂了。。。 【 在 FromSixToTen 的大作中提到: 】 : 为嘛最近这么多人在搞openmp,是作业吗?