ソフトウェア アプリケーションの記述 - 2023.2 日本語

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

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

AMD Vitis™ 環境では、ソフトウェア アプリケーション コンポーネントは、ザイリンクス ランタイム (XRT) のネイティブ API を使用してネイティブ C++ で記述できます。XRT ネイティブ API については、ここで簡単に説明します。詳細は、XRT 資料サイトの XRT ネイティブ API を参照してください。アプリケーション コンポーネントは通常、データセンター アクセラレーションでは、x86 サーバー上で実行されるので「ホスト アプリケーション」と呼ばれ、PL カーネルや AI エンジン グラフと同じデバイスのエンベデッド プロセッサ ベース システムでは、単に「アプリケーション」と呼ばれます。

ヒント: XRT ネイティブ API を使用したソフトウェア アプリケーション プログラミングの例については、Vitis_Accel_Exampleshost_xrt を参照してください。

通常、ホスト アプリケーションの構造は次の 3 つの手順に分けることができます。

  1. プラットフォーム デバイス ID を指定して .xclbin をロード
  2. PL カーネルとカーネル引数の設定
  3. ソフトウェア アプリケーションと PL カーネル間でデータを転送
  4. AI エンジン グラフ アプリケーションのロードと起動
  5. システムを実行し、結果を表示

AMD Versal™ アダプティブ SoC デバイスの場合、PS アプリケーションが PL ハードウェアと AI エンジン グラフ アプリケーションを含むヘテロジニアス システム全体を管理します。詳細は、 『AI エンジン ツールおよびフロー ユーザー ガイド』 (UG1076) の「PS ホスト アプリケーションのプログラミング」を参照してください。

ネイティブ XRT API を使用するには、ホスト アプリケーションが xrt_coreutil ライブラリにリンクしている必要があります。次に例を示します。
g++ -g -std=c++17 -I$XILINX_XRT/include -L$XILINX_XRT/lib -lxrt_coreutil -pthread

XRT ネイティブ C++ API を使用してホスト コードをコンパイルするには、-std=c++17 の C++ 標準が必要です。-std=c++17 は 4.9.0 から GCC に導入されているので、4.9.0 より古い GCC バージョンでは、代わりに -std=c++1y を使用します。

重要: ホスト アプリケーションをマルチスレッドで実行する場合は、fork() システム呼び出しを呼び出す際に注意が必要です。fork() は、すべてのランタイム スレッドを複製するわけではありません。このため、子プロセスを完全な Vitis コア開発キットのアプリケーションとして実行することはできません。Vitis ソフトウェア プラットフォーム アプリケーションから別のプロセスを起動する場合は、posix_spawn() を使用することをお勧めします。