Vitis の概要および入門 - 2023.2 日本語

Vitis チュートリアル: 入門 (XD098)

Document ID
XD098
Release Date
2023-11-13
Version
2023.2 日本語

バージョン: Vitis 2023.2

img

Vitis 入門チュートリアルへようこそ。Vitis ツールは、データセンターまたはエンベデッド プロセッサプラットフォームのいずれかをターゲットとした FPGA アクセラレーション アプリケーションを開発するための統合フローを提供します。これは、FPGA アクセラレーションを開始するために Vitis アプリケーション アクセラレーション開発フローの詳細を知るには、最適なチュートリアルです。

このチュートリアルは、次の 3 つのフローに分かれています。

これらのフローは、同じホスト アプリケーションとアクセラレーション カーネルのソース コードを使用していますが、システムのビルドとインプリメンテーションに違いがあります。AMD Versal™ などの AMD アダプティブ SoC デバイスを使用する場合はエンベデッド システム デザイン フローを、AMD Alveo™ アクセラレータ カードを使用する場合はデータセンター アクセラレーション デザイン フローを、Vitis ツールの最新バージョンを使用する場合は Vitis Unified IDE フローを使用してください。

このチュートリアルでは、Alveo U250 データセンター アクセラレータ カードと、AMD Zynq™ UltraScale™ MPSoC ZCU102 プラットフォームの両方でビルドおよび実行する手順について説明します。これらの手順は、ほかの AMD カードでも簡単に使用できます。

このチュートリアルで説明する 2 つのフローはどちらも、5 つのパートで構成されており、Vitis フローのすべての重要な側面を説明する目的で設計されています。

  • パート 1: Vitis FPGA アクセラレーション フローの基本的な概念を 10 分以内で説明します。

  • パート 2: Vitis ツール、プラットフォーム、およびランタイム ライブラリのインストール手順を説明します。

  • パート 3: 残りのチュートリアルで使用される vector-add 例のソース コードについて説明します。

  • パート 4: 3 つの部分で構成され、コマンドライン フローでエンベデッド システム フローとデータセンター アクセラレーション フローについて説明し、新しい Vitis Unified IDE を紹介します。各フローごとに、デザインのコンパイル、リンク、および実行に必要なコマンドを説明します。

  • パート 5: [Analysis] ビューの概要と解析レポートの開き方と解析方法について説明します。

パート 1: 基本概念

Vitis 統合ソフトウェア プラットフォームは、C や C++ のような標準プログラミング言語を使用してアダプティブ SoC と FPGA でアクセラレーションされたアプリケーションを開発して配布するためのフレームワークを提供します。Vitis フローには、次のような標準ソフトウェア開発環境の機能がすべて含まれています。

  • x86 または Arm® プロセッサで実行されるホスト アプリケーション用のコンパイラまたはクロス コンパイラ

  • FPGA バイナリをビルドするためのクロス コンパイラ

  • コードの問題を特定して解決するのに役立つデバッグ環境

  • ボトルネックを特定し、アプリケーションを最適化するのに役立つパフォーマンス プロファイラー

Vitis プログラミングおよび実行モデルの理解

Vitis でアクセラレーションされたアプリケーションには、X86 プロセッサや Arm エンベデッド プロセッサなどの標準プロセッサで実行されるソフトウェア プログラムと、ハードウェア アクセラレーションされた関数またはカーネルを含む AMD デバイス バイナリ (xclbin) の 2 つのコンポーネントで構成されています。

  • ソフトウェア プログラム、またはホスト アプリケーションは C/C++ で記述され、従来の CPU 上で動作します。ソフトウェア プログラムは、ザイリンクス ランタイム ライブラリ (XRT) でインプリメンテーションされた XRT ネイティブ API を使用して、AMD デバイスのアクセラレーション カーネルとやりとりします。ホスト アプリケーションと必要な API コールの詳細は、ソフトウェア アプリケーションの記述を参照してください。

  • ハードウェア アクセラレーション カーネルは、C/C++ または RTL (Verilog または VHDL) で記述して、AMD デバイスのプログラマブル ロジック部分内で実行できます。コード要件の詳細は、Vitis 資料の C++ を使用した PL カーネルの開発または RTL カーネルのパッケージを参照してください。カーネルは標準 AXI インターフェイスを使用して Vitis ハードウェア プラットフォームと統合されます。

img

