アプリケーションの実行 - 2020.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

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

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

  1. XRT で必要な 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 ファイルを検索し、エミュレーションのターゲット設定を読み込みます。これは、エミュレーション run にも必要です。
    C ターゲット プラットフォームの環境変数を設定するには、次のコマンドを使用します。
    setenv XCL_EMULATION_MODE sw_emu
    Bash ターゲット プラットフォーム:
    export  XCL_EMULATION_MODE=sw_emu
    重要: XCL_EMULATION_MODE 環境変数が正しく設定されていないと、エミュレーション ターゲットが実行されません。
  4. エンベデッド プラットフォームの場合は、エミュレーション環境 (QEMU) を起動します。
    ヒント: この手順は、Zynq UltraScale+ MPSoC などのザイリンクス エンベデッド デバイスを使用してプラットフォームの Arm プロセッサ環境をエミュレートする場合にのみ必要です。

    システムのパッケージ で説明するように、Vitis コンパイラでは launch_sw_emu.sh または launch_hw_emu.sh という QEMU エミュレーション環境を設定して起動するスクリプトが作成さます。アプリケーションを実行するには、このスクリプトをコマンド ラインから使用する必要があります。

  5. アプリケーションを実行します。

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

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

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

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

ハードウェアで実行する際でも、xrt.ini ファイルで設定した XRT ファイルを使用して、アプリケーション実行中にデバッグとプロファイル データを取り込むことができます。この場合、ファイルの Debug および Runtime セクションがそれに該当します。

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

XCL_EMULATION_MODE 環境設定を解除した状態で、次のようにハードウェアでアプリケーションを実行します。

./host.exe kernel.xclbin