インテル® C++ コンパイラー 15.0 ユーザー・リファレンス・ガイド

OpenMP* プラグマと節の概要

ここでは、インテル® C++ コンパイラーでサポートされている OpenMP* プラグマと節の概要を説明します。 OpenMP* API の詳細については、OpenMP* Web サイトの OpenMP Application Program Interface 4.0 バージョン 4.0 仕様を参照してください。

PARALLEL プラグマ

このプラグマを使用してスレッドのチームを形成しスレッドを並列に実行します。

プラグマ

説明

omp parallel

スレッドのチームにより並列に実行される構造ブロックを指定します。

WORKSHARING プラグマ

これらのプラグマを使用してスレッドのチーム間のワークを共有します。

プラグマ

説明

omp for

並列ループを指定します。ループの各反復は、チーム内の 1 つのスレッドにより実行されます。

omp sections

チーム内のスレッド間で分配される構造ブロック領域を定義します。

omp single

チーム内の 1 つのスレッドにより 1 回だけ実行するコードブロックの開始位置を指定します。

PARALLEL および WORKSHARING プラグマ

これらのプラグマは WORKSHARING プラグマが続く PARALLEL プラグマのショートカットとして使用します。

プラグマ

説明

omp parallel for

関連付けられた 1 つ以上のループを含む並列構造を指定します。

omp parallel sections

1 つの sections 構造を含む parallel 構造を指定します。

TASKING プラグマ

これらのプラグマを使用して遅延実行を行います。

プラグマ

説明

omp task

実行が遅延される可能性があるコードブロックの開始位置を指定します。

omp taskyield

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

MASTER および SYNCHRONIZATION プラグマ

これらのプラグマを使用してスレッド間を同期します。

プラグマ

説明

omp atomic

アトミックに実行する必要がある計算を指定します。

omp barrier

チーム内のすべてのスレッドが到着するまで各スレッドが待機しなければならないコード位置を指定します。

omp critical

一度に 1 つのスレッドのみアクセスできるコードブロックを指定します。

omp flush

スレッドから見たメモリーの状態と実際のメモリーの整合性が保たれるポイントを識別します。

omp master

チームのマスタースレッドで 1 回だけ実行するコードブロックの開始位置を指定します。

omp ordered

チームのマスタースレッドで 1 回だけ実行するコードブロックの開始位置を指定します。

omp taskgroup

囲まれたタスクと派生タスクがすべて完了するまでプログラムを待機させます。

omp taskwait

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

データ環境プラグマ

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

プラグマ

説明

omp threadprivate

各スレッドにプライベートとして割り当てられるグローバル変数のリストを指定します。

コプロセッサー制御プラグマ

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

プラグマ

説明

omp declare target

target 領域から呼び出せる関数のデバイス固有バージョンを作成します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp distribute

1 つ以上のループの反復をすべてのスレッドチームのマスタースレッド間で共有するかどうかを指定します。

omp target

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

omp target data

ホストからターゲットデバイスへ変数をマッピングして、デバイスのデータ環境を作成します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp target update

プラグマで指定されているモーション節に応じて、デバイスとホスト間でデバイスのデータ環境の項目の整合性を保持します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp teams

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

ベクトル化プラグマ

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

プラグマ

説明

omp simd

ループを SIMD (Single Instruction, Multiple Data) 命令を使用して同時に実行されるループに変換します。

omp declare simd

SIMD ループから一度の呼び出しで、SIMD (single instruction-multiple data) 命令を使用して複数の引数を処理できる関数バージョンを作成します。

omp for simd

SIMD (Single Instruction, Multiple Data) 命令を使用して同時に実行可能なループの開始位置を指定します。ループの各反復は、チーム内の 1 つのスレッドにより実行されます。

omp parallel for simd

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

OpenMP* 節

これらの節を使用してプラグマのオプションを指定します。

説明

collapse(n)

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

copyin(list)

マスタースレッドのデータ値を、構造内のスレッドチームの threadprivate 変数にコピーする方法を提供します。

copyprivate(list)

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

final(expr)

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

firstprivate(list)

private 節で指定される機能のスーパーセットを指定します。 各プライベート・データ・オブジェクトはオリジナルのオブジェクトの値を使用して初期化されます。

if(expression)

if(expression) 節が存在する場合、expression 節が TRUE である場合にのみ、囲まれたコードブロックは並列に実行されます。 それ以外の場合は、コードブロックはシリアルに実行されます。

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

lastprivate(list)

private 節で指定される機能のスーパーセットを指定します。 領域を出る時点で、オリジナルのオブジェクトは、関連付けられたループシーケンスの最後の反復、または記述上における最後のセクション構造のプライベート・コピーの値で更新されます。

mergeable

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

nowait

ワークシェア領域の最後で実装がバリアを省略できるようにします。

private(list)

チーム内の各スレッドに対して変数を private にすることを宣言します。

reduction({operator | intrinsic}:list)

スカラー変数の削減を実行します。

schedule(type[, chunk])

for ループの反復をチームのスレッド間でどのように分割するかを指定します。

shared(list)

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

untied

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

関連情報


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