インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

インテルがサポートするプラグマの一覧

インテル® C++ コンパイラーは、他のコンパイラーとの互換性を維持するため、次のプラグマをサポートします。

Microsoft* コンパイラーと互換性があるプラグマ

次のプラグマは、Microsoft* コンパイラーと互換性があります。各プラグマに関する詳細は、Microsoft* Developer Network (https://msdn.microsoft.com) を参照してください。

プラグマ

説明

alloc_text

指定された関数定義のコードセクションの名前を指定します。

auto_inline

off で指定された範囲内で定義されたすべての関数を、自動インライン展開の候補とみなされる関数から除外します。

bss_seg

.obj ファイル内の初期化されていない変数が格納されているセグメントをコンパイラーに示します。

check_stack

on 引数は後に続く関数のスタックチェックを有効にすることを示し、off 引数は後に続く関数のスタックチェックを無効にすることを示します。

code_seg

関数が割り当てられるコードセクションを指定します。

comment

オブジェクト・ファイルまたは実行ファイルにコメントを書き込みます。

component

ソースファイルのブラウザー情報や依存情報の収集を制御します。

conform

/Zc:forScope コンパイラー・オプションのランタイムの動作を指定します。

const_seg

.obj ファイル内に格納されている関数のセグメントをコンパイラーに示します。

data_seg

初期化されたデータのデフォルトのセクションを指定します。

deprecated

関数、型、その他の識別子が将来のリリースではサポートされなくなること、または、関数、型、その他の識別子を使用すべきではないことを示します。

fenv_access

プログラムがステータスフラグをチェックしたり、デフォルトではない制御モードで実行することを許可します。

float_control

関数の浮動小数点動作を指定します。

fp_contract

浮動小数点計算結果を省略するかどうかを指示します。

loop

自動ベクトル化で考慮されるループコードと除外されるループコードを制御します。

init_seg

翻訳単位の C++ 初期化コードをセクションに含めます。

message

指定された文字列を標準出力デバイス (stdout) に表示します。

optimize

プラグマの後の関数に対して、または次の最適化プラグマに到達するまで最適化を行うかどうか指定します。Microsoft*の同じプラグマを部分的にサポートするよう実装されています。インテル® C++ コンパイラーの実装については、「optimize」を参照してください。

pointers_to_members

クラスを定義する前にそのメンバーへのポインターを宣言できるようし、そのポインターを使用してポインターのサイズおよびポインターの解釈に必要なコードを制御するかどうかを指定します。

pop_macro

指定されたマクロの値を、スタックの一番上の値に設定します。

push_macro

指定されたマクロの値を、スタックの一番上に保存します。

region/endregion

アウトライン機能を使用して展開および縮約する Microsoft* Visual Studio* コードエディターのコードセグメントを指定します。

section

.obj ファイル内にセクションを作成します。定義されたセクションは、コンパイルが終わるまで有効です。

vtordisp

on 引数は hidden の vtordisp メンバーの生成を有効にし、off 引数は無効にします。

push 引数は現在の vtordisp 設定を内部コンパイラー・スタックにプッシュします。pop 引数はコンパイラー・スタックのトップからレコードをポップし、ポップした vtordisp の値を復元します。

warning (警告)

コンパイラーの警告メッセージの動作を設定します。

weak

入力されるシンボルをウィークシンボルとして宣言します。

OpenMP* プラグマ

インテル® C++ コンパイラーは、以下の表の OpenMP* Technical Report 4: Version 5.0 プラグマをサポートしています。各プラグマに関する詳細は、OpenMP* Technical Report 4: Version 5.0 仕様を参照してください。

インテル固有の節は、関連するプラグマの説明で示します。

プラグマ

説明

omp atomic

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

omp barrier

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

omp cancel

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

omp cancellation point

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

omp critical

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

omp declare reduction

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

omp declare simd

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

omp declare target

デバイス向けに作成、またはマップする関数と変数を指定します。このプラグマは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーまたはインテル® グラフィックス・テクノロジーをターゲットとする場合にのみ適用されます。

omp distribute

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

omp distribute parallel for

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

omp distribute parallel for simd

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

omp distribute simd

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

omp flush

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

omp for

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

omp for simd

ループ反復をチーム内のスレッド間で分配するように指定します。各スレッドによって実行される反復は、SIMD 命令を使用して同時に実行することもできます。

omp master

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

omp ordered

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

omp ordered simd

SIMD レーンの論理的な順序でシリアルに実行すべきループのコードブロックまたは SIMD 対応関数を指定します。

omp ordered simd monotonic

関連する SIMD ループの各反復で新しいリスト項目の値が、そのループに入る前のオリジナルのリスト項目の値 + 現在の反復の前に条件付き更新が行われた反復数 × リニアステップに対応するコードブロックを指定します。関連するループの最後の反復に対応する値が、オリジナルのリスト項目に割り当てられます。

omp ordered simd overlap

SIMD ループ内のオーバーラップする inx 値はスカラーに実行し、別の inx 値は並列に実行する必要があるコードブロックを指定します。

omp parallel

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

omp parallel for

1 つの for 構文を含む並列領域を簡潔に指定する方法を提供します。

omp parallel for simd

1 つの for simd 構文だけを含み、その他の文を含まない parallel 構文を指定します。

omp parallel sections

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

omp sections

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

omp simd

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

複数の終了ポイントを持つループのベクトル化を許可します。この節を指定すると、プログラムは次のように振る舞います。

  • ループの最後の途中終了文の前にある各操作は、SIMD チャンク内で途中終了がトリガーされなかったかのように実行されることがあります。

  • ループの最後の途中終了文の後、すべての操作はループの最後の反復が見つかったかのように実行されます。

  • linear で指定された各リスト項目は、ループ終了時の最後の反復数に基づいて計算されます。

  • linear 節の最後の値と条件付き lastprivates 節は、スカラー実行では保持されます。

  • reductions節の最後の値は、ループ終了時に最後の SIMD チャンクの最後の反復が実行されたかのように計算されます。

  • 共有メモリーの状態は、スカラー実行では保持されないことがあります。

  • 例外は許可されません。

omp single

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

omp target

デバイスデータ環境を作成してそのデバイスで構文を実行します。このディレクティブは、インテル® MIC アーキテクチャーおよびインテル® グラフィックス・テクノロジーにのみ適用されます。

omp target data

領域の範囲のデバイスデータ環境へ変数をマップします。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp target enter data

デバイスのデータ環境へ変数をマップします。このプラグマは、インテル® MIC アーキテクチャーおよびインテル® グラフィックス・テクノロジーにのみ適用されます。

omp target exit data

デバイスのデータ環境から変数をアンマップ (解放) します。このプラグマは、インテル® MIC アーキテクチャーおよびインテル® グラフィックス・テクノロジーにのみ適用されます。

omp target teams

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

プラグマで指定されているモーション節に応じて、デバイスとホスト間でデバイスのデータ環境の項目の整合性を保持します。このプラグマは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーまたはインテル® グラフィックス・テクノロジーをターゲットとする場合にのみ適用されます。

omp task

タスクとして実行するコードブロックを指定します。

omp taskgroup

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

omp taskwait

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

omp taskyield

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

omp teams

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

omp teams distribute

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

omp teams distribute parallel for

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

omp teams distribute parallel for simd

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

omp teams distribute simd

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

omp threadprivate

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

その他のコンパイラーと互換性があるプラグマ

次のプラグマは、その他のコンパイラーと互換性があります。各プラグマに関する詳細は、それぞれのコンパイラーのドキュメントを参照してください。

プラグマ

説明

include_directory

HP 互換プラグマ。#include ファイルの場所を検索するリストに文字列引数を追加します。

poison

GCC 互換プラグマ。プログラムから削除する識別子にラベル付けします。poison 指定された識別子をコンパイルするとエラーが発生します。#pragma POISON もサポートされています。

options

GCC 互換プラグマ。構造内のフィールドのアライメントを設定します。

weak

GCC 互換プラグマ。入力されるシンボルをウィークシンボルとして宣言します。

関連情報