インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。
インテル® C++ コンパイラーでは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーで実行するバイナリーのプログラミングとビルド用にさまざまな機能が用意されています。
言語拡張
コンパイラー・オプション
環境変数
属性
キーワード
組込み関数
クラス・ライブラリー
OpenMP*
オフロード用に定義されているコードは、Linux* または Windows® を実行するインテル® Xeon® プロセッサー・ベースのホストおよびインテル® MIC アーキテクチャーをサポートするターゲットで実行します。
コードのセクションをオフロードしてインテル® MIC アーキテクチャーで実行できる並列プログラム、またはインテル® MIC アーキテクチャーでネイティブに実行できる並列プログラムを記述することができます。 インテル® MIC アーキテクチャー向けのプログラミング拡張を含むソースファイルをコンパイルすると、ホストバイナリーとオフロードバイナリーの両方を含む FAT バイナリーが作成されます。 コンパイル時に指定されたオプションに応じて、FAT バイナリーはオブジェクト、アーカイブ、または実行ファイルになります。 FAT バイナリーからオフロードバイナリーを抽出する方法は、オフロード抽出ツール (offload_extract) に関連するトピックを参照してください。
コンパイラーには、インテル® MIC アーキテクチャー向けのプログラミング用に、次の言語拡張が用意されています。
名前 |
説明 |
---|---|
offload プラグマ offload_attribute プラグマ offload_transfer プラグマ offload_wait プラグマ prefetch/noprefetch プラグマ |
CPU とコプロセッサー間のデータ転送を制御するプラグマ。 |
_Cilk_offload キーワード _Cilk_shared キーワード |
CPU とコプロセッサー間のデータ転送を制御するキーワード。 CPU とコプロセッサー間で交換されるデータは複雑でもかまいません。 |
target 属性 |
変数と関数をターゲット上に配置する属性。 |
__INTEL_OFFLOAD マクロ __TARGET_ARCH_MIC マクロ __AVX512F__ マクロ __AVX512CD__ マクロ __AVX512ER__ マクロ __AVX512PF__ マクロ |
インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights Landing) で使用可能な事前定義済みマクロ。 |
__INTEL_OFFLOAD マクロ __TARGET_ARCH_MIC マクロ __KNC__ マクロ __MIC__ マクロ |
インテル® Xeon Phi™ コプロセッサー x100 製品ファミリー (開発コード名 Knights Corner) で使用可能な事前定義済みマクロ。 |
組込み関数 |
インテル® MIC アーキテクチャー向け組込み関数。 |
クラス・ライブラリー |
SIMD 演算用のクラス・ライブラリー。 |
offload.h の API |
次の処理を行う関数のセットが用意されています。
|
コンパイラーには、インテル® MIC アーキテクチャー用のバイナリーをビルドするときに使用できる、次のコンパイラー・オプションと環境変数が用意されています。
コンパイラー・オプション |
説明 |
---|---|
qoffload、Qoffload の否定形です。 |
オフロードの言語構造を無視します。 |
Qmic (Windows®) mmic (Linux*) |
インテル® MIC アーキテクチャーでネイティブに実行するアプリケーションをビルドします。 |
Qoffload-arch、qoffload-arch |
オフロードコードのターゲット・アーキテクチャーを指定します。 |
Qoffload-attribute-target、qoffload-attribute-target |
ソースファイル中のすべてのグローバルルーチンとグローバル・データ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。 |
Qoffload-option、qoffload-option |
指定したターゲットとツールで使うオプションを指定します。 |
Qopt-report-phase:offload、qopt-report-phase=offload |
最適化レポートを生成するときに使用する offload 最適化フェーズを指定する |
Qopt-assume-safe-padding、qopt-assume-safe-padding |
変数と動的に割り当てられたメモリーがオブジェクト境界を越えてパディングされているとコンパイラーが仮定するかどうかを制御します。 |
Qopt-streaming-cache-evict、qopt-streaming-cache-evict |
ストリーミング・ロード/ストアに使用するキャッシュライン退避レベルを指定します。 |
Qopt-threads-per-core、qopt-threads-per-core |
アプリケーションで使用するコアあたりのスレッド数をコンパイラーに知らせます。 |
Qopt-gather-scatter-unroll、qopt-gather-scatter-unroll |
集約 (Gather)/分散 (Scatter) ループの代替アンロールシーケンスを指定します。 |
以下に、インテル® MIC アーキテクチャーで利用可能な環境変数の一部を示します。
環境変数 |
説明 |
---|---|
MIC_STACKSIZE |
コプロセッサーのスタックサイズを設定します。 |
MIC_ENV_PREFIX |
コプロセッサーに渡される環境変数を制御します。 |
MIC_PROXY_IO |
stderr と stdout の I/O プロキシーを制御します。 |