このトピックでは、OpenMP* ディレクティブと節の概要を説明します。詳細は、「OpenMP Fortran バージョン 2.0 仕様」を参照してください。
ディレクティブ |
説明 |
PARALLEL |
並列実行領域を定義します。 |
DO |
関連付けられたループの反復が並列実行される領域を指定する、反復的なワークシェアリングの構造を識別します。 |
SECTIONS |
チーム内のスレッド間で分割される一連の構造ブロックを指定する、非反復的なワークシェアリングの構造を識別します。 |
SECTION |
囲まれた SECTION 構造の部分として、関連する構造ブロックを並列実行するように指定します。 |
SINGLE |
対応する構造化ブロックがチーム内の 1 つのスレッドだけで実行されるように指定する構造を識別します。 |
PARALLEL DO |
1 つの DO ディレクティブを含む並列領域のショートカット。
|
PARALLEL SECTIONS |
1 つの SECTIONS 構造を含む並列領域を指定するショートカット形式。 |
MASTER |
チームの MASTER スレッドのみで実行する構造ブロックを指定する構成体を示します。 |
CRITICAL[lock] |
関連する構造ブロックの実行を一度に 1 スレッドだけに制限する構成体を示します。関連する構造ブロックの実行を一度に 1 スレッドだけに制限する構造を示します。各スレッドは、他のスレッドが同じ lock 引数でクリティカル構造を実行しなくなるまで、クリティカル構造の最初で待機します。 |
BARRIER |
チーム内のすべてのスレッドを同期化します。各スレッドは、チーム内の他のすべてのスレッドがこのポイントに到達するまで待機します。 |
ATOMIC |
特定のメモリ・ロケーションをアトミックに更新し、同時に複数のスレッドによる書き込みの危険性を回避するようにします。 |
FLUSH [(list)] |
"クロススレッド" シーケンス・ポイントを指定します。このポイントでは、チーム内のすべてのスレッドから見たメモリ内の特定のオブジェクトの状態の整合性が保たれるように、プログラム上で保証する必要があります。オプションの list 引数は、フラッシュする変数をカンマ区切りでリストします。 |
ORDERED |
ORDERED ディレクティブに続く構造ブロックを、シーケンシャル・ループ内で反復が実行される順序で実行します。 |
THREADPRIVATE (list) |
名前付きの COMMON ブロックまたは変数をスレッドに対してプライベートにします。list 引数は、COMMON ブロックまたは変数をカンマ区切りでリストします。 |
節 |
説明 |
PRIVATE (list) |
list の変数がチーム内の各スレッドに対して PRIVATE になるように宣言します。 |
FIRSTPRIVATE (list) |
PRIVATE と同じですが、list の各変数のコピーは、 並列処理構造の前に存在するオリジナルの変数の値を使用して初期化されます。 |
LASTPRIVATE (list) |
PRIVATE と同じですが、list のオリジナルの変数は、DO 構造ルー プまたは最後の SECTION 構造における最後の繰返しで、対応する PRIVATE 変数に割り当てられた値に更新されます。 |
COPYPRIVATE (list) |
単一構造の最後で、チーム内メンバから他のメンバに値をブロードキャストするために、list の PRIVATE 変数を使用するか、または共有オブジェクト へのポインタを使用します。 |
NOWAIT |
実行終了までワークシェアリング構造の最後でスレッドを待機させる必要がないことを指示します。スレッドは、実行する作業がなくなるとすぐに、 ワークシェアリング構造の最後から先に進むことができます。 |
SHARED (list) |
チーム内のすべてのスレッド間で list 内の変数を共有します。 |
DEFAULT (mode) |
他の節により明示的に指定されていない変数のデフォルト・データスコープ属性を決定します。mode は、PRIVATE、SHARED、または NONE のいずれかです。 |
REDUCTION ({operator|intrinsic}:list) |
演算子 operator または組込み関数プロシージャ名 intrinsic を使用して、 list にある変数のリダクションを実行します。operator は、+、*、.and.、.or.、.eqv.、.neqv. のいずれかです。intrinsic は、MAX、MIN、IAND、IOR または IEOR のいずれかです。 |
ORDERED |
DO または SECTIONS 構造と共に使用され、コード部分を順次実行します。ORDERED 構造が DO 構造の動的範囲に含まれる場合、ORDERED 節は DO ディレクティブになければなりません。 |
IF (scalar_logical_expression) |
囲まれた並列領域は、scalar_logical_expression が .TRUE. と評価された場合にのみ並列で実行されます。そうでない場合、並列領域は順次実行されます。 |
NUM_THREADS (scalar_integer_expression) |
並列領域の scalar_integer_expression により指定されるスレッド数を要求します。 |
SCHEDULE (type[,chunk]) |
DO 構造の繰返しをチームのスレッド間でどのように分割するかを指定します。type 引数の値は、STATIC、DYNAMIC、GUIDED、または RUNTIME です。オプションの chunk 引数は、正のスカラ整数式でなければなりません。 |
COPYIN (list) |
並列領域の最初で、マスタスレッドのデータ値を、THREADPRIVATE 共通ブロックのコピー、または list で指定された変数に複写するように指定します。 |
ディレクティブ |
使用する節 |
PARALLEL |
COPYIN、DEFAULT、PRIVATE、FIRSTPRIVATE、REDUCTION、SHARED |
DO |
PRIVATE、FIRSTPRIVATE、LASTPRIVATE、REDUCTION、SCHEDULE |
SECTIONS |
PRIVATE、FIRSTPRIVATE、LASTPRIVATE、REDUCTION |
SECTION |
PRIVATE、FIRSTPRIVATE、LASTPRIVATE、REDUCTION |
SINGLE |
PRIVATE、FIRSTPRIVATE |
PARALLEL DO |
COPYIN、DEFAULT、 PRIVATE、FIRSTPRIVATE、LASTPRIVATE、REDUCTION、SHARED、SCHEDULE |
PARALLEL SECTIONS |
COPYIN、DEFAULT、 PRIVATE、FIRSTPRIVATE、LASTPRIVATE、REDUCTION、SHARED |
MASTER |
なし |
CRITICAL[lock] |
なし |
BARRIER |
なし |
ATOMIC |
なし |
FLUSH [(list)] |
なし |
ORDERED |
なし |
THREADPRIVATE (list) |
なし |