Ahead-Of-Time (AOT) コンパイル

Ahead-Of-Time (AOT) コンパイルは、開発ライフサイクルや展開時間の短縮に役立つ機能です。この機能は、アプリケーションを実行するターゲットデバイスが事前に分かっている場合に利用できます。AOT 機能には、次のような利点があります。

特定のターゲットデバイス向けに AOT コンパイルされたプログラムは、それ以外のデバイスでは動作しません。実行時に適切なターゲットデバイスを検出して、ターゲットデバイスが存在しない場合はエラーを報告する必要があります。非同期例外ハンドラーによる例外処理の使用が推奨されます。

データ並列 C++ (DPC++) は、インテル® CPU、インテル® プロセッサー・グラフィックス (Gen9 以降)、およびインテル® FPGA で AOT コンパイルをサポートします。

必要条件

AOT 機能で GPU をターゲットにするには、OpenCL* オフライン・コンパイラー (OCLOC) ツールがインストールされている必要があります。使用しているオペレーティング・システムにツールをインストールするには、『インテル® oneAPI ツールキット・インストール・ガイド』 (英語) の「OCLOC のインストール」を参照してください。

インテル® CPU 向けに AOT を使用する方法

次のオプションがサポートされます。

例:

CPU ターゲット向けに複数のソースファイルを持つアプリケーションをビルド

方法 1: 通常のファイル (DPC++ カーネルなし) をコンパイルしてホスト・オブジェクトを作成します。次に、カーネルコードを含むファイルをコンパイルして、残りのアプリケーションとリンクします。

方法 2: カーネルコードを含むファイルをコンパイルして、FAT オブジェクトを作成します。次に、残りのファイルをコンパイルして、リンクして FAT 実行ファイルを作成します。

現在、方法 2 は HOST セレクターでのみ動作します。

インテル® インテグレーテッド・グラフィックス (インテル® GPU) 向けに AOT を使用する方法

次のオプションがサポートされます。

すべてのデバイスタイプを表示するには、次のコマンドを使用します。

ocloc compile --help

複数のターゲットデバイスがリストされている場合、インテル® oneAPI DPC++/C++ コンパイラーはこれらのターゲットごとにコンパイルし、この方法で作成されたすべてのデバイスバイナリーを含む FAT バイナリーを作成します。

サポートされる -device パターンの例:

Microsoft* Visual Studio* での AOT の使用

コンパイルとリンクに Microsoft* Visual Studio* を使用することができます。CPU または GPU 向けに AOT コンパイルを行う場合、以下のオプションを設定します。

CPU の場合:

GPU の場合: