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

OpenMP* プラグマの概要

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

PARALLEL プラグマ

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

プラグマ

説明

omp parallel

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

タスキングプラグマ

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

プラグマ

説明

omp task

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

ワークシェアリング・プラグマ

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

プラグマ

説明

omp for

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

omp sections

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

omp single

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

同期プラグマ

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

プラグマ

説明

omp atomic

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

omp barrier

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

omp critical

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

omp flush

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

omp master

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

omp ordered

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

omp taskgroup

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

omp taskwait

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

omp taskyield

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

データ環境プラグマ

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

プラグマ

説明

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 cancel

指定した種類の最内領域の取り消し要求を行います。このプラグマに到達したタスクは、取り消された構文の最後に進みます。

omp cancellation point

暗黙的または明示的なタスクが、指定された節の最内領域で取り消し要求があったかどうかをチェックするポイントを定義します。この構文は、スレッド間またはタスク間の同期は実装していません。

ユーザー定義のリダクション・プラグマ

このプラグマを使用して、reduction 節でリダクション演算子として利用可能なリダクション識別子を定義します。

プラグマ

説明

omp declare reduction

reduction 節でリダクション演算子として利用可能なユーザー定義のリダクション (UDR) 関数 (リダクション識別子) を宣言します。

複合プラグマ

これらのプラグマは、連続する複数のプラグマのショートカットとして使用します。

プラグマ

説明

omp distribute parallel for

複数のチームのメンバーである複数のスレッドによって同時に実行できるループを指定します。

omp distribute parallel for simd

複数のチームのメンバーである複数のスレッドによって並列に実行されるループを指定します。SIMD 命令を使用して同時に実行されます。

omp distribute simd

チーム領域のマスタースレッド間で分散されるループを指定します。SIMD 命令を使用して同時に実行されます。

omp for simd

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

omp parallel for

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

omp parallel for simd

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

omp parallel sections

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

omp target teams

デバイスデータ環境を作成して同じデバイスで構文を実行します。また、スレッドチームを複数作成し、各チームのマスタースレッドが構造化ブロックを実行します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp target teams distribute

デバイスデータ環境を作成して同じデバイスで構文を実行します。また、teams 構造により生成されるすべてのスレッドチームのマスタースレッド間で、ループ反復を共有するように指定します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp target teams distribute parallel for

デバイスデータ環境を作成して同じデバイスで構文を実行します。また、teams 構造により生成される複数のチームのメンバーである複数のスレッド間で、ループが並列に実行されるように指定します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp target teams distribute parallel for simd

デバイスデータ環境を作成して同じデバイスで構文を実行します。また、teams 構造により生成される複数のチームのメンバーである複数のスレッド間で、ループが並列に実行されるように指定します。ループはチーム全体に分散され、SIMD 命令を使用して同時に実行されます。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp target teams distribute simd

デバイスデータ環境を作成して同じデバイスで構文を実行します。また、teams 構造により生成されるすべてのスレッドチームのマスタースレッド間で、ループ反復を共有するように指定します。SIMD 命令を使用して同時に実行されます。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp teams distribute

スレッドチームを複数作成し、各チームのマスタースレッドの構造化ブロックを実行します。また、teams 構造により生成されるすべてのスレッドチームのマスタースレッド間で、ループ反復を共有するように指定します。

omp teams distribute parallel for

スレッドチームを複数作成し、各チームのマスタースレッドの構造化ブロックを実行します。また、複数のチームのメンバーである複数のスレッドによって同時に実行できるループを指定します。

omp teams distribute parallel for simd

スレッドチームを複数作成し、各チームのマスタースレッドの構造化ブロックを実行します。また、複数のチームのメンバーである複数のスレッドによって同時に実行できるループを指定します。ループはチーム領域のマスタースレッド間で分散され、SIMD 命令を使用して同時に実行されます。

omp teams distribute simd

スレッドチームを複数作成し、各チームのマスタースレッドの構造化ブロックを実行します。また、チーム領域のマスタースレッド間で分散されるループを指定します。

関連情報