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

インテル® MIC アーキテクチャー

このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーをターゲットとする場合にのみ適用されます。

インテル® C++ コンパイラーでは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーで実行するバイナリーのプログラミングとビルド用にさまざまな機能が用意されています。

オフロード用に定義されているコードは、Linux* または Windows* を実行するインテル® Xeon® プロセッサー・ベースのホストおよびインテル® MIC アーキテクチャーをサポートするターゲットで実行します。

インテル® 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 とコプロセッサー間で交換されるデータは複雑でもかまいません。

インテル® Cilk™ Plus は古い機能 (非推奨) です。

target 属性

変数と関数をターゲット上に配置する属性。

__INTEL_OFFLOAD マクロ

__TARGET_ARCH_MIC マクロ

__AVX512F__ マクロ

__AVX512CD__ マクロ

__AVX512ER__ マクロ

__AVX512PF__ マクロ

インテル® Xeon Phi™ x200 製品ファミリー (開発コード名 Knights Landing) で使用可能な事前定義済みマクロ。

組込み関数

インテル® MIC アーキテクチャー向け組込み関数。

クラス・ライブラリー

SIMD 演算用のクラス・ライブラリー。

offload.h の API

次の処理を行う関数のセットが用意されています。

  • コプロセッサー関連情報を特定する

  • CPU の関数を呼び出してコプロセッサーの実行環境を変更する

  • CPU のみの実行の場合にビルドされないコードを記述する

インテル® MIC アーキテクチャー用にビルド

コンパイラーには、インテル® MIC アーキテクチャー用のバイナリーをビルドするときに使用できる、次のコンパイラー・オプションと環境変数が用意されています。

コンパイラー・オプション

説明

Qoffload- (Windows*)

qno-offload (Linux*)

オフロードの言語構造を無視します。

Qoffload-archqoffload-arch

オフロードコードのターゲット・アーキテクチャーを指定します。

Qoffload-attribute-targetqoffload-attribute-target

ソースファイル中のすべてのグローバルルーチンとグローバル・データ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。

Qoffload-optionqoffload-option

指定したターゲットとツールで使うオプションを指定します。

Qopt-report-phase:offloadqopt-report-phase=offload

最適化レポートを生成するときに使用する offload 最適化フェーズを指定する

Qopt-assume-safe-paddingqopt-assume-safe-padding

変数と動的に割り当てられたメモリーがオブジェクト境界を越えてパディングされているとコンパイラーが仮定するかどうかを制御します。

Qopt-threads-per-coreqopt-threads-per-core

アプリケーションで使用するコアあたりのスレッド数をコンパイラーに知らせます。

以下に、インテル® MIC アーキテクチャーで利用可能な環境変数の一部を示します。

環境変数

説明

MIC_STACKSIZE

コプロセッサーのスタックサイズを設定します。

MIC_ENV_PREFIX

コプロセッサーに渡される環境変数を制御します。

MIC_PROXY_IO

stderr と stdout の I/O プロキシーを制御します。

関連情報