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

インテル® コンパイラー固有のプラグマ

インテル® C++ コンパイラー固有のプラグマを以下に示します。各プラグマの詳細については、プラグマ名をクリックしてください。

一部のプラグマはインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。

プラグマ

説明

alloc_section

指定したセクションに 1 つ以上の変数を割り当てます。変数のセクション属性指定を制御します。

cilk grainsize

cilk_for ループで処理される 1 回あたりの反復のサイズ (粒度サイズ) を指定します。

distribute_point

指定された位置でループ分配を行うようにコンパイラーに指示します。

inline

文内のすべての呼び出しのインライン展開を指定します。forceinlinenoinline プラグマについても示します。

intel_omp_task

インテルの以前のタスク用に、潜在的に異なるスレッドで実行される作業単位を指定します。

intel_omp_taskq

インテルの以前のタスク用に、囲まれた task プラグマに指定された作業単位をキューイングする while ループの環境を指定します。

ivdep

ベクトル依存性が存在していると推定されてもそれを無視するようにコンパイラーに指示します。

loop_count

for ループの反復数を指定します。

nofusion

ループが隣接するループと融合されないようにします。

novector

特定のループをベクトル化しないように指定します。

offload

文をターゲット上で実行します。このプラグマは、インテル® MIC アーキテクチャーおよびインテル® グラフィックス・テクノロジーにのみ適用されます。

offload_attribute

プラグマの後で宣言されたすべての関数と変数がターゲットで利用可能であることを示します。このプラグマは、インテル® MIC アーキテクチャーおよびインテル® グラフィックス・テクノロジーにのみ適用されます。

offload_transfer

同期データ転送を開始して完了します。signal 節と一緒に使用すると、非同期データ転送を開始します。 このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

offload_wait

開始した非同期データ転送を待つように指定します。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

omp atomic

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

omp barrier

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

omp cancel

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

omp cancellation point

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

omp critical

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

omp declare simd

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

omp declare target

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

omp master

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

omp ordered

ループの反復順に実行されるワークシェア・ループのコードブロックを指定します。

omp parallel

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

omp parallel for

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

omp parallel for simd

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

omp parallel sections

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

omp sections

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

omp simd

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

omp single

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

omp target

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

omp target data

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

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 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

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

omp threadprivate

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

optimization_level

1 つの関数またはすべての関数の最適化を制御します。

optimization_parameter

関数レベルで、特定のプロセッサー専用コードを生成するようにコンパイラーに指示します。-m (/arch) オプションに似ています。

optimize

このプラグマから別の最適化プラグマまたは翻訳単位の最後に到達するまで最適化を有効または無効にします。

parallel/noparallel

ループ直後の自動並列化を行う依存性を解決するか (parallel)、ループ直後の自動並列化を抑止します (noparallel)。

prefetch/noprefetch

コンパイラーにより、メモリーからのデータ・プリフェッチ要求を発行または無効にします。このプラグマは、インテル® MIC アーキテクチャーにのみ適用されます。

simd

ループのベクトル化を実行します。

unroll/nounroll

カウントされたループをアンロールする [しない] ようにコンパイラーに指示します。

unroll_and_jam/nounroll_and_jam

ループアンロールとジャムを有効/無効にします。これらのプラグマは、反復される for ループにのみ適用できます。

unused

未使用の変数を示します (警告メッセージは生成されません)。

vector

ループを引数キーワードに従ってベクトル化するようにコンパイラーに指示します。


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