OpenMP - 嵌套循环"collapse"
collapse
子句用于将多个嵌套的循环折叠成一个单独的循环。这个特性通常用于在嵌套循环上并行化以提高性能。参数n
指定了折叠的层数。
#include <iostream>
#include <omp.h>
using namespace std;
int main(int argc, char* argv[]){
int a[6][6];
#pragma omp parallel for collapse(2)
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
a[i][j] = omp_get_thread_num();
}
}
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
0 0 0 0 0 1
1 1 1 1 2 2
2 2 2 3 3 3
3 3 4 4 4 4
5 5 5 5 6 6
6 6 7 7 7 7
。。。