XO と RTL カーネルの相互運用性 - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語
重要: ここで説明する XO デザイン フローのソフトウェア エミュレーションは、サポートされません。

Vitis システム コンパイル モードは、標準 Vitis カーネル (.xo) およびアプリケーション アクセラレーション デザイン フローでも使用できます。したがって、VCS は Vitis HLS C++ カーネル ( 『Vitis 高位合成ユーザー ガイド』 (UG1399) を参照) または RTL カーネル ( 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393) を参照) と共に使用できます。

図 1. XO フロー

VSC アクセラレータ コード sc_acc.cppVitis カーネル kernel.xo を使用する場合、プロジェクトをビルドするために必要なコマンド ラインは次のようになります。

v++ -c sc_acc.cpp -o sc_acc.o
v++ -l sc_acc.o kernel.xo -o hw.xclbin # also produces hw.o
 
g++ -c host.cpp -o host.o
g++ -l -o host.exe host.o sc_acc.o hw.o -lvpp_acc -lxrt_hw -lpthread

説明されたシナリオでは、kernel.xo はコンパイル済みです。したがって、VSC アクセラレータ コード (sc_acc.cpp) は、上記の最初の v++ コマンドに示すようにコンパイルする必要があります。この出力は、sc_acc.o オブジェクト ファイルです。v++ コマンドは、VSC アクセラレータ コードを認識し、オブジェクト ファイルに適切にコンパイルします。

v++ --link コマンドが実行され、.xo ファイルと .o ファイルが .xclbin にリンクされます。hw.xclbin ファイルに加えて hw.o ファイルが生成されることに注意してください。hw.o ファイルは、次の手順に示すように、g++ コマンドでホスト アプリケーションをコンパイルするために必要です。

g++ コマンドは、ホストコードをコンパイルし、さまざまなオブジェクト ファイル (host.osc_acc.o、および hw.o) をリンクして host.exe 実行可能ファイルを生成します。リンク プロセスに必要な vpp_acc および xrt_hw ライブラリが g++ コマンド ラインに追加されていることに注意してください。

標準 Vitis フローでは、ネイティブ XRT または OpenCL コードを使用して、ユーザー ホスト コードが .xclbin を明示的にロードする必要があります。VSC-XO 混合フローでも、ユーザー ホスト コードは明示的に .xclbin をロードできますが、必須ではありません。代わりに、API vpp::sc::get_xrt_device() を呼び出すと、デバイス ID を取得できます。

バッファー オブジェクトは、ネイティブ XRT と VSC API 間で簡単に渡すことができます。次のセクションでは、2 つのバッファー転送シナリオについて説明します。