カスタム makefile の記述 - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

カスタム makefile には、テンプレート makefile と同様の関数が用意されている必要があります。VSC でコンパイルする基本的な手順は、次に示すように、ほかの Vitis ツール フローと似ています。

v++ --compile my_acc.cpp -o my_acc.o
v++ --link my_acc.o -o hw.xclbin # also outputs hw.o
g++ -c main.cpp -o main.o
g++ -l host.exe main.o my_acc.o hw.o -lvpp_acc -lxrt_core -lpthread
これらのコマンドの注意点は、次のとおりです。
  1. v++ のコンパイル コマンドでは、カーネル名を指定する -k オプションは使用しません。これは、Vitis ツールが VSC システムをコンパイルできるように、VPP_ACC クラスから派生したクラスがソース コードで定義されているためです。
  2. v++ --compile コマンドでは、.xo ファイルではなく、.o ファイルが生成されます。これらのファイルは、Vitis コンパイラおよび g++ でハードウェアおよびホスト システムの構築に使用されます。
  3. v++ --link コマンドは、入力として .o ファイルを使用し、ハードウェア アクセラレータ用の .xclbin と、ホスト アプリケーションで必要とされ、g++ で使用される VSC ハードウェア ソフトウェア インターフェイス用のコンパイル済みオブジェクトを含む hw.o の両方を生成します。
  4. このコマンドには、それぞれのツールおよびモードに固有のオプション (--platform または --target など) も必要です。

または、共有 (ダイナミックにロード可能な) ライブラリを作成すると、アクセラレータをサードパーティ アプリケーションに簡単に統合することもできます。次の libmy_acc.so がその例です。

v++ -c my_acc.cpp -o my_acc.o
v++ -l my_acc.o kernel.xo -o hw.xclbin # also produces hw.o
g++ -c -fPIC app.cpp -o app.o 
## Command to create the shared library:
g++ -shared -fPIC -o libmy_acc.so app.o my_acc.o \
    -Wl,--whole-archive ${XILINX_VITIS}/system_compiler/lib/x86/libvpp_acc.a \
    -Wl,--no-whole-archive
## The link command using the shared library
g++ -l host.exe main.o -lmy_acc -lxrt_hw -lpthread