次の図は、Alveo データセンター アクセラレータ カードで使用するアプリケーションをビルドして実行するために必要な手順を示しています。各手順は次にまとめていますが、その詳細はこの資料全体で説明します。
図 1. データセンター アクセラレータ カードのアプリケーション開発フロー
- x86 アプリケーションのコンパイル
- g++ コンパイラを使用して、x86 プロセッサで実行するホスト アプリケーションをコンパイルして、ホスト実行ファイルを作成します。ホスト プログラムは、PL 領域内のカーネルとインタラクティブです。ホスト アプリケーションの詳細は、アプリケーションの開発 を参照してください。ホスト アプリケーションのコンパイルの詳細は、ホスト プログラムのビルド を参照してください。
- PL カーネルのコンパイルおよびリンク
- PL カーネルは、ターゲット プラットフォームの PL 領域にインプリメンテーションできるようにコンパイルされます。PL カーネルは、Vitis コンパイラ (
v++
) または C/C++ カーネルの場合は Vitis HLS を使用し、RTL カーネルの場合はpackage_xo
コマンドを使用して、ザイリンクス オブジェクト形式 (XO) ファイルにコンパイルできます。カーネルのコーディングに関する詳細は、C/C ++ カーネル または RTL カーネル を参照してください。Vitis コンパイラは、カーネル XO ファイルをハードウェアプラットフォームにリンクして、アプリケーションのデバイス実行ファイル (.xclbin) を作成します。詳細は、デバイス バイナリのビルドを参照してください。
v++ --link
コマンドでザイリンクス オブジェクト (XO) ファイルをターゲット ハードウェア プラットフォームとリンクしてデバイス バイナリ ファイル (.xclbin) を作成し、これをターゲット プラットフォーム上のザイリンクス デバイスに読み込みます。 - アプリケーションの実行
-
Alveo データセンター アクセラレータ カードの場合、.xclbin ファイルはシステムを実行するために必要なビルド オブジェクトです。アプリケーションを実行する際は、ソフトウェア エミュレーション、ハードウェア エミュレーションを実行するか、実際の物理的なアクセラレータ プラットフォームで実行できます。詳細は、アプリケーション ハードウェア ビルドの実行を参照してください。
- ビルド ターゲットがソフトウェアまたはハードウェア エミュレーションの場合は、
emconfigutil
コマンドでターゲット プラットフォームのシミュレーション モデルを構築します。Vitis コンパイラは、デバイス バイナリ内にカーネルのシミュレーション モデルを生成し、アプリケーション実行でシステムのこのモデルを実行します。ビルド ターゲット で説明されるように、エミュレーション ターゲットを使用すると、デザインをビルドおよび実行して比較的速いサイクルで反復実行し、アプリケーションをデバッグしてパフォーマンスを評価できます。 - ビルド ターゲットがハードウェア システムの場合、ターゲット プラットフォームは物理デバイスです。Vitis コンパイラは Vivado Design Suite を使用して合成およびインプリメンテーションを実行してからタイミングを解決し.xclbin を生成します。アプリケーションを実行すると、ハードウェア上でシステムが実行されます。ビルド プロセスは高品質の結果が生成されるように自動化されます。ただし、ハードウェアに精通した開発者であれば、デザイン プロセスで Vivado ツールを完全に活用できます。
- ビルド ターゲットがソフトウェアまたはハードウェア エミュレーションの場合は、