Vitis でアクセラレーションされたアプリケーションは、データセンターまたはエンベデッド アクセラレーション プラットフォームのいずれかで実行できます。

  • データセンター アクセラレータの場合、ソフトウェア プログラムは x86 サーバー上で実行され、カーネルは PCIe® の接続されたアクセラレーション カード上の FPGA 内で実行されます。

  • エンベデッド プロセッサ プラットフォームの場合、ソフトウェア プログラムは AMD MPSoC デバイスの Arm プロセッサ上で動作し、カーネルは同じデバイス内で動作します。

Vitis アプリケーションのソフトウェアおよびハードウェア コンポーネントは、標準化されたインターフェイス (XRT API および AXI プロトコル) を使用してやりとりするため、ユーザーのソース コードがプラットフォーム固有の詳細情報にほとんど依存しないので、異なるアクセラレーション プラットフォーム間で容易に移植ができるようになっています。

ソフトウェア プログラムがハードウェア カーネルとやりとりする方法は複数あります。最も簡単な方法では、次が実行されます。

  1. ホスト アプリケーションがカーネルで必要とされるデータを FPGA デバイスのグローバル メモリに書き込みます。

  2. ホスト プログラムが、カーネルの入力パラメーターを設定します。

  3. ホスト プログラムがカーネルの実行をトリガーします。

  4. カーネルは必要な計算を実行し、必要に応じてグローバル メモリにアクセスしてデータの読み書きをします。カーネルはまた、ほかのカーネルとの通信にストリーミング接続を使用し、1 つのカーネルから次のカーネルを渡します。

  5. カーネルがホストにタスクが完了したことを通知します。

  6. ホスト プログラムは、グローバル メモリからホスト メモリにデータを転送するか、または別のカーネルにデータの所有権を譲渡します。

Vitis ビルド プロセスの理解

Vitis ビルド プロセスでは、ホスト プログラムとカーネル コードの両方に対して標準のコンパイルおよびリンク プロセスに従います。

  • ホスト プログラムは、データセンター アプリケーション用の GNU C++ コンパイラ (g++) またはエンベデッド プロセッサ デバイス用の GNU C++ Arm クロス コンパイラを使用してビルドされます。

  • FPGA バイナリは、Vitis コンパイラ (v++) を使用してビルドされます。まず、カーネルは AMD オブジェクト (.xo) ファイルにコンパイルされます。その後、.xo ファイルがハードウェア プラットフォームにリンクされ、AMD デバイス バイナリ (.xclbin) ファイルが生成されます。v++ コマンドで説明されるように、Vitis コンパイラとリンカーは、さまざまなオプションを適用して、結果を調整および最適化します。

img

Vitis ビルド ターゲットの理解

Vitis コンパイラには、デバッグおよび検証に使用する 2 つのエミュレーション ターゲット、および実際の FPGA バイナリを生成するのに使用されるデフォルトのハードウェア ターゲットの 3 つのビルド ターゲットがあります。

  • ソフトウェア エミュレーション: カーネル コードは、ホスト プロセッサ上で実行されるようにコンパイルされます。これにより、ビルドと実行を高速に繰り返して反復アルゴリズムで調整していくことができます。このターゲットは、構文エラーを特定し、アプリケーションと共に実行されるカーネル コードをソース レベルでデバッグし、システムの動作を検証するのに便利です。

  • ハードウェア エミュレーション: カーネル コードがハードウェア モデル (RTL) にコンパイルされ、専用シミュレータで実行されます。ビルドおよび実行ループにかかる時間は長くなりますが、詳細でサイクル精度のカーネル アクティビティが表示されます。このターゲットは、FPGA に配置するロジックの機能をテストして、初期パフォーマンス見積もりを取得する場合に便利です。

  • ハードウェア: カーネル コードがハードウェア記述言語 (RTL) にコンパイルされ、ターゲットの AMD デバイス用に合成およびインプリメントされて、実際の FPGA で実行されるバイナリ ファイル (xclbin) が生成されます。

ヒント: エミュレーション フローを使用したアプリケーションのシミュレーションで説明されるように、データセンター プラットフォームとエンベデッド プロセッサ プラットフォームとではビルドおよびランタイムの環境に大きな違いがあります。これらの 2 つのフローについては、次のセクションで詳しく説明します。

次の手順

インストールおよび設定手順

Copyright © 2020–2023 Advanced Micro Devices, Inc

Terms and Conditions