アプリケーションの実行

ヒント: ビルドを実行する前に、Vitis 環境の設定 に説明されているように、コマンド シェルまたはウィンドウを設定します。
ビルド ターゲット に説明されているように、Vitis コア開発キットで指定できるビルド ターゲットには、ソフトウェア エミュレーション、ハードウェア エミュレーション、およびシステム ハードウェア ビルドの 3 つがあります。これらのビルド ターゲットは、それぞれに利点と制限があり、これらの各ターゲットをビルドして使用してみることをお勧めします。
  • ソフトウェア エミュレーション: ソフトウェア エミュレーション ビルドでは、コンパイルおよびリンクが短時間で実行でき、x86 システム上でコンパイル済み C モデルとして実行して、ホスト コードとカーネル ロジックの両方をすばやく反復実行できます。
  • ハードウェア エミュレーション: ホスト プログラムはソフトウェア エミュレーションと同様に実行されますが、カーネル コードは RTL ビヘイビアー モデルにコンパイルされ、Vivado シミュレータで実行されます。ビルドおよび実行ループにかかる時間は長くなりますが、カーネル ロジックがサイクル精度で表示されます。
  • システム ハードウェア: ホスト プログラムはほかのビルド ターゲットと同様に実行されますが、アプリケーション用に生成された FPGA バイナリを実行する実際のアクセラレータ カードに接続されます。示されるパフォーマンス データおよび結果は、アクセラレーション アプリケーションの実際のパフォーマンスです。この実行でも、デザインを最適化できる可能性が示される場合があります。

エミュレーション ビルドの実行

  1. XRT で必要な xrt.ini ファイルを編集します。これはオプションですが、推奨されます。

    xrt.ini ファイル に説明されているように、xrt.ini ファイルは、デバッグ、プロファイリング、ホスト アプリケーションおよびカーネルを実行する際に XRT で記録されるメッセージを制御するためのさまざまなパラメーターを指定します。これにより、アプリケーションの実行中にランタイムでデバッグおよびプロファイル情報を取得できます。xrt.iniEmulation グループでは、エミュレーションの実行に影響する機能を指定します。

    ヒント: カーネル コードをエミュレーション モードでコンパイルするには、v++ -g オプションを使用してください。
  2. emconfigutil ユーティリティ の手順に従って、エミュレーションの実行に必要な emconfig.json ファイルを作成します。必須です。

    エミュレーション設定ファイル emconfig.json は、emconfigutil コマンドを使用して指定のプラットフォーム用に生成され、エミュレーション中にザイリンクス ランタイム ライブラリで使用される情報を供給します。次の例は、指定したターゲット プラットフォーム用の emconfig.json ファイルを作成します。

    emconfigutil --platform xilinx_u200_xdma_201830_2
    ヒント: ターゲット プラットフォームでエミュレーションを実行するには、.json ファイルを最新の状態にしておく必要があります。
  3. XCL_EMULATION_MODE 環境変数を sw_emu (ソフトウェア エミュレーション) または hw_emu (ハードウェア エミュレーション) に設定します。これにより、アプリケーションの実行がエミュレーション モードになります。エミュレーション モードでは、ランタイムがホスト実行と同じディレクトリで emconfig.json ファイルを検索し、エミュレーションのターゲット設定を読み込みます。必須です。
    C ターゲット プラットフォームの環境変数を設定するには、次のコマンドを使用します。
    setenv XCL_EMULATION_MODE sw_emu
    Bash ターゲット プラットフォーム:
    export  XCL_EMULATION_MODE=sw_emu
    重要: XCL_EMULATION_MODE 環境変数が正しく設定されていないと、エミュレーション ターゲットが実行されません。
  4. アプリケーションを実行します。

    ランタイム初期化ファイル (xrt.ini)、エミュレーション設定ファイル (emconfig.json)、および XCL_EMULATION_MODE 環境変数を設定し、通常の実行と同様に、必要なコマンド ライン引数を指定してホスト実行ファイルを実行します。次に例を示します。

    ./host.exe kernel.xclbin
    ヒント: このコマンド ラインでは、多くの Vitis サンプルおよびチュートリアルと同様に、ホスト プログラムが xclbin ファイルの名前を引数として使用することを想定していますが、アプリケーションによっては xclbin ファイルの名前がホスト プログラムにコード記述されていたり、アプリケーションの実行に別の方法が必要であったりすることがあります。

システム ハードウェア ビルドの実行

システム ハードウェア ビルドを実行すると、Alveo データセンター アクセラレータ カードなどのアクセラレータ カード上で実行されている実際のアプリケーション、またはエンベデッド プロセッサ プラットフォームのプロトタイプを確認できます。アクセラレータ カードを使用するには、『Alveo データセンター アクセラレータ カード入門』 (UG1301: 英語版日本語版) に説明されている手順に従って、カードを設置する必要があります。

アクセラレータおよび XRT をインストールしたら、システム ハードウェア ビルドを実行する前に、XCL_EMULATION_MODE 環境変数の設定を解除する必要があります。エミュレーションを実行するよう設定している場合は、その設定を解除してください。

ランタイム初期化ファイル (xrt.ini) を提供し、XCL_EMULATION_MODE 環境変数を解除したら、ハードウェアでアプリケーションを実行します。次に例を示します。

./host.exe kernel.xclbin