Ahead-Of-Time (AOT) コンパイルは、開発ライフサイクルや展開時間の短縮に役立つ機能です。この機能は、アプリケーションを実行するターゲットデバイスが事前に分かっている場合に利用できます。AOT 機能には、次のような利点があります。
データ並列 C++ (DPC++) は、インテル® CPU、インテル® プロセッサー・グラフィックス (Gen9 以降)、およびインテル® FPGA で AOT コンパイルをサポートします。
AOT 機能で GPU をターゲットにするには、OpenCL* オフライン・コンパイラー (OCLOC) ツールがインストールされている必要があります。使用しているオペレーティング・システムにツールをインストールするには、『インテル® oneAPI ツールキット・インストール・ガイド』 (英語) の「OCLOC のインストール」を参照してください。
次のオプションがサポートされます。
オプション | 表示名 |
---|---|
avx | インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) 命令 |
avx2 | インテル® アドバンスト・ベクトル・エクステンション 2 (インテル® AVX2) |
avx512 | インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) |
sse4.2 | インテル® ストリーミング SIMD 拡張命令 4.2 (インテル® SSE4.2) |
例:
CPU ターゲット向けに複数のソースファイルを持つアプリケーションをビルド
方法 1: 通常のファイル (DPC++ カーネルなし) をコンパイルしてホスト・オブジェクトを作成します。次に、カーネルコードを含むファイルをコンパイルして、残りのアプリケーションとリンクします。
方法 2: カーネルコードを含むファイルをコンパイルして、FAT オブジェクトを作成します。次に、残りのファイルをコンパイルして、リンクして FAT 実行ファイルを作成します。
次のオプションがサポートされます。
オプション | 表示名 |
---|---|
skl | 第 6 世代インテル® Core™ プロセッサー (第 9 世代インテル® プロセッサー・グラフィックス搭載の開発コード名 Skylake) |
kbl | 第 7 世代インテル® Core™ プロセッサー (第 9 世代インテル® プロセッサー・グラフィックス搭載の開発コード名 Kaby Lake) |
cfl | 第 8 世代インテル® Core™ プロセッサー (第 9 世代インテル® プロセッサー・グラフィックス搭載の開発コード名 Coffee Lake) |
glk | 第 9 世代インテル® プロセッサー・グラフィックス搭載の開発コード名 Gemini Lake |
icllp | 第 10 世代インテル® Core™ プロセッサー (第 11 世代インテル® プロセッサー・グラフィックス搭載の開発コード名 Ice Lake) |
tgllp | 第 11 世代インテル® Core™ プロセッサー (第 12 世代インテル® プロセッサー・グラフィックス搭載の開発コード名 Tiger Lake) |
dg1 | インテル® Iris® Xe MAX グラフィックス |
Gen9 | 第 9 世代インテル® プロセッサー・グラフィックス |
Gen11 | 第 11 世代インテル® プロセッサー・グラフィックス |
Gen12LP | 第 12 世代インテル® プロセッサー・グラフィックス (省電力) |
すべてのデバイスタイプを表示するには、次のコマンドを使用します。
ocloc compile --help
複数のターゲットデバイスがリストされている場合、インテル® oneAPI DPC++/C++ コンパイラーはこれらのターゲットごとにコンパイルし、この方法で作成されたすべてのデバイスバイナリーを含む FAT バイナリーを作成します。
サポートされる -device パターンの例:
dpcpp -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xs "-device skl" vector-add.cpp
dpcpp -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xs "-device skl,icllp" vector-add.cpp
dpcpp -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xs "-device *" vector-add.cpp
dpcpp-cl /EHsc -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xs "-device skl" vector-add.cpp
dpcpp-cl /EHsc -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xs "-device skl,icllp" vector-add.cpp
dpcpp-cl /EHsc -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xs "-device *" vector-add.cpp
コンパイルとリンクに Microsoft* Visual Studio* を使用することができます。CPU または GPU 向けに AOT コンパイルを行う場合、以下のオプションを設定します。
CPU の場合:
GPU の場合: