Vitis システム コンパイル モードは、標準 Vitis カーネル (.xo) およびアプリケーション アクセラレーション デザイン フローでも使用できます。したがって、VCS は Vitis HLS C++ カーネル ( 『Vitis 高位合成ユーザー ガイド』 (UG1399) を参照) または RTL カーネル ( 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393) を参照) と共に使用できます。
VSC アクセラレータ コード sc_acc.cpp と Vitis カーネル 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.o、sc_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 つのバッファー転送シナリオについて説明します。