2.7.2.5 default
default 句を使用して、変数のデータ共有属性に影響を与えることができます。default 句の構文は次のとおりです。
default(shared | none)
default(shared) を指定することは、その変数が threadprivate でない、または const 修飾されていない限り、現在可視の各変数を shared 句で明示的に指定するのと同じです。明示的な default 句がない場合、既定の動作は、default(shared) が指定されている場合と同じになります。
default(none) を指定した場合、parallel コンストラクトの構文範囲内での変数に対するすべての参照が、以下の条件の少なくとも 1 つについて真である必要があります。
その参照を含むコンストラクトのデータ共有属性句内で、その変数が明示的に指定されている。
parallel コンストラクト内で変数が宣言されている。
変数が threadprivate である。
変数が const 修飾型である。
変数が、for ディレクティブまたは parallel for ディレクティブの直後の for ループに対するループ制御変数であり、この変数の参照がそのループ内に現れる。
囲まれているディレクティブの firstprivate 句、lastprivate 句、または reduction 句に変数を指定すると、囲んでいるコンテキストのその変数に対する暗黙の参照が発生します。このような暗黙の参照についても上記の要件が当てはまります。
parallel ディレクティブに指定できる default 句は 1 つだけです。
変数の既定のデータ共有属性は、private、firstprivate、lastprivate、reduction、shared の各句を使用することにより、オーバーライドできます。次に例を示します。
#pragma omp parallel for default(shared) firstprivate(i)\
private(x) private(r) lastprivate(i)