、私はint *x
OpenMPでクラスメンバー変数xを共有(x)できないのはなぜですか?メンバ関数で
#pragma omp parallel for default(shared)
for(int i=0;i<size;i++) {
x[i]=i;
}
共有メンバ変数を使用して並列化することができます。しかし、私は
#pragma omp parallel for default(none) shared(x,size)
for(int i=0;i<size;i++) {
x[i]=i;
}
をしようとすると、私はエラーを取得:'obj::x' is not a variable in clause 'shared'
を。 2番目のバージョンは、競合状態やそれに類する問題がないことを確認してくれている共有変数を通知するので、2番目のバージョンが好きです。
OpenMPは、obj::x
は変数ではないと主張していますか?
これを試してみましたか?x?どのコンパイラを使用していますか? – Beanz
コンパイラはg ++ 4.4です。 '#pragma omp parallel for default(none)shared(this-> x、size)'を実行しようとすると、エラーが発生します: 'this'の前にunqualified-idが必要です。 –