Vitis™ アプリケーション アクセラレーション開発フロー チュートリアル |
Vitis 入門チュートリアル¶
バージョン: Vitis 2021.2
パート 4: データセンター アプリケーションのビルドおよび実行¶
このチュートリアルの 4 番目のパートでは、Vitis フローでサポートされる 3 つのビルド ターゲットを使用して、vector-add の例をコンパイルして実行します。フロー全体の説明は、データセンター アプリケーション アクセラレーション開発フローを参照してください。次のフローの図もここに含まれています。イメージから、ホスト アプリケーションの標準の G++ コンパイル プロセスと、ザイリンクス デバイス バイナリ (xclbin
) を構築するための Vitis コンパイラ (v++
) を確認できます。この演習で、これらの手順を学びます。
ソフトウェア エミュレーション - カーネル コードは、ホスト プロセッサ上で実行されるようにコンパイルされます。これにより、ビルドと実行を高速に繰り返して反復アルゴリズムで調整していくことができます。このターゲットは、構文エラーを特定し、アプリケーションと共に実行されるカーネル コードをソース レベルでデバッグし、システムの動作を検証するのに便利です。詳細は、ソフトウェア エミュレーションを参照してください。
ハードウェア エミュレーション - カーネル コードがハードウェア モデル (RTL) にコンパイルされ、専用シミュレータで実行されます。ビルドおよび実行ループにかかる時間は長くなりますが、詳細でサイクル精度のカーネル アクティビティが表示されます。このターゲットは、FPGA に配置するロジックの機能をテストして、初期パフォーマンス見積もりを取得する場合に便利です。詳細は、ハードウェア エミュレーションを参照してください。
ハードウェア - カーネル コードがハードウェア モデル (RTL) にコンパイルされ、FPGA にインプリメントされて、実際の FPGA で実行されるバイナリが生成されます。詳細は、システム ハードウェア エミュレーションを参照してください。
Alveo U200 データセンター アクセラレーション カードでのビルドおよび実行¶
環境の設定¶
重要: このチュートリアルを実行するには、Vitis 2021.1 以降が必要です。
注記: 次の手順は、bash シェルで実行していることを前提としています。
Vitis を実行する環境を設定するには、次のスクリプトを実行します。
source <VITIS_install_path>/settings64.sh source <XRT_install_path>/setup.sh
次の環境変数が、U200 プラットフォームのインストール ディレクトリを指定するように設定されていることを確認します。
export PLATFORM_REPO_PATHS=<path to the U200 platform install dir>
ソフトウェア エミュレーションをターゲットに指定¶
ソフトウェア エミュレーション用に構築するには、ターゲットのビルド ディレクトリを設定するための次のコマンドを入力します。
cd <Path to the cloned repo>/Getting_Started/Vitis/example/u200
mkdir sw_emu
cp xrt.ini sw_emu
cd sw_emu
ターゲットのビルド ディレクトリに移動したあと、ホスト アプリケーションおよびデバイス バイナリを構築するために次のコマンドを入力します。
g++ -Wall -g -std=c++11 ../../src/host.cpp -o app.exe -I${XILINX_XRT}/include/ -L${XILINX_XRT}/lib/ -lOpenCL -lpthread -lrt -lstdc++
emconfigutil --platform xilinx_u200_gen3x16_xdma_1_202110_1 --nd 1
v++ -c -t sw_emu --platform xilinx_u200_gen3x16_xdma_1_202110_1 --config ../../src/u200.cfg -k vadd -I../../src ../../src/vadd.cpp -o vadd.xo
v++ -l -t sw_emu --platform xilinx_u200_gen3x16_xdma_1_202110_1 --config ../../src/u200.cfg ./vadd.xo -o vadd.xclbin
次に、これら 4 つのコマンドを簡単に説明します。
g++
は、標準 GNU C コンパイラを使用してホスト アプリケーションをコンパイルします。詳細は、ホスト プログラムのビルドを参照してください。emconfigutil
は、指定したプラットフォーム用にエミュレーションするデバイスのタイプと数を定義するエミュレーション コンフィギュレーション ファイルを生成します。詳細は、emconfigutilを参照してください。v++ -c
は、vector-add アクセラレータのソース コードをコンパイルされたカーネル オブジェクト (.xo ファイル) にコンパイルします。詳細は、Vitis コンパイラでのカーネルのコンパイルを参照してください。v++ -l
は、コンパイルされたカーネルをターゲット プラットフォームにリンクし、FPGA バイナリ (.xclbin ファイル) を生成します。詳細は、カーネルのリンクを参照してください。
v++
コマンドの -t
オプションは、ビルド ターゲットを指定します。ここでは、ソフトウェア エミュレーション用に構築しているため、sw_emu
に設定されています。
また、--config
オプションを使用すると、追加オプションを含むコンフィギュレーションファイルの名前を指定できます。ここでは、このコンフィギュレーション ファイルを使用して、ターゲット プラットフォームの名前と特定のメモリ バンクのカーネル引数のマップを指定します。
platform=xilinx_u200_gen3x16_xdma_1_202110_1
debug=1
save-temps=1
[connectivity]
nk=vadd:1:vadd_1
sp=vadd_1.in1:DDR[1]
sp=vadd_1.in2:DDR[2]
sp=vadd_1.out:DDR[1]
[profile]
data=all:all:all
ソフトウェア エミュレーションのビルドは迅速で、1 ~ 2 分以上かかることはありません。ビルド プロセスが完了したら、次のようにソフトウェア エミュレーションを開始できます。
export XCL_EMULATION_MODE=sw_emu
./app.exe
実行が正常に完了したことを示す次のメッセージが表示されます。
INFO: Found Xilinx Platform
INFO: Loading 'vadd.xclbin'
TEST PASSED
u200/sw_emu
ディレクトリの中を確認すると、この演習の間に次のファイルのいくつかが作成されているのがわかります。
app.exe: コンパイルされ、リンクされたホスト アプリケーション
emconfig.json: emconfigutil によって作成されたエミュレーション プラットフォーム
vadd.xo: コンパイルされた Vadd カーネル
vadd.xo.compile_summary: コンパイルされたカーネルのサマリ レポート
vadd.xclbin: カーネルおよびターゲット プラットフォームをリンクするデバイス バイナリ
vadd.xclbin.info: デバイス バイナリのテキスト形式のレポート
vadd.xo.compile_summary: リンクされたデバイス バイナリのサマリ レポート
opencl_trace.csv: アプリケーション ランタイム中に発生するイベントのレポート
summary.csv: アプリケーション プロファイルのレポート
xrt.run_summary: アプリケーション ランタイムのイベントのサマリ レポート
これらのファイルは、ソフトウェア エミュレーション ビルドをターゲットにしているビルドおよび実行プロセスの結果、出力されるファイルです。これらのファイルの一部を、このチュートリアルのパート 5 で詳しく説明します。
ハードウェア エミュレーションをターゲットに指定¶
ハードウェア エミュレーション用に構築するには、ターゲットのビルド ディレクトリを設定するための次のコマンドを入力します。
cd <Path to the cloned repo>/Getting_Started/Vitis/example/u200
mkdir hw_emu
cp xrt.ini hw_emu
cd hw_emu
ターゲットのビルド ディレクトリに移動したあと、ホスト アプリケーションおよびデバイス バイナリを構築するために次のコマンドを入力します。
g++ -Wall -g -std=c++11 ../../src/host.cpp -o app.exe -I${XILINX_XRT}/include/ -L${XILINX_XRT}/lib/ -lOpenCL -lpthread -lrt -lstdc++
emconfigutil --platform xilinx_u200_gen3x16_xdma_1_202110_1 --nd 1
v++ -c -t hw_emu --platform xilinx_u200_gen3x16_xdma_1_202110_1 --config ../../src/u200.cfg -k vadd -I../../src ../../src/vadd.cpp -o vadd.xo
v++ -l -t hw_emu --platform xilinx_u200_gen3x16_xdma_1_202110_1 --config ../../src/u200.cfg ./vadd.xo -o vadd.xclbin
これらのコマンドの簡単な説明は、「ソフトウェア エミュレーションをターゲットに指定」を参照してください。前の手順との唯一の違いは、v++
ターゲット (-t
) オプションで、sw_emu
から hw_emu
に変更されます。その他のオプションはすべて同じままです。
ハードウェア エミュレーションはソフトウェア エミュレーションよりも時間がかかりますが、ハードウェア アクセラレータ カードをターゲットにしているときよりは時間はかかりません。ビルドが終了したら、次のコマンドを使用して、ハードウェア エミュレーションを実行します。
export XCL_EMULATION_MODE=hw_emu
./app.exe
実行が完了すると、問題なく実行が終了したことを示す TEST PASSED というメッセージが表示されます。u200/hw_emu フォルダーの中にあるファイルをリストして、このビルドおよび実行プロセスの間に作成されたファイルを確認できます。これらのファイルの簡単な説明は、「ソフトウェア エミュレーションをターゲットに指定」を参照してください。
ハードウェア ターゲットの指定¶
ハードウェア ターゲット用に構築するには、ターゲットのビルド ディレクトリを設定するための次のコマンドを入力します。
cd <Path to the cloned repo>/Getting_Started/Vitis/example/u200
mkdir hw
cp xrt.ini hw
cd hw
ターゲットのビルド ディレクトリに移動したあと、ホスト アプリケーションおよびデバイス バイナリを構築するために次のコマンドを入力します。
g++ -Wall -g -std=c++11 ../../src/host.cpp -o app.exe -I${XILINX_XRT}/include/ -L${XILINX_XRT}/lib/ -lOpenCL -lpthread -lrt -lstdc++
v++ -c -t hw --platform xilinx_u200_gen3x16_xdma_1_202110_1 --config ../../src/u200.cfg -k vadd -I../../src ../../src/vadd.cpp -o vadd.xo
v++ -l -t hw --platform xilinx_u200_gen3x16_xdma_1_202110_1 --config ../../src/u200.cfg ./vadd.xo -o vadd.xclbin
ハードウェアをターゲットにするには、v++ -t
オプションを hw
に設定し、emconfigutil
ステップはエミュレーションにのみ適用されるため省略されます。その他のオプションはすべて同じままです。
ハードウェア ターゲットのビルドには数時間かかることがありますが、正確な所要時間は、デザインの複雑性、ビルドするコンピューターとその負荷によって異なります。
ビルドが完了したら、次のコマンドを使用して、AlveoU200 データセンター アクセラレータ カードを使用したシステムでアプリケーションを実行できます。
./app.exe
注記: Alveo カードがインストールされたサーバーでプログラムを実行してください。アプリケーションを別のコンピューター上に構築した場合は、目的のサーバーに接続して上記のコマンドを実行する前に、/opt/xilinx/xrt/setup.sh スクリプトを読み込む必要があります。
実行が正常に完了したことを示す TEST PASSED という同じメッセージが表示されます。u200/hw_emu フォルダーを確認すると、このビルドおよび実行プロセスの間に作成されたファイルを確認できます。これらのファイルの簡単な説明は、「ソフトウェア エミュレーションをターゲットに指定」を参照してください。
お疲れさまでした。これで、Alveo U200 カードで初めて Vitis アクセラレーション アプリケーションを実行できました。Vitis ツールをさらに学ぶには、Vitis チュートリアルを進めていってください。また、ホスト アプリケーションおよびカーネル コードの例を使用するには、 Vitis_Accel_例を参照してください。
次の手順¶
結果の表示とレポートの解析をクリックしてください。
ライセンス規約
Apache ライセンス、バージョン 2.0 (以下「ライセンス」) に基づいてライセンス付与されています。本ライセンスに準拠しないと、このファイルを使用することはできません。 ライセンスのコピーは、http://www.apache.org/licenses/LICENSE-2.0 から入手できます
適切な法律で要求されるか、書面で同意された場合を除き、本ライセンスに基づいて配布されるソフトウェアは、明示的または黙示的を問わず、いかなる種類の保証または条件もなく、「現状のまま」配布されます。 ライセンスに基づく権限と制限を管理する特定の言語については、ライセンスを参照してください。
Copyright© 2020-2021 Xilinx