PARALLEL、PARALLEL DO、PARALLEL SECTIONS および TASK 宣言子で DEFAULT 節を使用して、並列領域の記述範囲内の全変数にデフォルトのデータスコープ属性を指定します。THREADPRIVATE 共通ブロックの変数は、この節には影響を受けません。1 つの宣言子では、DEFAULT 節は 1 つのみ指定できます。デフォルトのデータスコープ属性は、次のいずれかです。
属性 |
説明 |
---|---|
PRIVATE |
並列領域またはタスク領域の記述範囲内におけるすべての名前付きオブジェクトを、1 つのスレッドに対してプライベートにします。オブジェクトには、共通ブロック変数が含まれますが、THREADPRIVATE 変数は含まれません。 |
FIRSTPRIVATE |
並列領域またはタスク領域の記述範囲内におけるすべての名前付きオブジェクトを、1 つのスレッドに対してプライベートにし、オリジナルのオブジェクトにより初期化します。オブジェクトには、共通ブロック変数が含まれますが、THREADPRIVATE 変数は含まれません。 |
SHARED |
並列領域またはタスク領域の記述範囲内におけるすべての名前付きオブジェクトを、チームの全スレッド間で共有にします。 |
NONE |
変数が PRIVATE、FIRSTPRIVATE、SHARED であるかに関して、暗黙的なデフォルトがないことを宣言します。並列領域のタスク領域の記述範囲内における各変数に対してスコープ属性を明示的に指定しなければなりません。 |
DEFAULT 節を指定しない場合、デフォルトでは DEFAULT(SHARED) になります。ただし、ループ制御変数は、デフォルトでは常に PRIVATE です。
次の例のように、並列領域上で他のスコープ属性を使用することにより、デフォルトのデータスコープ属性の変数を省略することができます。
例 |
---|
!$OMP PARALLEL DO DEFAULT(PRIVATE), FIRSTPRIVATE(I),SHARED(X), !$OMP& SHARED(R) LASTPRIVATE(I) |