- ソフトウェア エミュレーション: ソフトウェア エミュレーション ビルドでは、コンパイルおよびリンクが短時間で実行でき、x86 システム上でコンパイル済み C モデルとして実行して、ホスト コードとカーネル ロジックの両方をすばやく反復実行できます。
- ハードウェア エミュレーション: ホスト プログラムはソフトウェア エミュレーションと同様に実行されますが、カーネル コードは RTL ビヘイビアー モデルにコンパイルされ、Vivado シミュレータで実行されます。ビルドおよび実行ループにかかる時間は長くなりますが、カーネル ロジックがサイクル精度で表示されます。
- システム ハードウェア: ホスト プログラムはほかのビルド ターゲットと同様に実行されますが、アプリケーション用に生成された FPGA バイナリを実行する実際のアクセラレータ カードに接続されます。示されるパフォーマンス データおよび結果は、アクセラレーション アプリケーションの実際のパフォーマンスです。この実行でも、デザインを最適化できる可能性が示される場合があります。
エミュレーション ビルドの実行
- XRT で必要な xrt.ini ファイルを編集します。これはオプションですが、推奨されます。
xrt.ini ファイル に説明されているように、このファイルには、デバッグ、プロファイリング、ホスト アプリケーションおよびカーネルを実行する際に XRT で記録されるメッセージを制御するためのさまざまなパラメーターを指定します。これにより、アプリケーションの実行中にランタイムでデバッグおよびプロファイル データを取得できます。xrt.ini の
Emulation
グループでは、エミュレーションの実行に影響する機能を指定します。ヒント: カーネル コードをエミュレーション モードでコンパイルするには、v++ -g
オプションを使用してください。 -
emconfigutil ユーティリティ の手順に従って、エミュレーションの実行に必要な emconfig.json ファイルを作成します。これは、ハードウェアまたはソフトウェア エミュレーションの実行には必須です。
エミュレーション コンフィギュレーション ファイル
emconfig.json
は、emconfigutil
コマンドを使用して指定のプラットフォーム用に生成され、エミュレーション中にザイリンクス ランタイム ライブラリで使用される情報を供給します。次の例は、指定したターゲット プラットフォーム用のemconfig.json
ファイルを作成します。emconfigutil --platform xilinx_u200_xdma_201830_2
ヒント: ターゲット プラットフォームでエミュレーションを実行するには、.json ファイルを最新の状態にしておく必要があります。 -
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
環境変数が正しく設定されていないと、エミュレーション ターゲットが実行されません。 - エンベデッド プラットフォームの場合は、エミュレーション環境 (QEMU) を起動します。 ヒント: この手順は、Zynq UltraScale+ MPSoC などのザイリンクス エンベデッド デバイスを使用してプラットフォームの Arm プロセッサ環境をエミュレートする場合にのみ必要です。
システムのパッケージ で説明するように、Vitis コンパイラでは launch_sw_emu.sh または launch_hw_emu.sh という QEMU エミュレーション環境を設定して起動するスクリプトが作成さます。アプリケーションを実行するには、このスクリプトをコマンド ラインから使用する必要があります。
- アプリケーションを実行します。
ランタイム初期化ファイル (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