新機能 - 2020.1 Japanese

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

Document ID
UG1393
Release Date
2020-08-20
Version
2020.1 Japanese

Vitis 統合ソフトウェア プラットフォーム

  • 11 個のオープンソース Vitis ライブラリで 500 個以上の FPGA アクセラレーション関数を提供
  • 使い慣れたプログラミング コンストラクトを使用したカスタム C/C++ カーネル デザイン用の新しい Vitis HLS コンパイラ
  • Vitis アプリケーション内の RTL カーネル統合を改善
  • 運用されているカーネルと通信しやすくするためのより高位のザイリンクス ランタイム (XRT) ライブラリ API
  • カーネルおよびシステム パフォーマンスの視覚化を改善し、パフォーマンスを向上するための実行可能な情報を提供
  • エンベデッド プラットフォームのカスタム Vitis ターゲット プラットフォームをより簡単に作成できるよう改善
  • サーバー ベースで計算を制御するためのオープンソース ザイリンクス FPGA リソース マネージャー (XRM)
注記: Vitis 統合インストーラーは、Vitis コア開発キット 2020.1 をインストールします。Vitis ライブラリ、XRT、XRM、および Vitis ターゲット プラットフォームは、別のダウンロードとして提供されています。詳細は、https://japan.xilinx.com/vitis を参照してください。

Vitis 数理ファイナンス ライブラリ

v2.0 (2020.1) で使用可能な次を含む合計 127 個の FPGA アクセラレーション関数:
  • Python バインディング (pybind11) を使用した 5 つの新規レベル 3 (L3) ホスト呼び出し可能 API
  • 11 個の新規レベル 2 (L2) カーネル
  • 25 個の新規レベル 1 (L1) プリミティブ

Vitis BLAS ライブラリ

レベル 3 API の改善
次の改善が加えられています。
  • General Matrix Multiply (GeMM) 用に Python ホスト API を追加。
  • GeMM 浮動小数点ベンチマーク結果を Alveo U250 データセンター アクセラレータ カードに使用可能。
  • Python API を使用して MLP Keras フレームワークに新しいアプリケーション例を追加。
  • 4 層の完全に接続された MLP 推論を AWS C5n.4xLarge ノードの CPU と比較して 3 ~ 12 倍スピードアップ。
パフォーマンスを改善
次のパフォーマンス改善が確認されています。
  • GeMM API を 2019.2 と比較して 3 ~ 4 倍スピードアップ。
  • サイズ 1024 未満の行列で、float 型の MKL GEMM API と比較して 2 ~ 50 倍スピードアップ。

Vitis ソルバー ライブラリ

新規レベル 1 関数
sqrt 関数を追加。

Vitis DSP ライブラリ

新しいパフォーマンス ベンチマーク
次のパフォーマンス ベンチマークが追加されました。
  • FFT API のベンチマーク用にレベル 2 カーネルを追加。
  • 短時間でプロトタイプおよびパフォーマンス評価。
レベル 1 関数の例
新規 2D FFT 固定小数点および浮動小数点の例。

Vitis ビジョン ライブラリ

Letter Box (レベル 3)
アスペクト比を保持したイメージ スケーリング アルゴリズム。
ISP パイプライン サンプル デザイン (Vitis_Libraries/vision/L3/examples/)
  • エンド ツー エンド ストリーミング カメラ プロセッシング パイプラインを示す。
  • Channel Gain、Demosaic、Auto White Balance、Gamma Correction、Bad Pixel Correction などの Vitis ビジョン関数を使用。
自動ホワイト バランス アルゴリズム
改善
Vitis HLS と互換
カスタム カーネルを設計しやすく改善。
  • 以前はポインターであった xf::cv::Mat クラス メンバー datahls::stream 型に変更。
  • xf::cv::Mat のデータ アクセスに使用される readwriteread_float、および write_float メンバー関数もそれに応じてアップデート。
  • Array2xfMat および xfMat2Array ユーティリティ関数を改善。
  • L2 関数と同様、HLS フローをターゲットにする L1 ホスト関数をインターフェイスで xf::cv::Mat ではなくポインターが使用されるようアップデート。それに伴い、すべてのテストベンチおよびコンフィギュレーション ファイルもアップデートされています。
