返回信息流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]
这是一条镜像帖。来源:北邮人论坛 / cpp / #84077同步于 2014/11/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
openmp哭了。数组累加。。求真爱!
changkai
2014/11/13镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
不是作业。。。现在搞定了。就是不知道为什么有的时候程序会挂掉。
比如对一个嵌套的内循环并行。
for
#pragma omp for
for
外边的前几十个可以,
后边不知道为啥就挂了。。。
【 在 FromSixToTen 的大作中提到: 】
: 为嘛最近这么多人在搞openmp,是作业吗?