我正在尝试使用openmp进行多线程处理。对于看起来如下的代码来说,这很容易实现
#pragma omp parallel for collapse(2)
for (int n = 0; n < 1000; ++n)
for (int m = 0; m < 20; ++n)
具有以下结构的代码如何:
int test, z;
for (int n = 0; n < 1000; ++n) {
test = 3 * n;
for (int m = 0; m < 20; ++n) {
z = test * m;
}
}
由于内循环之前的行#pragma omp parallel for collapse(2)
, test = 3 * n;
无效。
答案 0 :(得分:0)
所以替换
for (int n = 0; n < 1000; ++n) {
test = 3 * n;
for (int m = 0; m < 20; ++n) {
z = test * m;
}
}
带
#pragma omp parallel for collapse(2)
for (int n = 0; n < 1000; ++n) {
for (int m = 0; m < 20; ++n) {
z = 3 * n * m;
}
}
更普遍的一点,可能适用于您的真实代码(我确定您发布的是真实代码的简化版本),是否可以重写该代码以启用&#39;易&#39;并行化。虽然需要一些思考。