其他分享
首页 > 其他分享> > c-openmp g错误:折叠的循环未完全嵌套

c-openmp g错误:折叠的循环未完全嵌套

作者:互联网

我尝试编译

#include <omp.h>

using namespace std;

vector< vector<int> > multiplyMatrixes(const vector< vector<int> > &a, const vector<     vector<int> > &b, int aHeight, int aWidth, int bHeight, int bWidth) {
    vector < vector<int> > c(aHeight, vector<int>(bWidth, 0));
    #pragma omp parallel for collapse(2)
    for(int row = 0; row < aHeight; row++) {
            for(int col = 0; col < bWidth; col++) {
                   int value = 0;
                   for(int i = 0; i < aWidth; i++) {
                          value += a[row][i] * b[i][col];
                   }
                   c[row][col] = value;
                   cout<<"Tread #"<<omp_get_thread_num()<<"\n";
            }
            std::cout<<'\n';
    }
    return c;
}

int main() {}

使用’g -fopenmp hello.cpp -o hello’命令,gcc版本是4.7,但是我得到了关注
 ‘hello.cpp:19:17:错误:折叠的循环未完全嵌套”
这是什么意思?

解决方法:

搜寻错误,发现“循环必须完美嵌套;也就是说,在折叠的循环之间没有中间代码,也没有任何OpenMP编译指示”

我认为这意味着不允许在for(i)循环之前和之后的代码.

标签:c,gcc,openmp
来源: https://codeday.me/bug/20191013/1908735.html