ライブラリ インフラストラクチャを改善
インフラストラクチャに次の改善が加えられています。
  • ソフトウェアおよびハードウェア エミュレーションを使用した検証を高速にするため L2/L3 makefile で小さなイメージを使用。
  • Vitis IDE でプロジェクトの自動作成をサポートするためすべての JSON ファイルをアップデート。
  • makefile と JSON ファイルを examples ディレクトリの build フォルダーからホスト ソース ファイルと共に移動。
  • エンベデッド デバイスのエミュレーション フローのすべての makefile を Perl ベース スクリプトを使用するようアップデート。対応するスクリプトは ext/make_utility フォルダーに追加されています。
  • 各 L1 例内の data フォルダーを削除。すべての入力引数は、makefile および JSON ファイルの最上位 data フォルダーに含まれます。
2020.1 コード ベースには下位互換性なし
ライブラリのすべての関数を 2020.1 Vitis/ Vivado® ツールを使用してビルドする必要があります。このリリースに含まれる関数はどれも、前バージョンの Vitis または Vivado では使用できません。

Vitis データベース ライブラリ

コンパウンド ソート API (compoundSort
以前は 3 つの並べ替えアルゴリズム モジュールが提供されていましたが、この新しい API には insertSort および mergeSort がまとめられており、オンチップ並べ替えによりスケーラブルなソリューションが提供されます。32 ビットの整数キーを使用する場合、1 つの SLR の URAM リソースで 2M エントリにスケーリングするデザインをサポートできます。
ハッシュ結合 (hashJoinV3) での HBM 帯域幅の使用を改善
2019.2 Alveo U280 シェルでは ECC がイネーブルになっており、HBM へのサブ ECC サイズの書き込みが read-modify-write になり、帯域幅が一部無駄になっていました。この問題を回避するため、このリリースの hashJoinV3 プリミティブは 256 ビット ポートを使用するように変更されています。

Vitis ユーティリティ ライブラリ

読み出し専用キャッシュ
この API は、オンチップ メモリ (URAM) の DDR/HBM から最近読み込まれた履歴データを格納します。メモリがランダムにアクセスされる場合に DDR/HBM アクセスが削減されます。
ハッシュ結合 (hashJoinV3) での HBM 帯域幅の使用を改善
2019.2 Alveo U280 データセンター アクセラレータ カードでは、ECC がイネーブルになっていました。HBM へのサブ ECC サイズの書き込みが read-modify-write になり、帯域幅が一部無駄になっていました。この問題を回避するため、このリリースの hashJoinV3 プリミティブは 256 ビット ポートを使用するように変更されています。
e 信号なしの AXI マスター読み出し
ストリームのレシーバーで処理する要素数がわかっている場合に、この API で AXI マスターからストリームへのバッファー付き読み出しが提供されます。

Vitis グラフ ライブラリ

グラフ解析をアクセラレーションするパフォーマンス最適化済み関数。ユース ケースには、機械学習、ゲノミクス、推薦システム、検索エンジン、ソーシャル ネットワーク分析、トラフィック ベースのパス プランニングなどがあります。

レベル 2 カーネル関数として提供。

中心性分析
ページ ランク アルゴリズム
経路探索
単一始点最短経路アルゴリズム
コネクティビティ分析
弱く接続されたコンポーネント、強く接続されたコンポーネント
コミュニティ検出
ラベル伝搬および三角カウント アルゴリズム
検索
幅優先探索アルゴリズム
グラフ フォーマット
角度の計算および CSR と CSC 間のフォーマット コンバーター

Vitis データ分析ライブラリ

データ分析パイプラインをアクセラレーションするパフォーマンス最適化済み関数を提供します。

分類
  • 決定木
  • ランダム フォレスト
  • ロジスティック回帰
  • 線形サポート ベクター マシン
  • ナイーブ ベイズ
回帰
  • 最小 2 乗回帰
  • LASSO 回帰
  • リッジ回帰
クラスタリング
K-Means
最適化フレームワーク
  • 確率的勾配降下法
  • L-BFGS
パフォーマンスのハイライト
次の改善が加えられています。
  • ナイーブ ベイズのトレーニングで、Intel® Xeon™ CPU E5-2667 を使用した Spark MLLib に対し、U250 のデータセット news20 で 319 倍のアクセラレーションを達成。
  • 決定木のトレーニングで、Intel Xeon CPU E5-2667 を使用した Spark MLLib に対し、U250 のデータセット Heterogeneity Activity Recognition で 23 倍のアクセラレーションを達成。
  • ランダム フォレストのトレーニングで、Intel Xeon CPU E5-2667 を使用した Spark MLLib に対し、U250 のデータセット HIGGS で 15 倍のアクセラレーションを達成。

Vitis コンパイラおよびリンカー (v++)

v++ がデフォルトで Vitis HLS コンパイラを呼び出し
Vitis HLS に含まれるすべての改善点が含まれます。
v++ リンカーの改善点
ストリーミング接続にユーザーが指定した深さの FIFO を挿入する新しいリンカー オプションを提供。ストリーミング インターフェイスを接続する際、v++ で必要に応じて自動的にクロック乗せ換え (CDC) ロジックとデータ幅コンバーター (DWC) ロジックも追加されます。これにより、手動でインスタンシエートする必要はなくなります。
新規 v++ --package 段階
エミュレーションおよびハードウェア プラットフォームでデザインをブートするのに必要なすべてのコンポーネントの生成およびパッケージをイネーブル。これはコンパイルおよびリンク プロセスの最終段階で、エミュレーションおよびハードウェア ターゲットでデザインをブートするためのコンポーネントを生成します。オプションおよび使用方法などの詳細は、 『Vitis 統合ソフトウェア プラットフォームの資料』 (UG1416) の Vitis アプリケーション アクセラレーション開発フロー を参照してください。
RTL カーネル インポートの改善
Vitis アプリケーション内で RTL IP を簡単にパッケージおよび再利用可能。Vitis で必要なすべてのファイル (kernel.xml) は、component.xml ファイルから自動的に生成されます。これにより、RTL カーネル デザイン プロセスがシンプルになり、エラーが発生しやすくなります。
v++ の使いやすさと生産性の改善
これには、メッセージの改善、IP キャッシュ共有、すべての Vivado 段階での Tcl フックのサポートなど、さまざまなエリアでの改善が含まれます。
カスタマイズ可能な許容誤差を含むユーザー指定の FREQ_HZ をサポート
v++ リンカー オプションで誤差を含めてクロック周波数を指定すると、クロッキング接続は自動的にツールで処理されます。これは、このリリースのエンベデッド プラットフォームにのみ使用できます。

Vitis HLS

  • C ベース カーネル コンパイル用の新しい高位合成ツール エンジンおよび Vitis HLS インターフェイスを提供。
  • Vitis HLS では、C++14 サポート (constexpr、variadic テンプレート、タイプ推論の自動化、初期化子セパレーター、文字列リテラル、ユーザー定義のリテラル、範囲ベースの for-loops、static_assert など) を提供。
  • ターゲット フロー (vitis または vivado) に基づく 2 つの動作プリセットを提供。このターゲット フローは、[Synthesis] の下の [Solutions Settings] で選択するか、Tcl で open_solution で新しい flow_target オプションを使用して指定します。
  • Vivado HLS から Vitis ツールでの C/C++ カーネルを設計するため Vitis HLS に移行する方法は、 『Vitis HLS 移行ガイド』 (UG1391) を参照してください。
  • aligned および packed 属性と互換性のあるポートの GCC 構造体レイアウト スタイルにより、ホスト ソフトウェア アプリケーションとの互換性を改善。
  • 新しい disaggregate プラグマで構造体メンバーを強制的に個別要素に分割可能。
  • 新しい bind_op および bind_storage pragmas により演算子と RAM 要素を制約可能。
  • カーネル ポートの暗示的インターフェイス合成: インターフェイス プラグマの指定はオプションになったので、カーネル コードの詳細レベルは下がります。
  • 外部メモリ タイプをカスタマイズ (デフォルトの両ポートではなく 1 つのポートのみを使用するなど) できるよう、インターフェイス プラグマ ap_memory および bram に新しい storage_type オプションを追加。
  • IDE の簡素化された階層サマリ レポートにより、関数階層、タイミング、レイテンシ、スループット、使用率を簡単に確認し、パイプラインおよびデータフロー プラグマが適用されたことを確認可能。
  • C/C++ カーネルに新しい自動ポート サイズ変更オプションを追加。これにより、カーネル ポートがプラットフォーム インターフェイス幅とより一致するようになり、スループットが増加します。
  • GitHub の Vitis アクセラレーション C++ カーネル例の一部としてコード例を提供。Vitis HLS には独自の新しいサンプル リポジトリもあり、これも GitHub から入手できます。
  • ラベルの付いていないループにマシンで生成されたラベルを割り当て、デザインの異なるループを簡単に識別可能。
  • [Dataflow] ビューを改善。
  • C/RTL 協調シミュレーション ウィジェットのデザインを変更し、Vivado XSim をデフォルトのシミュレータとし、新しいチャネル プロファイリング オプションを追加。
  • std::complex 型の配列を no_ctor 属性を使用してデーターフロー用にスループット最適化することにより、パフォーマンスを制限する初期化を回避。
  • RTL ブラック ボックス フローで JSON コンフィギュレーション ファイルが作成するウィザードを提供。
  • 協調シミュレーションでランダムにストールできるようになり、インターフェイスにストールがある状態でカーネルを検証可能。
  • C シミュレーション後の関数グラフによりコード構造を表示。
  • レポートに、ループおよび関数のレイテンシを実時間 (レイテンシのクロック サイクル数 * 周期) で表示。

IDE

Vitis ライブラリの統合
Vitis IDE で、Vitis アクセラレーション ライブラリをダウンロードし、ライブラリ サンプル プロジェクトを作成し、ライブラリを追加してアクセラレーション アプリケーションへのパスを含めることが可能。
New Project ウィザードを改善
New Project ウィザードをわかりやすく改善。
  • エラーまたは警告メッセージをレポート。
  • Template Selection ページの 1 ページにより多くのアプリケーション テンプレートをリスト。
非プロジェクト モードでのデバッグをサポート
コマンド ライン モードで生成されるアプリケーションを、Vitis IDE を使用して 1 つのコマンドでデバッグ可能。
32 ビット アプリケーションのコンパイル
Arm® Cortex-A53 用の 32 ビット アプリケーションのコンパイルを復活。
新しいプロジェクト タイプおよびプロジェクト関係
オプションの改善。

エミュレーション

エミュレーションでのデバッグを改善
次の改善が加えられています。
  • ビルド時のすべてのシミュレーション エラーを v++ ログにまとめて記録。
  • XSim をデフォルトのシミュレータとして使用。
  • ビルトイン チェックおよび DRC を増加。

プロファイリング、解析、および視覚化

プロファイル サマリ レポートとデザイン ガイダンス レポートの改善
プロファイル サマリ レポートの構造をナビゲートしやすいよう改善。デザイン ガイダンス レポートに新規ルールを追加し、構造を変更してメッセージをわかりやすくしました。
デバイス消費電力セクションを新しく追加
プロファイル サマリ レポートの新規セクションには、ボードの消費電力情報が表示されます。
システム パフォーマンスをより視覚的に確認
システム パフォーマンスを視覚的に確認しやすくするため次を実行可能。
  • ハードウェア エミュレーションとハードウェア実行のシステム ダイアグラムにパフォーマンス データを重ねて表示。
  • 呼び出し回数、CU 使用率 (%)、合計時間 (ms)、平均時間 (ms) などの計算ユニット (CU) 統計を表示。
  • CU ポートに読み出し/書き込みデータ転送レートをアノテート表示。
レポート間のクロスプローブ
実行サマリのガイダンス レポートには、新しい次の 2 つのタイプのリンクが含まれます。
デザイン オブジェクト リンク (krnl_vadd など)
プロファイル サマリ レポートおよびシステム ダイアグラムでオブジェクトをクリックして選択可能。
値のリンク (6.789 KB など)
レポートの関連セクションでクリックしてプロファイル サマリを開くことが可能。
プロファイル サマリのアーカイブ
複数のビルドおよび実行のプロファイル サマリ アーカイブを保存し、反復間でのパフォーマンス改善を確認、解析用にチーム内で結果を共有可能。
アプリケーションのビルドおよび run 間でレポートを比較
複数アプリケーションのビルドおよび実行間でレポートを比較して最適化を繰り返しインプリメントすることにより、簡単にパフォーマンスを改善可能。サポートされるレポートは、カーネル見積もり、システム見積もり、タイミング サマリ、ビルド ログなどです。
改善されたリンク付きガイダンス
Vitis および Vitis HLS の両方に新しいガイダンス メッセージを追加。ガイダンス メッセージには、関連のソリューション/トラブルシューティング資料へのリンクが含まれます。フィードバック カテゴリ (スループット、レイテンシ、インターフェイス、メモリ、カーネル) を改善。
ガイダンスからシステム ダイアグラムへのクロスプローブ
改善

デバッグ

タイムライン トレースの連続読み出し
次の機能が追加されました。
  • 通常のユーザー指定の間隔でタイムライン トレース データを読み出すことによりより正確な値を算出可能。
  • アプリケーションのハング/クラッシュが発生した場合でも、デバッグ用にデバイス関連のプロファイル情報を取得可能。
  • アプリケーション実行中にトレース データを継続してオフロード可能。
  • FIFO オフロードおよび DDR/HBM オフロードの両方をサポート。
オーバーヘッドの少ないタイムライン トレースで実行を高速化
この機能には、次が含まれます。
  • オーバーヘッドの少ないトレースにより、デバッグに最小限必要なトレースが生成され、アプリケーションのより高速な実行が可能。
  • ホスト側のデータのみを含む簡略化されたタイムライン トレース レポートを生成し、デバイス側のプロファイリングのオーバーヘッドをなくし、パフォーマンスへの影響を大幅に削減。
  • xrt.ini ファイルでイネーブルまたはディスエーブルにすることが可能、デザインを再コンパイルする必要なし。
ライブ波形ビューアーの [TLM Transaction] ビュー
Vitis ハードウェア エミュレーション フローのライブ波形ビューアーで AXI-MM インターフェイスのトランザクション レベルの詳細を表示。

XRT

ザイリンクス ランタイムの詳細は、 『XRT リリース ノート』 (UG1451) を参照してください。

XRM

ザイリンクス FPGA リソース マネージメント (XRM) は、XRT API に基づくサーバー ベースの計算制御機能を提供します。

XRM は、ローカル サーバーで計算ユニット (xclbins のサブセット) を管理する API のセットです。複数のアプリケーションをサーバーに接続されたさまざまなカードで実行できます。XRM は需要と使用可能かどうかに基づいて計算ユニットを割り当てます。

XRM はオープンソースで、https://github.com/Xilinx/XRM から入手できます。

エンベデッド プラットフォーム

このリリースには、次のエンベデッド プラットフォームのアップデートが含まれます。
わかりやすいプラットフォームの命名規則

<Vendor>_<Board>_<Feature>_<Supported Vitis Tool Version>_<Release Version>

例: xilinx_zcu102_base_dfx_202010_1

コンパイル済み共通 Linux コンポーネントを提供
簡単でそのまま使用可能なフロー。評価フローでは、Vitis および PetaLinux をインストールする必要はありません。
ソフトウェア パッケージ マネージャーおよびパッケージ フィード
一般的なソフトウェア パッケージをオンザフライでインストール可能。PetaLinux からコンパイルする必要はありません。
デフォルトの rootfs に EXT4 を使用
rootfs は initramfs のように DDR メモリ空間を使用しません。ファイル システムへの変更はリブート後にも保持されます。
ポスト リンク スクリプトは不要
v++ で割り込み信号を自動的にリンクでき、XRT でこれらの信号を認識してソフトウェアで制御できます。
より簡単な Vitis ターゲット プラットフォームのエクスポート
新しいウィザードを使用して、ザイリンクス シェル アーカイブ (XSA) を Vitis ターゲット プラットフォームとしてパッケージおよびエクスポートできます。