インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
ここでは、インテル® コンパイラーでサポートされている OpenMP* 宣言子と節の概要を説明します。 OpenMP* API の詳細については、OpenMP* Web サイト (http://www.openmp.org/) の OpenMP Application Program Interface バージョン 3.1 仕様を参照してください。
宣言子 |
説明 |
---|---|
PARALLEL |
並列実行領域を定義します。 |
TASK |
タスク領域を定義します。 |
DO |
関連付けられたループの反復がチーム内のスレッド間で分割される、反復的なワークシェアの構造を識別します。 |
SECTIONS |
チーム内のスレッド間で分割される一連の構造ブロックを指定する、非反復的なワークシェアの構造を識別します。 |
SECTION |
囲まれた SECTION 構造の領域として、関連付けられた構造ブロックを並列実行するように指定します。 |
SINGLE |
対応する構造化ブロックがチーム内の 1 つのスレッドだけで実行されるように指定する構造を識別します。 |
PARALLEL DO |
1 つの DO 宣言子を含む PARALLEL 領域のショートカット。 注OpenMP* PARALLEL DO 宣言子の直後には、DO 文 (ANSI Fortran 規格の R818 に定義された DO-stmt) を続けなければなりません。 PARALLEL DO 宣言子と DO 文の間に、他の文または OpenMP* 宣言子があると、インテル® Fortran コンパイラーは構文エラーを生成します。 |
PARALLEL SECTIONS |
1 つの SECTIONS 構造を含む並列領域を指定するショートカット形式です。 |
MASTER |
チームのマスタースレッドでのみ実行される構造ブロックを指定します。 |
CRITICAL[name] |
関連付けられた構造ブロックの実行を一度に 1 スレッドだけに制限します。各スレッドは、他のスレッドが同じ name 引数でクリティカル構造を実行しなくなるまで、クリティカル構造の最初で待機します。 |
TASKWAIT |
現在のタスクが開始してから生成された子タスクの完了まで待機するように指定します。 |
TASKYIELD |
現在のタスクを中断し、別のタスクを優先できることを示します。 |
BARRIER |
チーム内のすべてのスレッドを同期化します。各スレッドは、チーム内の他のすべてのスレッドがこのポイントに到達するまで待機します。 |
ATOMIC UPDATE |
指定された変数に対するほかのアトミック操作と同期します。変数を指定された操作でアトミックに更新します。 |
ATOMIC READ |
指定された変数に対するほかのアトミック操作と同期します。変数をアトミックに読み取ります。 |
ATOMIC WRITE |
指定された変数に対するほかのアトミック操作と同期します。変数に新しい値を書き込みます。 |
ATOMIC CAPTURE |
指定された変数に対するほかのアトミック操作と同期します。変数の古い値をアトミックに取得し、変数に対して指定された操作を行います。 |
FLUSH [(list)] |
クロススレッド・シーケンス・ポイントを指定します。このポイントでは、チーム内のすべてのスレッドから見たメモリー内の特定のオブジェクトの状態の整合性が保たれるように、プログラム上で保証する必要があります。オプションの list 引数は、フラッシュする変数をカンマ区切りでリストします。 |
ORDERED |
囲まれた構造ブロックを、シーケンシャル・ループ内で反復が実行される順序で実行します。 |
THREADPRIVATE (list) |
名前付きの共通ブロックまたは変数をスレッドに対してプライベートにします。 list 引数は、共通ブロックまたは変数をカンマ区切りでリストします。 |
節 |
説明 |
---|---|
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 (expression) |
囲まれたコードブロックは、expression が .TRUE.と評価された場合にのみ並列で実行されます。そうでない場合はシリアルに実行されます。 この式は論理型スカラーでなければなりません。 |
NUM_THREADS (expression) |
並列領域の expression により指定されるスレッド数を要求します。 この式は整数型でなければなりません。 |
SCHEDULE (type[,chunk]) |
DO 構造の繰り返しをチームのスレッド間でどのように分割するかを指定します。 type 引数の値は、STATIC、DYNAMIC、GUIDED、または RUNTIME です。 オプションの chunk 引数は、正のスカラー整数式でなければなりません。 |
COLLAPSE (n) |
1 つのループにコラプスして並列実行する、OpenMP* for 構造に関連する for ループの入れ子構造のループ数を指定します。
|
COPYIN (list) |
マスタースレッドのデータ値を、並列領域の最初で、共通ブロックの THREADPRIVATE または list で指定された変数にコピーする方法を提供します。
|
UNTIED |
再開されたタスクは、中断前にそのタスクを実行していたスレッドと同じスレッドによって実行される必要がないことを示します。 |
MERGEABLE |
このタスクプラグマによって定義されたタスクは、タスク用にプライベート・データ環境を作成する必要がないことを示します。ただし、タスクの実行が遅延される場合は、プライベート・データ環境が作成されます。 |
FINAL(expr) |
expr を評価し、true の場合は、このタスクとその子孫は遅延されません (並列で実行されません)。 |