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

概要: インテル® グラフィックス・テクノロジー

このトピックは、インテル® グラフィックス・テクノロジー向けのインテル® 64 アーキテクチャーと IA-32 アーキテクチャーにのみ適用されます。

インテル® グラフィックス・テクノロジー対応のインテル® プロセッサーの多くのモデルでは、並列化可能なかなりの作業をオフロードできます。コンパイルする場合、インテル® C++ コンパイラーを利用すると、CPU 向けに記述されている既存のスカラーまたは並列 C/C++ コードを、容易にプロセッサー・グラフィックスへオフロードできます。多くの場合、このオフロードはわずかなコードを追加するだけで済みます。

次の表に、プロセッサー・グラフィックスへのオフロードをサポートしているアーキテクチャーと OS の組み合わせを示します。

ビルド

インテル® グラフィックス・テクノロジー対応プロセッサーでの実行

インテル® 64、Linux*

インテル® 64、Linux*

インテル® 64、Windows*

インテル® 64、Windows*

IA-32、Windows*

IA-32、Windows*

IA-32、Windows*

プロセッサー・グラフィックスに計算をオフロードするアプリケーションを実行する場合、インテル® グラフィックス・テクノロジー対応のインテル® プロセッサーに加えて、必要なランタイムサポートを提供するインテル® HD グラフィックス・ドライバーがインストールされていなければなりません。

インテル® コンパイラーでは、インテル® グラフィックス・テクノロジーで実行するターゲットコードを個別にコンパイルおよびリンクできます。また、オープンソースの binutils パッケージにより、ターゲットカーネルのリンクをサポートするリンカーが提供されています。詳細は、リリースノートを参照してください。

コンパイラーは、CPU (ホスト) でネイティブ実行するコード領域と、プロセッサー・グラフィックス (ターゲット) へオフロードするコード領域を生成します。オフロードランタイムは、ターゲットへのオフロード処理に使用されるランタイム・ライブラリーを参照します。

コンパイラーとオフロードランタイムは、次の操作を可能にします。

さらに、次の操作を簡単に行えるようにします。

インテル® グラフィックス・テクノロジー向けプログラミング

インテル® グラフィックス・テクノロジー向けのオフロード拡張を含むソースファイルをコンパイルする場合、生成されるオブジェクト・ファイルにターゲット・オブジェクトが組込まれます。このオブジェクト・ファイルは FAT オブジェクトと呼ばれます。 ターゲット・オブジェクトのセクション名は .gfxobj です。 FAT オブジェクトをリンクする場合、ターゲット実行ファイルは次のようになります。

ターゲット・オブジェクトまたはターゲット実行ファイルは、offload_extract ツールを使用して FAT オブジェクトまたは FAT 実行ファイルから抽出できます。

コンパイラーには、インテル® グラフィックス・テクノロジー向けのプログラミング用に、次の言語拡張が用意されています。

名前

説明

offload プラグマ

offload_attribute プラグマ

CPU とプロセッサー・グラフィックス間のデータ転送を制御するプラグマ。

__GFX__ マクロ

__INTEL_OFFLOAD マクロ

インテル® グラフィックス・テクノロジー向けのプログラミングで利用できる事前定義済みマクロ。

target(gfx) 属性

target(gfx_kernel) 属性

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

組込み関数

インテル® グラフィックス・テクノロジー向けヘテロジニアス・プログラミング用の組込み関数および多数の既存の CPU 用の組込み関数。

非同期オフロード API

キューに追加されたユーザー定義のカーネル関数のオフロード、および CPU とプロセッサー・グラフィックス間のデータ共有を制御する関数。

さらに、インテル® Cilk™ Plus の _Cilk_for ループや配列表記を使用して、インテル® グラフィックス・テクノロジーへ並列ループをオフロードできます。

インテル® グラフィックス・テクノロジー向けビルド

コンパイラーには、インテル® グラフィックス・テクノロジー用のバイナリーをビルドする際に使用できる、次のコンパイラー・オプションと環境変数が用意されています。

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

説明

[Q]offload

オフロードのモードを指定します。このオプションの否定形は、オフロード言語構造を無視します。

[Q]offload-attribute-target

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

[Q]offload-option

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

インテル® グラフィックス・テクノロジーで利用可能な環境変数の一部を以下に示します。

環境変数

説明

GFX_CPU_BACKUP

ターゲットが利用できない場合、ホスト上でヘテロジニアス・コードを実行するかどうかを制御します。

GFX_MAX_THREAD_COUNT

ループの入れ子を並列化する際のターゲットスレッドの最大数を制御します。

GFX_OFFLOAD_TIMEOUT

オフロードタスクの実行時間を制御します。

GFX_SHOW_TIME

実行の最後にタイミング情報を出力するかどうかを制御します。

最適化に関する注意事項

インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804

関連情報


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