自動スコープ宣言では、コンパイラは、並列領域内の変数のスコープを決定する際に次の規則を適用します。
これらの規則は、OpenMP 仕様で暗黙にスコープ宣言される、ワークシェアリング DO または FOR ループのループインデックス変数などの変数には適用されません。
S1: 並列領域内で使用される変数が、その領域を実行するチーム内でのスレッドに関する「データ競合」状態になることがない場合、その変数のスコープは SHARED と宣言されます。
S2: 並列領域を実行するすべてのスレッドで、変数が同じスレッドによる読み取りの前につねに書き込まれる場合、その変数のスコープは PRIVATE と宣言されます。変数が PRIVATE とスコープ宣言することが可能で、並列領域のあと、書き込みの前に読み取られ、構文が PARALLEL DO か PARALLEL SECTIONS のいずれかである場合、その変数のスコープは、LASTPRIVATE と宣言されます。
S3: 変数がコンパイラの認識可能な縮約処理で使用されている場合、その変数のスコープは、その特定の型を持つ REDUCTION と宣言されます。
A1: 並列領域内で使用される配列が、その領域を実行するチーム内でのスレッドに関するデータ競合状態から自由の場合、その配列のスコープは SHARED と宣言されます。