x86 用のコンパイルおよびリンク - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語
ヒント: ツールを実行する前に、Vitis 環境の設定 で説明されるように、コマンド シェルまたはウィンドウを設定します。
ホスト アプリケーションの各ソース ファイルは、g++ コンパイラを使用してオブジェクト ファイル (.o) にコンパイルされます。
g++ ... -c <source_file1> <source_file2> ... <source_fileN>
生成されたオブジェクト ファイル (.o) がザイリンクス ランタイム共有ライブラリとリンクされ、実行可能なホスト プログラムが作成されます。リンクを実行するには、-l オプションを使用します。
g++ ... -l <object_file1.o> ... <object_fileN.o>

x86 用のコンパイルおよびリンクは、標準 g++ フローに従います。唯一の要件は、XRT ヘッダー ファイルを含め、XRT 共有ライブラリをリンクすることです。

ホスト アプリケーションは、ザイリンクス ランタイム (XRT) ネイティブ C++ API または業界標準の OpenCL™ API を使用してネイティブ C++ で記述できます。必要なインクルード ファイルとライブラリは、ホスト アプリケーションが使用する API と、ホスト コードの特定の要件によって異なります。

ネイティブ XRT API を使用するには、ホスト アプリケーションが xrt_coreutil ライブラリにリンクしている必要があります。コマンド ラインでは、次のコンパイルとリンクをまとめた例で示すように、いくつかの異なる設定が使用されます。

g++ -g -std=c++14 -I$XILINX_XRT/include -L$XILINX_XRT/lib -o host.exe host.cpp \
-lxrt_coreutil -pthread

ソース コードをコンパイルするには、次の g++ オプションが必要です。

  • -I$XILINX_XRT/include/: XRT インクルード ディレクトリ。
  • -std=c++14: C++ 言語標準を定義します。XRT ネイティブ C++ API を使用してホスト コードをコンパイルするには、-std=c++14 以降の C++ 標準が必要です。ただし、GCC 4.9.0 より古いバージョンでは、代わりに -std=c++1y を使用してください。

実行ファイルをリンクする際は、次の g++ オプションが必要です。

  • -L$XILINX_XRT/lib/: XRT ライブラリを検索します。
  • -lxrt_coreutil: リンク時に指定のライブラリを検索します。
  • -pthread: リンク時に指定のライブラリを検索します。

OpenCL API ホスト コードの構築

Vitis アプリケーションアクセラレーション開発フローでは、OpenCL API を使用してホスト アプリケーションをプログラムすることもできます。 g++ を使用した OpenCL アプリケーションの構築では、次のコマンドラインを使用します。
g++ -g -std=c++1y -I$XILINX_XRT/include -L$XILINX_XRT/lib -o host.exe host.cpp \
-lOpenCL -pthread

唯一の違いは、XRT ネイティブ API の xrt_coreutil ライブラリの代わりに OpenCL API 用の OpenCL ライブラリを使用するところです。

注記: Vitis Accel_Examples には、xcl2.cpp ソース ファイルおよび -I../xcl2 インクルード文が追加されている例があります。ホスト プログラムおよび g++ コマンドにこれらを追加すると、サンプル コードで使用されるヘルパー ユーティリティにアクセスできますが、通常は不要です。