インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
インテル® C++ コンパイラーは、他のコンパイラーとの互換性を維持するため、次のプラグマをサポートします。
次のプラグマは、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 |
入力されるシンボルをウィークシンボルとして宣言します。 |
インテル® 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 inclusive_scan | 定義と使用の境界を指定します。scan 節と一緒に指定すべきであり、入れ子構造のループでは使用できません。 |
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) 命令を使用して同時に実行されるループにベクトル化します。 複数の終了ポイントを持つループのベクトル化を許可します。この節を指定すると、プログラムは次のように振る舞います。
|
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 | 囲まれたタスクと派生タスクがすべて完了するまでプログラムを待機させます。 |
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 互換プラグマ。入力されるシンボルをウィークシンボルとして宣言します。 |