DEFAULT
目的
DEFAULT 節を指定すると、並列構文の字句エクステントにあるすべての変数は default_scope_attr のスコープ属性を持ちます。
- THREADPRIVATE
- THREADPRIVATE 共通ブロックのメンバー
- ポインティング先
- 以下のループに対するループ繰り返し変数だけに使用されるループ繰り返し変数:
- 並列領域の字句エクステント内の順次ループ、または
- 並列領域にバインドする DO ループ
- 並列領域にバインドするワーク・シェアリング構文内だけで使用され、 それぞれのワーク・シェアリング構文用のデータ・スコープ属性文節に指定される変数
DEFAULT 節は、 並列構文のすべての変数が FIRSTPRIVATE、PRIVATE、SHARED、 またはデフォルトのないスコープ属性のいずれかと同じデフォルト・スコープ属性を共有することを指定します。
構文
- default_scope_attr
- FIRSTPRIVATE、PRIVATE、SHARED、または NONE のいずれか 1 つです。
規則
ディレクティブに DEFAULT(NONE) を指定する場合は、 すべての名前付き変数および参照される配列セクションのすべての左端名、配列エレメント、構造体構成要素、または このディレクティブの字句エクステント内のサブストリングを FIRSTPRIVATE、LASTPRIVATE、 PRIVATE、REDUCTION、または SHARED 文節に指定する必要があります。
ディレクティブに DEFAULT(FIRSTPRIVATE) を指定する場合、 すべての名前付き変数および参照される配列セクションのすべての左端名、配列エレメント、構造体構成要素、 またはこのディレクティブ構文の字句エクステント内のサブストリングは (ポインティング先 および THREADLOCAL 共通ブロックを除いた共通ブロックおよび参照結合された変数を含む)、FIRSTPRIVATE 節で明示的にリストされたかのように、スレッドに FIRSTPRIVATE 属性を持たせます。
ディレクティブに DEFAULT(PRIVATE) を指定する場合、 すべての名前付き変数および参照される配列セクションのすべての左端名、配列エレメント、構造体構成要素、 またはこのディレクティブ構文の字句エクステント内のサブストリングは (ポインティング先 および THREADLOCAL 共通ブロックを除いた共通ブロックおよび参照結合された変数を含む)、PRIVATE 節で明示的にリストされたかのように、スレッドに PRIVATE 属性を持たせます。
ディレクティブに DEFAULT(SHARED) を指定する場合、 すべての名前付き変数および参照される配列セクションのすべての左端名、配列エレメント、構造体構成要素、 またはこのディレクティブ構文の字句エクステント内のサブストリングは、 POINTEE を除いて、SHARED 文節で明示的にリストされたかのように、 スレッドに SHARED 属性を持たせます。
DEFAULT 文節をディレクティブで明示的に指示しない場合、 デフォルトの動作は DEFAULT(SHARED) です。
OpenMP の例
PROGRAM MAIN
COMMON /COMBLK/ abc(10), def
! The loop iteration variable, i, is not required to be
! in data scope attribute clause.
$OMP PARALLEL DEFAULT(NONE) SHARED(ABC)
! def is specified on the work-sharing DO, and is not required to be
! specified in a data scope attribute clause on the parallel region.
!$OMP DO FIRSTPRIVATE(def)
DO i = 1,10
ABC(i) = def
END DO
!$OMP END PARALLEL
END PROGRAM
