omp与gcc和intel编译器

时间:2015-06-05 09:50:45

标签: c++ gcc g++ openmp intel

根据this问题,使用openmp的threadprivate是 有问题的。以下是问题的最小(非)工作示例:

#include"omp.h"
#include<iostream>

extern const int a;
#pragma omp threadprivate(a)

const int a=2;

void my_call(){
    std::cout<<a<<std::endl;
};

int main(){
#pragma omp parallel for
    for(unsigned int i=0;i<8;i++){
        my_call();
    }
}

此代码使用intel 15.0.2.164编译,但不符合gcc 4.9.2-10。 gcc说:

g++ -std=c++11  -O3 -fopenmp    -O3 -fopenmp  test.cpp   -o test
test.cpp:5:29: error: ‘a’ declared ‘threadprivate’ after first use
#pragma omp threadprivate(a)

我很乐意找到一种用gcc编译它的方法。

注意:我知道全局变量是一场噩梦,但这个例子就是 来自我没有写过的代码,我需要使用...它是&gt; 11000 我不想重写所有内容。

0 个答案:

没有答案