ここでは、インテル® コンパイラーでサポートされている OpenMP プラグマと節の概要を説明します。OpenMP API の詳細については、OpenMP Web サイト (http://www.openmp.org/) の OpenMP Application Program Interface バージョン 2.5 仕様を参照してください。
プラグマ |
説明 |
---|---|
parallel |
並列実行領域を定義します。 |
task |
囲まれた並列構造の領域として、関連付けられた構造ブロックを並列実行するように指定します。 |
sections |
チーム内のスレッド間で分割される一連の構造ブロックを指定する、非反復的なワークシェアリングの構造を識別します。 |
section |
囲まれた SECTION 構造の領域として、関連付けられた構造ブロックを並列実行するように指定します。 |
single |
対応する構造化ブロックがチーム内の 1 つのスレッドだけで実行されるように指定する構造を識別します。 |
parallel for |
1 つの for 宣言子を含む並列領域のショートカット。
|
for |
関連付けられたループの反復が並列実行される領域を指定する、反復的なワークシェアリングの構造を識別します。それぞれの反復は、チーム内の 1 つのスレッドにより実行されます。 |
parallel sections |
1 つの sections 構造を含む並列領域を指定するショートカット形式です。 |
master |
チームのマスタースレッドでのみ実行される構造ブロックを指定します。 |
critical[name] |
関連付けられた構造ブロックの実行を一度に 1 スレッドだけに制限します。各スレッドは、他のスレッドが同じ name 引数でクリティカル構造を実行しなくなるまで、クリティカル構造の最初で待機します。 |
taskwait |
現在のタスクが開始してから生成された子タスクの完了まで待機するように指定します。 |
barrier |
チーム内のすべてのスレッドを同期化します。各スレッドは、チーム内の他のすべてのスレッドがこのポイントに到達するまで待機します。 |
atomic |
特定のメモリー・ロケーションをアトミックに更新し、同時に複数のスレッドによる書き込みの危険性を回避するようにします。 |
flush [(list)] |
クロススレッド・シーケンス・ポイントを指定します。このポイントでは、チーム内のすべてのスレッドから見たメモリー内の特定のオブジェクトの状態の整合性が保たれるように、プログラム上で保証する必要があります。オプションの list 引数は、フラッシュする変数をカンマ区切りでリストします。 |
ordered |
この宣言子に続く構造ブロックを、シーケンシャル・ループ内で反復が実行される順序で実行します。 |
threadprivate (list) |
指定された名前付きのファイル有効範囲変数、名前空間の有効範囲変数、またはスタティック・ブロックの有効範囲変数を特定のスレッドに対してプライベートにします。 |
節 |
説明 |
---|---|
private |
チーム内の各スレッドに対して変数を private にすることを宣言します。変数のプライベート・コピーは、領域に入る時点でオリジナルのオブジェクトにより初期化されます。 |
firstprivate |
private 節で指定される機能のスーパーセットを指定します。 |
lastprivate |
private 節で指定される機能のスーパーセットを指定します。オリジナルのオブジェクトは、領域を出る時点で、関連付けられたループの最後のシーケンシャル反復、または記述上における最後のセクション構造のプライベート・コピーの値で更新されます。 |
shared |
チーム内のすべてのスレッドで変数を共有します。 |
default |
変数のデータ有効範囲属性を設定できます。 |
reduction |
スカラー変数の削減を実行します。 |
ordered |
ordered 宣言子に続く構造ブロックを、シーケンシャル・ループ内で反復が実行される順序で実行します。 |
if (expression) |
if(expression) 節が存在する場合、expression 節が TRUE である場合にのみ、囲まれたコードブロックは並列に実行されます。それ以外の場合は、コードブロックは直列に実行されます。 式は、スカラー論理式でなければなりません。 |
schedule |
for ループの反復をチームのスレッド間でどのように分割するかを指定します。 |
collapse(n) |
コラプス用に OpenMP ループ構造に関連付けるループの数を指定します。 |
copyin |
マスタースレッドのデータ値を、並列領域の最初で threadprivate のコピーにより使用される変数に複写する方法を提供します。 |
copyprivate |
プライベート変数を使用して、1 つの暗黙的なタスクのデータ環境から並列領域に属している他の暗黙的なタスクのデータ環境に値をブロードキャストする方法を提供します。 |
nowait |
ワークシェアリング領域の最後で実装がバリアを省略できるようにします。 |
untied |
再開されたタスクは、中断前にそのタスクを実行していたスレッドと同じスレッドによって実行される必要がないことを示します。 |