インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド

OpenMP* 宣言子と節の概要

ここでは、インテル® コンパイラーでサポートされている OpenMP* 宣言子と節の概要を説明します。 OpenMP* API の詳細については、OpenMP* Web サイト (http://www.openmp.org/) の OpenMP Application Program Interface バージョン 4.0 仕様を参照してください。

PARALLEL 宣言子

この宣言子を使用してスレッドのチームを形成しスレッドを並列で実行します。

宣言子

説明

PARALLEL 宣言子 (OpenMP*)

並列実行領域を定義します。

WORKSHARING 宣言子

これらの宣言子を使用してスレッドのチーム間のワークを共有します。

宣言子

説明

DO 宣言子

関連付けられたループの反復がチーム内のスレッド間で分割される、反復的なワークシェアの構造を識別します。

SECTIONS

囲まれた SECTION 宣言子がチームのスレッド間に分割されるコードのブロックを定義することを指定します。各セクションは、チーム内のスレッドにより 1 回だけ実行されます。

SINGLE

コードのスレッドが一度に 1 つのスレッドでのみ実行されることを指定します。

WORKSHARE

文または構造のブロックを実行する作業を個別のユニットに分割します。また、実行単位の作業をチームのスレッドに分配して、各作業単位が 1 回だけ実行されるようにします。

PARALLEL および WORKSHARING 宣言子

これらの宣言子は WORKSHARING 宣言子が続く PARALLEL 宣言子のショートカットとして使用します。

宣言子

説明

PARALLEL DO

1 つの DO 宣言子を含む並列領域を簡潔に指定する方法を提供します。

PARALLEL SECTIONS

1 つの SECTIONS 宣言子を含む並列領域を簡潔に指定する方法を提供します。セマンティクスは SECTIONS 宣言子が直後に続く PARALLEL 宣言子を明示的に指定することと同じです。

PARALLEL WORKSHARE

1 つの WORKSHARE 宣言子を含む並列領域を簡潔に指定する方法を提供します。

TASKING 宣言子

これらの宣言子を使用して遅延実行を行います。

宣言子

説明

TASK

タスク領域を定義します。

TASKYIELD

現在のタスクを中断し、別のタスクの実行を優先することを許可します。

MASTER および SYNCHRONIZATION 宣言子

これらの宣言子を使用してスレッド間を同期します。

宣言子

説明

ATOMIC

特定のメモリー位置をアトミックに更新し、複数のスレッドが同時に読み取り/書き込みを行う危険性を回避します。

BARRIER

チーム内のすべてのスレッドを同期化します。各スレッドは、チーム内のほかのすべてのスレッドがバリアに到達するまで待機します。

CRITICAL 宣言子

コードのブロックへのアクセスを一度に 1 つのスレッドのみに制限します。

FLUSH 宣言子

チームのスレッドでメモリーの状態の整合性が保たれる同期ポイントを識別します。

MASTER

チームのマスタースレッドで実行されるコードブロックを指定します。

ORDERED

チームのスレッドがループの反復順に実行するスレッドのコードブロックを指定します。

TASKGROUP

現在のタスクの子タスクと派生タスクがすべて完了するまで待機するように指定します。

TASKWAIT

現在のタスクが開始してから、生成された子タスクの完了まで待機するように指定します。

データ環境宣言子

この宣言子を使用してグローバルなプライベート・データをスレッドに割り当てます。

宣言子

説明

THREADPRIVATE

各スレッドにプライベート (ローカル) な名前付き共通ブロック (スレッド内ではグローバル) を指定します。

コプロセッサー制御宣言子

これらの宣言子を使用してコプロセッサー上の実行を制御します。

宣言子

説明

DECLARE TARGET

target 領域から呼び出せる名前付きルーチンのデバイス固有バージョンを作成します。この宣言子は、インテル® MIC アーキテクチャーにのみ適用されます。

DISTRIBUTE

teams 構造により生成されるすべてのスレッドチームのマスタースレッド間で、ループ反復を共有するように指定します。

TARGET 宣言子

デバイスデータ環境を作成して同じデバイスで構文を実行します。この宣言子は、インテル® MIC アーキテクチャーにのみ適用されます。

TARGET DATA

領域の範囲のデバイスデータ環境を作成します。この宣言子は、インテル® MIC アーキテクチャーにのみ適用されます。

TARGET UPDATE

デバイスデータ環境のリスト項目と対応するオリジナルのリスト項目の整合性を保持します。この宣言子は、インテル® MIC アーキテクチャーにのみ適用されます。

TEAMS

スレッドチームを複数作成し、各チームのマスタースレッドの構造ブロックを実行します。

ベクトル化宣言子

これらの宣言子を使用してベクトル・ハードウェア上の実行を制御します。

宣言子

説明

SIMD 宣言子 (OpenMP*)

ループの SIMD ベクトル化を要求して制御します。

DECLARE SIMD

SIMD プロシージャーを生成します。

DO SIMD

SIMD 命令を使用して同時に実行できるループを指定します。

PARALLEL DO SIMD

SIMD (Single Instruction, Multiple Data) 命令を使用して実行するループを含む並列領域を指定します。

SIMD 命令を使用して同時に実行できるループを指定します。1 つの SIMD ループ構造だけを含み、その他の文を含まない PARALLEL 構造を簡潔に指定する方法を提供します。

OpenMP* の節

これらの節を使用して宣言子のオプションを指定します。

説明

COLLAPSE ( n )

1 つのループに結合して並列実行する、OpenMP* for 構造に関連する for ループの入れ子構造のループ数を指定します。

COPYIN ( list )

マスタースレッドのデータ値を、並列領域の最初で、共通ブロックの THREADPRIVATE または list で指定された変数にコピーする方法を提供します。

COPYPRIVATE( list )

list のプライベート変数を使用して、1 つの暗黙的なタスクのデータ環境から並列領域に属している他の暗黙的なタスクのデータ環境に値をブロードキャストする方法を提供します。

FINAL (expr)

expr を評価し、true の場合は、このタスクとその子孫は遅延されません (並列で実行されません)。

FIRSTPRIVATE ( list )

PRIVATE と同じですが、list の各変数のコピーは、並列処理構造の前に存在するオリジナルの変数の値を使用して初期化されます。 各プライベート・データ・オブジェクトはオリジナルのオブジェクトの値を使用して初期化されます。

IF ( expression )

囲まれたコードブロックは、expression.TRUE. と評価された場合にのみ並列で実行されます。そうでない場合はシリアルに実行されます。

この式は論理型スカラーでなければなりません。

LASTPRIVATE ( list )

PRIVATE と同じですが、list のオリジナルの変数は、DO 構造ループまたは最後の SECTION 構造における最後の繰り返しで、対応する PRIVATE 変数に割り当てられた値に更新されます。

MERGEABLE

このタスク宣言子によって定義されたタスクは、タスク用にプライベート・データ環境を作成する必要がないことを示します。ただし、タスクの実行が遅延される場合は、プライベート・データ環境が作成されます。

NOWAIT

実行終了までワークシェア構造の最後でスレッドを待機させる必要がないことを指示します。スレッドは、実行する作業がなくなるとすぐに、ワークシェア構造の最後から先に進むことができます。

PRIVATE ( list )

チーム内の各スレッドに対して list の変数を PRIVATE にすることを宣言します。 変数のプライベート・コピーは、使用される前に初期化されません。

REDUCTION ({operator|intrinsic}:list)

演算子 operator または組込み関数プロシージャー名 intrinsic を使用して、list にある変数のリダクションを実行します。operator は、+*.AND..OR..EQV..NEQV. のいずれかです。intrinsic は、MAXMINIANDIOR または IEOR のいずれかです。

SCHEDULE (type[,chunk])

DO 構造の繰り返しをチームのスレッド間でどのように分割するかを指定します。 type 引数の値は、STATICDYNAMICGUIDED、または RUNTIME です。 オプションの chunk 引数は、正のスカラー整数式でなければなりません。

SHARED ( list )

チーム内のすべてのスレッド間で list の変数を共有します。

UNTIED

再開されたタスクは、中断前にそのタスクを実行していたスレッドと同じスレッドによって実行される必要がないことを示します。

宣言子と節の対応表

次の表は、宣言子で使用できる節のリストです。

宣言子

使用する節

PARALLEL
END PARALLEL

  • IF

  • NUM_THREADS

  • DEFAULT

  • PRIVATE

  • FIRSTPRIVATE

  • SHARED

  • COPYIN

  • REDUCTION

DO
END DO

  • SCHEDULE

  • PRIVATE

  • FIRSTPRIVATE

  • LASTPRIVATE

  • REDUCTION

  • ORDERED

  • NOWAIT

  • COLLAPSE

SECTIONS
END SECTIONS

  • PRIVATE

  • FIRSTPRIVATE

  • LASTPRIVATE

  • REDUCTION

  • NOWAIT

SECTION

なし

SINGLE
END SINGLE

  • PRIVATE

  • FIRSTPRIVATE

  • COPYPRIVATE

  • NOTWAIT

PARALLEL DO
END PARALLEL DO

  • IF

  • NUM_THREADS

  • SCHEDULE

  • DEFAULT

  • PRIVATE

  • FIRSTPRIVATE

  • LASTPRIVATE

  • SHARED

  • COPYIN

  • REDUCTION

  • ORDERED

  • COLLAPSE

PARALLEL SECTIONS
END PARALLEL SECTIONS

  • IF

  • NUM_THREADS

  • DEFAULT

  • PRIVATE

  • FIRSTPRIVATE

  • LASTPRIVATE

  • SHARED

  • COPYIN

  • REDUCTION

その他

なし

関連情報


このヘルプトピックについてのフィードバックを送信