SMP ディレクティブの概要

本節で説明される 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 ディレクティブ

以下の OpenMP ディレクティブは、追加の SMP 機能を提供します。


MASTER END MASTER
SINGLE END SINGLE
THREADPRIVATE

非 OpenMP SMP ディレクティブ

以下のディレクティブは、追加の SMP 機能を提供します。


DO SERIAL
SCHEDULE
THREADLOCAL
IBM Copyright 2003