我有一个3D数组z
,其中每个元素的值都为1
。
现在我做了:
#pragma omp parallel for collapse(3) shared(z)
for (int i=0; i < SIZE; ++i) {
for (int j=0; j < SIZE; ++j) {
for (int k=0; k < SIZE; ++k) {
for (int n=0; n < ITERATIONS-1; ++n) {
z[i][j][k] += 1;
}
}
}
}
这应该为每个元素添加ITERATIONS
,它确实如此。如果我然后将collapse(3)
更改为collapse(4)
(因为有4个for循环),我就无法获得正确的结果。
我不能折叠所有四个循环吗?