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

インテルがサポートする プラグマのリファレンス

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

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

次のプラグマは、Microsoft® コンパイラーと互換性があります。各プラグマに関する詳細は、Microsoft® Developer Network (http://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* 4.1 プラグマをサポートしています。 各プラグマに関する詳細は、OpenMP* 4.1 仕様を参照してください。

プラグマ

説明

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

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

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 互換プラグマ。プログラムから削除する識別子にラベル付けします。"poisoned" 識別子をコンパイルするとエラーが発生します。#pragma POISON もサポートされています。

options

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

weak

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

関連情報