本節で説明される SMP ディレクティブを使用して、並列化を制御できます。 たとえば、PARALLEL DO ディレクティブは、 ディレクティブの直後に続くループが並列で実行されることを指定します。 すべての SMP ディレクティブは、コメント形式ディレクティブです。 コメント形式ディレクティブの規則および構文について詳しくは、コメント形式ディレクティブを参照してください。
XL Fortran は、次のように分類される以下の SMP ディレクティブをサポートします。
並列構文は、XL Fortran で OpenMP ベースの並列実行のファウンデーションを形成します。 PARALLEL/END PARALLEL ディレクティブの対は、 基本並列構文を形成します。 実行中のスレッドが並列領域に入るたびに、そのスレッドはスレッドのチームを作成し、 そのチームのマスターになります。 これで、そのチームのスレッドによって、その構文内で並列実行が行われます。 並列領域には、以下のディレクティブが必要です。
PARALLEL | END PARALLEL |
作業共用構文は、チーム内のスレッド間の構文によって囲まれたコードの実行を分割します。 作業共用が行われるようにするには、構文が、並列領域の動的エクステント内で囲まれていなければなりません。 作業共用構造体について詳しくは、以下のディレクティブを参照してください。
DO | END DO |
SECTIONS | END SECTIONS |
WORKSHARE | END WORKSHARE |
結合された並列作業共用構文を使用すると、 単一作業共用構文がすでに含まれている並列領域を指定できます。 これらの結合構文は、意味的に、単一作業共用構文を 囲む並列構文を指定することと同じです。 結合構造体のインプリメントについて詳しくは、以下のディレクティブを参照してください。
PARALLEL DO | END PARALLEL DO |
PARALLEL SECTIONS | END PARALLEL SECTIONS |
PARALLEL WORKSHARE | END PARALLEL WORKSHARE |
以下のディレクティブを使用して、 チーム内の複数のスレッドによる並列領域の実行を同期化することができます。
ATOMIC |
|
BARRIER |
|
CRITICAL | END CRITICAL |
FLUSH |
|
ORDERED | END ORDERED |
以下の OpenMP ディレクティブは、追加の SMP 機能を提供します。
MASTER | END MASTER |
SINGLE | END SINGLE |
THREADPRIVATE |
|
以下のディレクティブは、追加の SMP 機能を提供します。
DO SERIAL |
|
SCHEDULE |
|
THREADLOCAL |
|