ホスト プログラミング - 2021.1 日本語

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

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

Vitis™ 環境では、ホスト アプリケーションは、 ザイリンクス® ランタイム (XRT) ネイティブ C++ API または業界標準の OpenCL™ API を使用してネイティブ C++ で記述できます。XRT ネイティブ API については、ここで簡単に説明します。詳細は、XRT 資料サイトの XRT ネイティブ API を参照してください。OpenCL API を使用したホスト アプリケーションの記述については、OpenCL プログラミング を参照してください。

ヒント: XRT ネイティブ API を使用したホスト プログラミングの例については、Vitis_Accel_Exampleshost_xrt を参照してください。

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

  1. アクセラレータ デバイス ID を指定して .xclbin をロードします。
  2. カーネルとカーネル引数を設定します。
  3. ホストとカーネル間でデータを転送します。
  4. カーネルを実行し、結果を返します。
ネイティブ XRT API を使用するには、ホスト アプリケーションが xrt_coreutil ライブラリにリンクしている必要があります。XRT ネイティブ C++ API を使用してホスト コードをコンパイルするには、-std=c++14 以降の C++ 標準が必要です。次に例を示します。
g++ -g -std=c++14 -I$XILINX_XRT/include -L$XILINX_XRT/lib -lxrt_coreutil -pthread
重要: ホスト プログラムをマルチスレッドで実行する場合は、Vitis コア開発キットアプリケーションからの fork() システム呼び出しを呼び出す際に注意が必要です。fork() は、すべてのランタイム スレッドを複製するわけではありません。このため、子プロセスを完全な Vitis コア開発キットのアプリケーションとして実行することはできません。Vitis ソフトウェア プラットフォーム アプリケーションから別のプロセスを起動する場合は、posix_spawn() を使用することをお勧めします。