Что-то у меня затык и гугление не помогает.
class Bar
{
public:
int a;
Bar();
void run(void);
};
void Bar::run(void)
{
int i,k;
#pragma omp parallel private(i) firstprivate(k,a)
{
}
}
Ругается вот таким нехорошим словом:
omp-test.cpp: In member function 'void Bar::run()':
omp-test.cpp:22: error: 'Bar::a' is not a variable in clause 'firstprivate'
Ну и что с этим делать?
Update Нашел (тоже не очень легко), что возможен такой синтаксис:
class Bar
{
public:
int a;
#pragma omp firstprivate(a)
}
А что делать, если Bar::a в одном месте должна быть lastprivate, а в другом - reduction? Временные переменные заводить?