インテル® FPGA SDK for OpenCL™プロ・エディション: プログラミング・ガイド

ID 683846
日付 4/01/2019
Public
ドキュメント目次

8.11.2. レガシー・エミュレーターでのOpenCLカーネルのエミュレーション

OpenCL™カーネルをエミュレーションするには、ご自身のカーネルを構築したプラットフォームで.aocxエミュレーション・ファイルを実行します。

以下の手順でカーネルをエミュレーションしてください。

  1. ユーティリティー・コマンド aocl linkflags を実行し、ホスト・アプリケーションを構築するために必要なライブラリーを検索します。ソフトウェアは、エミュレーションおよび通常のカーネルのコンパイルフローに必要なライブラリーをどちらも表示します。
  2. ホスト・アプリケーションを構築し、手順1で検索したライブラリーにリンクします。
    重要: 複数のデバイスを他のOpenCL SDKと共にエミュレーションするには、ホスト・アプリケーションをホストランタイムのライブラリーに接続する に、Khronos ICD Loader Libraryに接続します。ホスト・アプリケーションとICD Loader Libraryの接続は、ホスト・アプリケーションのMakefileを変更して行います。詳細は、ホスト・アプリケーションとKhronos ICD Loader Libraryのリンク を参照ください。
  3. 必要な場合は、 <your_kernel_filename>.aocxファイルをホストが容易に検索できる位置に移動します。現在の作業ディレクトリーが推奨されます。
  4. エミュレーションに向けてホスト・アプリケーションを実行するには
    • Windowsの場合、 set CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=<number_of_devices> コマンドを呼び出し、エミュレーションされたデバイス数を最初に定義し、その後ホスト・アプリケーションを実行します。

      ホスト・アプリケーションを実行した後、 set CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=を呼び出し変数の設定を解除します。

    • Linuxの場合、 env CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=<number_of_devices> <host_application_filename> コマンドを呼び出します。
    このコマンドは、エミュレーターが提供する必要がある同一のエミュレーション・デバイス数を指定します。
    要確認: 環境変数CL_CONTEXT_EMULATOR_DEVICE_INTELFPGAを設定すると、エミュレーションされたデバイスのみが利用可能になります。つまり、物理的なボードへのアクセスはすべて無効になります。
  5. ホストまたはカーネルプログラムを変更後にテストを行う場合は、変更したホストまたはカーネルプログラムのみを再コンパイルし、エミュレーションを再度実行してください。

エミュレーションされたカーネルを呼び出すたびに、共有ライブラリーのコピーである <process_ID>-libkernel.soが、デフォルトの一時ディレクトリーに作成されます。この<process_ID> は、各エミュレーションの実行に割り当てられた固有の数値です。Windowsでは、TMPまたはTEMP環境変数を設定し、デフォルトのディレクトリーを変更することができます。LinuxではTMPDIRの設定です。