この章で説明される 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 |
|