1

次のようなシナリオがあります。

//class somemethod contains the member variables(declaration) val1 and val2, 
//and is defined in somemethod.h.

#include <somemethod.h>

void abovefunction(x)
{
//code that could be made parallel if val1 and val2 is declared private()
}
//abovefunction() is in somemethod.cpp, where the methods of class somemethod
//are described

この関数は、後で obj.abovefunction(x) などのオブジェクトによって呼び出されます。val1 と val2 は somemethod.h で宣言/初期化されているため、private (val1, val2) として使用することはできず、private (this->val1, this->val2) のようなものも使用できません。このような変数がクラスの一部であり、OpenMP プラグマが適用されているコード ブロックの直接のスコープで宣言されていない場合に、OpenMP を使用して並列化する最良の方法を教えてください。

OpenMP フォーラムで同じ質問をしました - http://openmp.org/forum/viewtopic.php?f=3&t=886#p3516

ありがとう、
サヤン

4

1 に答える 1

0

私が間違っていなければ、変数private(var)を宣言すると、その変数用に新しいスペースが作成されるだけで、private(var)ステートメントに入力した値は実際にはコピーされません。

そうは言っても、private(var)ステートメントを使用するだけで十分であれば、somemethod :: abovefunction(x)呼び出しで変数をローカルに初期化できませんか?

于 2010-06-23T12:17:20.800 に答える