Vitis ソフトウェア プラットフォーム最新情報

2022.2

Vitis ソフトウェア プラットフォーム 2022.2 リリースのハイライト

Versal™ AI エンジン アレイ向けの新しい Vitis™ ライブラリ機能

  • DSP ライブラリ機能 – 拡張機能
  • ソルバー ライブラリ機能
  • ビジョン ライブラリ機能
  • 超音波診断ライブラリ機能

Versal AI コアおよび AI エッジ シリーズのデザイン フロー機能強化

  • AI エンジン アレイにおけるカーネルの相対配置 - 性能と使用率が向上
  • AIE x86 シミュレータの機能強化 - x86 シミュレータでのデッドロックのモデリングが改善
  • AIE API の強化 - Radix 3/5 FFT および Matrix 'x' Vector API が追加
  • Versal デザインのプロファイリングおよびデバッグ機能が強化 - デッドロック検出、大規模なトレース データ収集、RTL/Python テストベンチのサポート
  • Vitis でヘテロジニアス デザイン向けの新しいシミュレーション オプション

Vitis 最新情報 (カテゴリ別)

以下の各セクションを展開して Vitis 2022.2 の新機能と拡張機能の詳細を確認してください。サポートされているプラットフォーム、動作の変更、既知の問題については、Vitis 2022.2 リリース ノートのアプリケーション アクセラレーション フローおよびエンベデッド ソフトウェア開発フローを参照してください。

DSP ライブラリ機能

  • AI エンジンでの Super sample rate (SSR) FIR フィルターのインプリメンテーションをサポート 係数リロード機能、ダイナミック ポイント サイズ
  • AI エンジン アレイ向けの FFT 関数に FFT のウィンドウイング要素を追加

ソルバー ライブラリ機能

  • Quadrature Rotation (QR) 分解
  • Cholesky 分解

ビジョン ライブラリ機能

  • AI エンジン アレイ向けの 4 つの新しいビデオ機能

超音波診断ライブラリ機能

  • 医療用超音波デザインの構築を支援する各種機能
  • AI エンジン アレイにおけるカーネルの相対配置を制御する機能 - 性能と使用率が向上
  • x86 シミュレータでの AIE デッドロックのモデリングが改善
  • 新しい AIE API - Radix 3/5 FFT および Matrix 'x' Vector API が追加
  • HW エミュレーションでの AI エンジンのプロファイリング レポートを生成
  • AI エンジンと PL ベース デザインに対して XSDB (ザイリンクス システム デバッガー) を使用したデッドロックの検出
  • ザイリンクス ランタイム (XRT) 制御による、PLIO での AI エンジン イベント トレースの継続的なオフロード
  • x86 ホスト マシンの PS アプリケーションで SW エミュレーションをサポート
  • HW エミュレーションで、RTL の代わりに SystemC の機能モデルを使用可能
  • シンプルな RTL テストベンチまたは Python スクリプト ベースのトラフィック ジェネレーターを使用して AI エンジン カーネルのシミュレーションが可能
  • Vitis™ アナライザーを使用して HW エミュレーション中に AI エンジンの状態を解析

Vitis 2022.2 環境の新しいシミュレーション オプション: プロセッサ システム x86 シミュレーションおよび AI エンジン x86 シミュレーション: x86 シミュレータを使用してプログラマブル ロジック シミュレーションを実行可能

1670184-vitis-simulation-flow

Versal AI エンジン デザインの主な機能

  • AI エンジンの DSP ライブラリ ブロック デザインにグラフ制約を追加できる – 性能と使用率が向上
  • AIE デザイン向けサイクル近似シミュレーションの新機能
  • AI エンジン グラフ インポート ブロックによる RTP (Run Time Parameter) ポートの自動検出
  • DSP ライブラリ ブロックの機能強化と追加

一般的な機能

  • PL および AIE アレイを使用したヘテロジニアス システム デザイン向けのハードウェア検証フロー
  • Vitis Model Composer Hub ブロックが更新され、ヘテロジニアス デザインをサポート
    • 有効な AI エンジン、HDL、HLS サブシステムの自動検出
  • ハードウェア検証フローが強化され、Versal プラットフォームに対しては HDL ブロックのみを含むデザインおよび HDL - AI エンジン間ブロックを含むデザインをサポート
  • タスク レベルの並列性を重視したコーディング スタイルをサポート
    • C シミュレーションの高速化と QoR 向上
  • 性能とタイミングを強化​​​
    • バースト推論が改善
    • Unroll、Pipeline、Array_Partition、inline の各プラグマを自動的に推測し、性能を向上させる
    • タイミング精度の向上により、より高い周波数でタイミング クロージャを達成可能
  • その他の機能​​​
    • 解析とデバッグ: RTL 合成後でも C コードに挿入された printf をサポート
    • 使いやすさ向上: 指定されたトランザクション間隔を自動で達成するための新しいパフォーマンス プラグマ
    • FFT および FIR IP​ で HLS::stream インターフェイスがサポートされる
2022.1

Vitis ソフトウェア プラットフォーム 2022.1 リリースのハイライト

Versal™ ACAP および AI エンジンの Vitis™ フローが向上

  • 1 つのスタティック領域と 1 つの DFX 領域を備えたザイリンクス ベースの DFX プラットフォームをサポート
  • AIE プロファイリングでストール/デッドロックの検出をサポートし、Vitis アナライザーで表示するための AI エンジン ステータス (エラー イベントを含む) を生成できる
  • x86sim、AIEsim、SW エミュレーションの外部トラフィック ジェネレーターの柔軟性が向上し、シミュレーションやエミュレーション フローへの挿入が簡単になる
  • Vitis Model Composer によるハードウェアでの検証、Linux および HW エミュレーションが可能

Vitis (DC および Vitis HLS)

  • ダイナミック領域の生成プロセスをサポートする新しいレポート機能が追加され、3 つの新規/アップデート済みレポートでフロー レポートが強化
  • Vitis の PL プロファイリングが改善され、トレースをメモリ リソース (推奨) または PL の FIFO にオフロードして性能を向上させる
  • ランタイム プロファイルを表示できる新しい Timeline Trace ビューアーでは、シミュレーション後もそのまま Vitis HLS GUI でタイムラインを確認できる
  • Vitis HLS で新しいパフォーマンス プラグマ (set_performance_directive) を使用して、よりスマートな構築が可能
  • L3 API が強化 (カーネルの呼び出しを 1ms 短縮) されパフォーマンスが向上した Vitis グラフ ライブラリ

Vitis 最新情報 (カテゴリ別)

次の各セクションを展開して Vitis 2022.1 の新機能と拡張機能の詳細を確認してください。サポートされているプラットフォーム、動作の変更、既知の問題については、Vitis 2022.1 リリース ノートのアプリケーション アクセラレーション フローおよびエンベデッド ソフトウェア開発フローを参照してください。

  • 新たにゲノム解析用アクセラレータ ライブラリを追加 (L1、L2、L3)
  • グラフ ライブラリ、 L3 が強化されパフォーマンスが向上
  • Vitis データベース ライブラリ、GQE Multi-Functional カーネル
  • ビジョン ライブラリに新しい機能を追加
  • Vitis AIE ビジョン ライブラリに新しい機能を追加/強化
  • Vitis AIE DSP ライブラリ、FIR リサンプラーが FIR フラクショナル インターポレーターにとって代わる
  • Vitis コーデック ライブラリの新しい API: API jxlEnc、API ‘leptonEnc’、API ‘resize’、API ‘WebpEnc’
  • ZLIB 圧縮が改善、8KB ソリューション向けのカスタマイズされたオクタコア圧縮
  • ZLIB 解凍が改善、8KB ファイル サイズ向けのカスタマイズされた IP
  • Platform Capability Query が改善
  • HBM の使いやすさ向上、カーネル M_AXI に対して HMSS への特定の S_AXI エントリ ポイントを選択可能、コンフィギュレーション ファイルからの RAMA 挿入
  • ハードウェアでの AI エンジンの自動ストール/デッドロックおよび分析
  • 自動ステータス出力の分析
  • 自動ステータス出力の分析 – バッファー
  • ハードウェアでの手動ステータス出力の分析
  • 手動ステータス出力の分析
  • AI エンジン イベントのトレースの強化
  • 外部トラフィック ジェネレーター AIEsim
  • ハードウェアでの AI エンジン プロファイリングの向上
  • ブロードキャスト ウィンドウ向けの AI エンジン サポート
  • Vitis AI エンジン コンパイラの強化されたグラフ プログラミング モデル
  • Vitis AI エンジン コンパイラ - ADF グラフの PLIO/GMIO
  • 分析機能が強化、新しい Timeline Trace ビューアー
  • コーディング スタイルが強化、ストリーム オブ ブロック タイプで Array Partition をサポート
  • Pragma Abstraction、新しいパフォーマンス プラグマ (および指令)
  • Vitis Core 「ワンライナー」、Vitis HLS - 新しい Timeline Trace ビューア―、PERFORMANCE プラグマ、ストリーム オブ ブロック サポート ウィンドウ
  • 新しいビューアー
    • デザインに含まれるすべての生存関数 (モジュール化された関数など) のランタイム プロファイルを表示
    • 特に、協調シミュレーション後にデータフロー領域のビヘイビアーを確認するのに便利
    • Vitis HLS にネイティブ対応 - XSIM 波形ビューアーの起動が不要になった (外部ツール)
  • Vitis アナライザーの改善、タイムライン カスタマイズの保存/復元
  • レポート機能の強化、report_qor_assessment、xclbin クロッキング情報、Vivado オートメーション サマリ
  • プロファイリングの強化、新しい PL プロファイリング インフラ、複数のメモリ モニターを挿入するために複数の trace_memory オプションを追加可能 (HW のみ)、SLR0 ~ DDR0 のすべての CU と SLR1 ~ DDR1 のすべての CU でトレース データをオフロードするための v++ リンカーのサンプル config ファイル
  • Versal 用に Bootgen GUI をアップデート
  • ツールチェーンの更新
  • XSCT、STAPL 対応、リンカー スクリプト生成コマンドを追加
  • システム コンパイル フロー、システム コンパイルの資料を参照
  • 自動再起動のソフトウェア エミュレーション サポートと、常時稼働カーネルのメールボックス サポートを追加
  • フリーランニング カーネルは sw-emu で while(1) が不要
  • 外部トラフィック ジェネレーターのソフトウェア エミュレーション サポートを追加
  • ハードウェア エミュレーションは、Streaming IP に HLS C ソース コード機能モデルを使用できます。
  • デバイス数を確認するための API xrt::system を追加
  • メッセージを記録するための API xrt::message を追加
  • XRT ネイティブ API を使用するホスト コードは次が必須となる
    -std=c++17 またはそれ以上
  • 同期動作の非同期実行のために試験的に xrt::queue API を追加
  • xbutil で AIE FIFO カウンターを表示し、AIE のデッドロックの状況をデバッグ
  • xbutil --legacy オプションを削除
  • xclbinutil --info ユーティリティでエンベデッド プラットフォームのクロック情報を提供
  • ARM で xbutil を使用して SOM イメージをロード可能
  • xbtop スタンドアロン ユーティリティは Linux の Top コマンドような出力を表示 (legacy xbutil -top の代わりとなる)
  • XRT ユーティリティで、 キーを使用する Bash auto-completion をサポート
  • Alveo プラットフォームのアップデート、プラットフォーム アップデートで安定性向上、カード マネージメント機能のアップデート、SC ファームウェア アップデート ツール
  • エンベデッド プラットフォーム、新しい VCK190 DFX プラットフォーム: xilinx_vck190_base_dfx_202210_1、Vitis のインストールにエンベデッド プラットフォームが含まれる、Vivado に新しいカスタマイズ可能サンプル デザインを追加: MPSoC 用 Vitis プラットフォーム
  • Vitis Model Composer Hub ブロック全体を見直し、スケーラビリティと使いやすさが向上
  • ハードウェア検証フローがベアメタルに続き Linux もサポート
  • AIE to HDL および HDL to AIE ブロックに HDL ゲートウェイ ブロックが含まれない
  • 2022.1 では、インターネットにアクセスできないお客様のためにサンプル デザインのスナップショットを同梱する。このツールで、GitHub から最新のサンプル デザイン リビジョンをダウンロードするよう促す。
  • 使いやすさを考慮し、コード生成に含まれないユーティリティ ブロックは、背景色を白に変更
  • 使いやすさ向上のため、ライブラリ ブラウザーを改善
  • RHEL 8.x サポート
  • MATLAB サポート - R2021a および R2021b
2021.2

Vitis ソフトウェア プラットフォーム 2021.2 リリースのハイライト

  • 新しいドメイン特化型開発環境
    • Vitis ビデオ解析 SDK (SoM、U30/U50、VCK5000 ボード): 詳細>>
    • Varium™ C1100 ボードで Vitis ライブラリを使用する Vitis ブロックチェーン ソリューション: 詳細>>
  • VCK5000 および Varium C1100 カードに対応するエンド ツー エンドのフル フロー サポート
  • 主要ツールが強化 
    • Vitis AI エンジン コンパイラの C/C++ を使用する抽象度の高い API、プラグマの自動推論、エリア グループ制約
    • Vitis AI エンジン ツールの x86 シミュレータ機能が強化: トレース レポート、メモリ アクセス違反およびデッドロックの検出
    • Vitis HLS の使いやすさ向上、タイミングおよび QoR の機能強化、HLS API によるユーザー制御のバースト推論
    • Vitis アナライザー機能が改善 (タイムライン トレース レポートの改善、データの可視化、ストール分析)
    • Vitis XRT (AI エンジン グラフを制御するための、AI エンジンによる複数プロセスと複数スレッド サポート)
    • AI エンジンのトレース、AI エンジン アプリケーションの SW エミュレーションをサポートする Vitis IDE およびエミュレーション ツール
  • 新たに 39 の C/C++ ライブラリ関数を提供 (DSP、データ分析、ビジョン、圧縮、データベース、グラフ、セキュリティなど多岐にわたる合計 1000 以上を提供)
  • Vitis Model Composer
    • 並列コンパイルにより、コンパイル/シミュレーション時間は 1/3 に削減、コンパイル時間は 1/7 に削減
    • 新しいハードウェア検証フローおよび強化協調シミュレーション

Vitis 最新情報 (カテゴリ別)

次の各セクションを展開して Vitis 2021.2 の新機能と拡張機能の詳細を確認してください。サポートされているプラットフォーム、動作の変更、既知の問題については、Vitis 2021.2 リリース ノートのアプリケーション アクセラレーション フローおよびエンベデッド ソフトウェア開発フローを参照してください。

注記: Vitis アクセラレーション ライブラリは、個別にダウンロードして入手します。これらは、GitHub からダウンロードできますが、Vitis IDE 内で直接ダウンロードも可能です。

ライブラリ 2021.1 2021.2 21.2 での新機能
xf_blas 167 167 0
xf_codec 3 3 0
xf_DataAnalytics 33 36 3
xf_database 62 65 3
xf_compression 78 93 15
xf_dsp 94 96 2
xf_graph 53 59 6
xf_hpc 37 37 0
xf_fintech 116 116 0
xf_security 135 140 5
xf_solver 11 11 0
xf_sparse 11 11 0
xf_utils_hw 55 57 2
xf_opencv 147 150 3
合計 1002 1041 39

注記: ビジョンの場合、各 API には異なるタイプ用に複数のテストがあるため、L*/tests のサブフォルダー数をカウントしてください。

プログラマブル ロジック (PL)

  • CLAHE TMO によるエンドツーエンドのモノクロ画像処理 (ISP)
  • RGB-IR および RGB-IR 画像処理 (ISP) パイプライン
  • グローバル トーン マッピング (GTM)、および GTM を用いた ISP パイプライン
新機能 Cat カスタマー/ターゲット セグメント 説明
RGB-IR ISP Seeing Machines 社 オートモーティブ、ISM • 4x4 RGB-IR デモザイキングをサポート
• 主にインキャビン モニタリング システム向け
•低照度監視カメラ
Mono (CCCC) ISP 目的に応じて使用 オートモーティブ、ISM、A&D •マシン ビジョン
•低照度アプリケーション
Global Tone Mapping (GTM) ISP 目的に応じて使用 オートモーティブ、ISM、A&D • ダイナミックレンジとコントラストが向上
• ローカル トーン マッピング (LTM) より低コスト
高密度オプティカル フロー TV-L1 CV NTT ISM • オプティカル フローの照明、ノイズ、オクルージョンに対するロバスト性が向上

AI エンジン (AIE)

  • BlobFromImage
  • バッチ サイズ 3 に対応する連続 filter2D
新機能 Cat カスタマー/ターゲット セグメント 説明
RGB-IR ISP Seeing Machines 社 オートモーティブ、ISM • 4x4 RGB-IR デモザイキングをサポート
• 主にインキャビン モニタリング システム向け
• 低照度監視カメラ
ML+X ISP 目的に応じて使用 オートモーティブ、ISM、A&D • ML 干渉の前処理
ガウシアン ピラミッド CV 目的に応じて使用 オートモーティブ、ISM、A&D • マルチスケール画像処理の基本
ボックス フィルター CV 目的に応じて使用 オートモーティブ、ISM、A&D 平滑化を行うロー パス フィルターの基本

Vitis ライブラリを利用した Vitis ブロックチェーン ソリューション

  • イーサリアム向けのすぐに使えるマイニング ソリューション
  • オープンソースの C++ Vitis ライブラリを活用して簡単に運用
  • Vitis ライブラリによる柔軟性と拡張性
  • 多様なコインのマイニングにも柔軟に対応
  • カスタマイズしてハードウェアにコンパイル
  • 高度に最適化されたデザイン

CSV パーサー API をライブラリに追加

  • CSV パーサーは、CSV (Comma Separated Values) 形式ファイルを解析し、DataFrame API と簡単に接続できるオブジェクト ストリームを生成する
  • 新しい L2 ライブラリを追加
  • リナンバリングされた Louvain
  • リナンバリング
  • 「重み」は Cosine Similarity で対応
  • GQE が複数カードのサポートに加え、非同期の入出力機能にも対応する。
    • 非同期サポートによって、一部の入力データの準備が整うと、FPGA が処理を開始できるようになる。
    • マルチカード サポートによって、作業に適した複数の Alveo カードを識別できるようになる。
  • ZSTD マルチコア圧縮
    • 新しい ZSTD マルチコア アーキテクチャを作成し、クアッドコアを使用して 1GB/s 以上のスループットを提供。
  • ZSTD 解凍の最適化
    • ZSTD 解凍が、性能 (20% 向上) とリソース (最大 30% 削減) に最適化
  • IBM 向けの GZIP/ZLIB ストリーム コアが改善
    • カスタマイズされたスタティック/ダイナミック圧縮ストリーミング IP
    • TUSER ポートに圧縮サイズを提供する機能を追加
  • IBM 向けの GZIP/ZLIB 解凍が改善
    • ハフマン デコーダーが最適化されて、レイテンシが 1.5K サイクル以下に削減
    • リソースが大幅に削減 (最大 6.9K 削減) (旧バージョンは 9K 以上)
    • ADLR32 チェックサム機能を追加
  • GZIP システム コンパイラ PoC
    • GZIP 圧縮ソリューションのシステム コンパイラ PoC を作成し、OpenCL Host とのベンチマークを実施。
  • DSP ライブラリ (2021 年より Github で提供)
  • 高速フーリエ変換 (FFT/iFFT)
    • ポイントサイズが 32k に増加 (データ型によって異なる)
    • ストリーム API とウィンドウ API をサポート
    • パラレル電源 (0-4)
      • スループットの向上と対応ポイント サイズの拡大
  • FIR フィルター
    • シングル レート非対称/対称 FIR のイニシャル ストリーム サポート
  • DDS/Mixer
    • 2021.2 の新しいライブラリ ユニット

 

KECCAK-256 (ハッシュ関数) と CRC32C (チェックサム関数) がリリース

ハードウェアのデバッグ用に 2 つのデータ ムーバーを追加。

  • LoadDdrToStreamWithCounter: AXI ストリームを介して PL の DDR から AI エンジンにデータをロードし、AI エンジンに転送するデータ数を記録する。
  • StoreStreamToMasterWithCounter: AXI ストリームを介して AI エンジンからデータを受け取り、PL の DDR に保存して、DDR に転送するデータ数を記録する。

AI エンジン API

  • C++ ヘッダー オンリー ライブラリとして実装される。このライブラリは、効率的な AI エンジンの組み込み関数に変換されるデータ型と動作を提供する。
  • パラメーター指定可能なデータ型により、汎用プログラミングが可能
  • 一般的な演算は、データ型が異なっても共通の方法でインプリメント可能
  • 高レベルのプリミティブを最適化された AI エンジンの組み込み関数へ透過的に変換
  • AI エンジン アーキテクチャ間での移植性を改善

AI エンジン API は AI エンジン カーネルのプログラミングに不可欠となる

高レベルの最適化

AI エンジン コンパイラの最適化オプション

  • --xlopt=0 最適化は適用されない。
  • --xlopt=1 ヒープ サイズの自動計算、LLVM IR 解析からガイダンスを生成。
  • --xlopt=2 自動インライン展開、展開されたループに対するループ ピーリング、プラグマ挿入。

性能を向上させるために --xlopt=2 を導入。ただしデフォルトは --xlopt=1。

  • 関数の自動インライン展開
    • 関数に __inline または inline が使用されていなくても、有益で可能な場合に関数を自動的にインライン展開します。
  • プラグマの自動挿入
    • カーネル コードに自動的にプラグマを挿入します。(詳細は、次のスライドを参照)

プラグマ推論

カーネルの最適化に不可欠

  • 有効で適切なプラグマの挿入が求められるユーザーの負担を軽減する

2021.2 で 5 つのプラグマの自動推論をサポート

  • 性能:
    • chess_prepare_for_pipelining は、最内周ループ、およびトリップカウントがわかっている外周ループ。
    • chess_loop_range は、トリップカウントがわかっているループ。
    • chess_unroll_loop/chess_flatten_loop は、トリップカウントが分かっている最内周ループ。
  • 適正:
    • chess_unroll_loop_preamble は、トリップカウントが指定した展開係数の倍数でない場合。

グラフ プログラミング モデル PLIO および GMIO を更新

モデルの変更点:

  • simulation::platform の使用方法が変更
  • グラフ内の PLIO/GMIO オブジェクトとの相互作用、位置によって入力/出力が決定。
  • グラフ内のグローバル PLIO/GMIO オブジェクトが変更。
  • グラフの connect<> 文が変更。

ADF グラフの PLIO/GMIO

最新

  • PLIO、GMIO、simulation::platform、および接続をグローバル スコープで記述

GMIO gm0(“GMIO_In0”, 64, 1);

GMIO gm1(“GMIO_In1”, 64, 1);

GMIO gm7(“GMIO_In7”, 64, 1);


PLIO pl0(“PLIO_Out0”, plio_32_bits, “data/output0.txt”, 250.0);

PLIO pl1(“PLIO_Out1”, plio_32_bits, “data/output1.txt”, 250.0);

PLIO pl7(“PLIO_Out7”, plio_32_bits, “data/output7.txt”, 250.0);

simulation::platform<8,8> plat(&gm0, &gm1,…, &gm7, &pl0, &pl1,…, &pl7,);

subgraph g;

connect<> net0(plat.src[0], g.in[0]);

connect<> net1(plat.src[1], g.in[1]);

connect<> net7(plat.src[7], g.in[7]);

connect<> net8(g.out[0], plat.sink[0]);

connect<> net9(g.out[1], plat.sink[1]);

connect<> net15(g.out[7], plat.sink[7]);

別の方法

  • 最上位グラフを作成し、PLIO、GMIO、および接続を内部に移動
  • for ループ内で接続を操作可能

class topgraph

{

  input_gmio gm[8];

  output_plio pl[8];

  subgraph sg;

  topgraph()

  {

    for (i=0; i<8; i++)

    {

      gm[i] = input_gmio::create(“GMIO_In”+std::to_string(i), 64, 1);
      pl[i] = output_plio::create(“PLIO_Out”+std::to_string(i), plio_32_bits, “data/output”+std::to_string(i)+”.txt”, 250.0);
      connect<>(gm[i].out[0], sg.in[i]);
      connect<>(sg.out[i], pl[i].in[0]);

    }

  }

};

topgraph g;

エリア グループ制約の改善

ADF グラフでフラグを使用したり、制約ファイルを使用して、マッパーやルーターを制御可能

  • -contain_routing – true を指定すると、nodeGroup 内のノード間のネットを含むすべての配線が、エリア グループ内に含まれるようになる。
  • -exclusive_routing - true を指定すると、nodeGroup からノード間のネットを除く、すべての配線がエリア グループから除外される。
  • -exclusive_placement - true を指定すると、nodeGroup に含まれていないすべてのノードが、エリア グループの境界ボックス内に配置されなくなる。

スナップショット

スナップショットとは、すべてのカーネル ポートに関するコメントおよびデータを含むテキスト ファイル

  • ストリーム、パケット ストリーム、カスケード ストリーム
  • ウィンドウ、バッファー
  • RTP

すべてのプラットフォーム ポートも含まれる

  • PLIO、GMIO、RTP

ユーザーは、デバッガーを使用せず、またカーネル コードの計測を必要とせずに、カーネル ポートのデータ トラフィックを確認できようになる

デッドロックの検出

  • 入力データが不十分な場合や再収束パス上の FIFO 深度が不均衡な場合に x86 シミュレーションでデッドロックを検出する
  • オプションの --stop-on-deadlock を指定して、x86 シミュレーション中の stop-on-deadlock 機能を有効にする必要がある
  • デッドロックでシミュレーションが停止すると、オプションの -trace --timeout を指定して再実行するようにエラー メッセージが表示される

メモリ アクセス違反の検出

Valgrind を統合してメモリ アクセス違反を検出

  • 検出
    • 境界外の読み出し/書き込み
    • 初期化されていないメモリの読み出し
  • コンパイルに必要な特定フラグがない
  • シミュレーション フラグ
    • --valgrind : 通常どおりにシミュレーションが実行され、valgrind がレポートを表示する
    • --valgrind-gdb : 同じだが、gdb によるデバッグが同時に実行される

トレース レポート

デッドロック状態になると、シミュレーションの出力が不十分となり、バグの原因分析が難しくなる

X86 シミュレーションのトレース オプションを使用する場合、シミュレータは多様なタイムスタンプ情報を記録できる

  • カーネル反復の開始/終了
  • ストリーム ストールの開始/終了
  • ロック ストールの開始/終了

x86 シミュレーションと AI エンジン シミュレーションでは、タイムスタンプが異なる

ユーザー制御のバースト推論

  • Vitis HLS ツールによる自動バースト推論に満足できない場合は、新しく導入された手動のバースト最適化を利用可能
  • 新しいクラスの「hls::burst_maxi」がバースト ビヘイビアーの手動制御をサポートする。新しいクラスに使用する新しい HLS API が提供されている
  • ユーザーは、HLS デザインの AXI AMBA プロトコルおよびハードウェア トランザクション レベル モデリングについて理解している必要がある

タイミングおよび QoR の機能強化:

  • 高位のスループット制約を入力できる
  • HLS のタイミング見積もり精度が向上。HLS がタイミング クロージャをレポートするときには、Vivado の RTL 合成でもタイミングを満たしている

EoU の機能強化

C 合成レポートにインターフェイス アダプター レポートを追加

  • インターフェイス アダプターがデザインに与えるリソース インパクトについて、ユーザーが把握する必要がある
  • インターフェイス アダプターにはデザインの QoR に影響を与える可変のプロパティがある
  • これらのプロパティの中には、ユーザーに報告すべき関連付けられたユーザー制御がある
  • bind_op レポートと bind_storage レポートのテキスト版を提供

合成レポートに新しいセクションが追加され、プラグマ リストとプラグマに関する警告を表示

  • ユーザーは問題があるプラグマを簡単に識別できる。

解析およびレポート機能の強化

関数呼び出しグラフ ビューアーの新機能

  • マウス ドラッグによる拡大/縮小機能
  • グラフ全体を表示し、部分的に拡大表示できる Overview 機能
  • シミュレーション データと共にすべての関数とループが表示される

シミュレーション後に Timeline Trace ビューアーが利用可能になりました。このビューアーでデザインのランタイム プロファイルを表示できます。ユーザーは Vitis HLS GUI からそのままアクセス可能です。

リンク サマリが改善

  • AI エンジン、プラットフォーム、演算ユニットのクロック周波数情報を提供
  • 新しい表「Clocks in system diagram and platform diagram」を提供

プラットフォームのエクスポートが改善

  • XSA ファイルを Vivado からエクスポート可能で、ローカルにソース ファイルは不要
  • XSA ファイルを Vivado からエクスポート可能で、プロジェクト構造の変更はない
  • IP リポジトリ全体をパッケージ化するのではなく、ハードウェア プラットフォーム プロジェクトで使用される IP をパッケージ化する

AI エンジン アプリケーションのエミュレーション機能が強化

  • aiesimulation への外部テストベンチの統合をサポート
  • x86 シミュレーションへの外部テストベンチの統合をサポート
  • x86 シミュレーションでの GDB デバッグの実行をサポート
  • x86 シミュレーションのグラフでカーネル間のデータのスナップショットをサポート
  • x86 シミュレーションでアクセス違反チェックをサポート
  • x86 シミュレーションでデッドロック時の停止に対応

AI エンジン トレースをサポート

AI エンジン アプリケーションの SW エミュレーションをサポート

Verilog/System Verilog の外部トラフィック ジェネレーターをサポート

プロファイリング モニターを挿入してメモリを監視

  • 現在、プロファイリング モニター ロジックは、カーネル/CU ポート ベースに挿入可能。この機能により、ユーザーがメモリ インターフェイスに直接モニター ロジックを挿入できようになる
  • 可視化されたメモリ インターフェイスのメモリ帯域幅をプロファイル サマリ レポートに反映できる
  • DDR メモリと PLRAM をサポート
  • ハードウェア フローをサポート
  • この機能を有効にするには、リンク段階と XRT の両方で設定が必要
    • memory=all
    • data_transfer_trace= coarse|fine or
    • opencl_device_counter=true

プロファイリング モニターを挿入してメモリを監視

  • メモリ インターフェイスの監視を可能にする vadd サンプル
    • 新しい表「Memory Bank Data Transfer」を提供

Vitis アナライザーの強化

OpenCL 以外のアプリケーション向けに生成される一般的なプロファイル サマリ レポート

  • XRTAPI と HALAPI アプリケーションに同レベルのサポートを提供する。
  • ユーザーが希望するレポートの種類を選択すると、ツールが自動的に生成して、Vitis アナライザーで可視化する。

PL イベントのタイムラインに OpenCL コマンドを追加

  • プロファイリングはオーバーヘッドを増加するが、XRT でオーバーヘッドなしにタイムライン トレースに OpenCL イベントをダンプできる。
  • Vitis アナライザーが XRT 出力を処理し、Timeline Trace ビューアーに表示する。
  • xrt.ini で xocl_debug=true に設定する必要がある。

タイムライン トレース レポートの信号の階層をフラット化

  • デフォルトでは、タイムライン トレース レポートの信号が階層的に表示される。
  • Vitis アナライザーでは、「Flatten Signal」に切り替えることで階層をフラット化できる。
  • タイムライン トレースをフラットにした場合、波形を比較できる。

Vitis アナライザー – データの可視化

  • AI エンジン デザインで AI エンジン カーネルへの入力/出力データを表示
    • 入出力データを時系列で表示し、AI エンジン デザインのデバッグに役立つ。
  • aiesimulator と連携
  • サポート
    • ウィンドウ/ストリーム/カスケード データ タイプ
    • パケット ストリーム
    • テンプレート化されたカーネル
    • データ ダンプ ユーティリティ

Vitis アナライザー – AI エンジンのストール解析

  • Vitis アナライザーの視覚化機能を活用して、ストールの根本的な原因を特定できる
  • サポート
    • パフォーマンス指標
    • ロック ストールの解析
    • ストリーム ストールの解析
    • カスケード ストールの解析
    • メモリ ストールの解析
  • サポート フロー
    • aiesimulator
    • HW エミュレーション

ザイリンクス ランタイム ライブラリ (XRT): japan.xilinx.com/xrt

  • XRT API
    • XRT ネイティブ API で xrt::ip を使用したユーザー管理のカーネル制御が可能
  • XRT ユーティリティ
    • xbutil および xbmgmt ツールがデフォルトになる
      • レガシ ユーティリティを使用するには、レガシ サブコマンドを持つ xbutil --legacy または xbmgmt --legacy を使用する
    • 新しいユーティリティ xball
      • インストールされているデータセンター カードのすべてまたは一部に xbutil または xbmgmt コマンドを適用。詳細は、xball --help を参照
    • 新しいコマンド xbutil
      • PCIe ホスト メモリおよび PCIe ピアツーピア機能を有効化、無効化、または構成する詳細は、XRT 資料を参照
    • すべての XRT ユーティリティで、ユーザーの介入をスキップする --force オプションをグローバルにサポート。
  • プロファイリング
    • プロファイリング オプションをイネーブルにしたときにプロファイリング サマリ レポートを生成。
    • 該当するサマリ表およびガイダンスは、xrt.ini ファイルでイネーブルにしているプロファイリング オプションに基づいて生成される。
    • 新しいデータ転送サマリ表により、デザインのメモリ リソースにモニターが追加されたときのメモリ リソースに関する集約情報を提供。
    • 新しいプロファイリング メトリック セットにより、(1) AIE の浮動小数点例外、(2) タイル実行カウント、 (3) ストリームの入力および取得など、さまざまなイベントをカウント。
  • エンベッデド
    • sptag をサポートするため zocl メモリ マネージャーを改善。

Vitis XRT による AI エンジンの複数プロセス サポート

  • C および C++ API でアクセス モードを定義して、複数プロセスが同じ AI エンジン アレイやグラフへのアクセスを共有できる。
    • AI エンジンのアレイとグラフへの不明なアクセスを防止する。
  • AI エンジンのアレイおよびグラフへのアクセス モードは 3 つある
    • Exclusive Mode (ほかのプロセスからのアクセスを防ぐ)
    • Primary Mode (その他のプロセスによる非破壊的アクセスのみを許可)
    • Shared Mode (非破壊的アクセスのみ可能)
  • 複数プロセスのサポートが必要な場合に考慮すべき事項。例を次に示す。
    • その他のプロセスによる AI エンジン アレイへのアクセスを無効にする (排他的アクセス)
    • 複数ユーザーが異なるグラフを別々に制御する (複数アプリケーション サポート)
    • プライマリー ユーザーがグラフを制御し、その他のユーザーは実行ステータスを確認できる (プライマリ/共有アクセス)

Vitis XRT による AI エンジンのサポート ステータス

C および C++ API

  • C バージョンの API
    • AI エンジン アレイの場合:
      • xrtAIEDeviceOpenExclusive (Exclusive モード)
      • xrtAIEDeviceOpen (Primary モード)
      • xrtAIEDeviceOpenShared (Shared モード)
    • AI エンジン グラフの場合:
      • xrtGraphOpenExclusive (Exclusive モード)
      • xrtGraphOpen (Primary モード)
      • xrtGraphOpenShared (Shared モード)
  • C++ バージョンの API 
    • xrt::aie::device クラスがコンストラクターでアクセス モードをサポート
      • enum class access_mode : uint8_t { exclusive = 0, primary = 1, shared = 2 };
    • xrt::graph クラスがコンストラクターでアクセス モードをサポート
      • enum class access_mode : uint8_t { exclusive = 0, primary = 1, shared = 2, none = 3 };

Alveo カード用最新の Vitis ターゲット プラットフォームへアクセス:

UG1120 - Alveo データセンターアクセラレータ カード プラットフォーム ユーザー ガイド (日本語版) を参照。

AI エンジン DSP ライブラリ – 新しいブロック

  • AIE DDS
  • AIE Mixer

並列コンパイル

2021.1 より時間が短縮 (次の数値は 200MHz TX チェーンの例)

  • コンパイルとシミュレーションの時間が 3 分の 1 に短縮
  • コンパイル時間が 7 分の 1 に短縮
  • シミュレーション後のデッドタイムが 25 秒から 0 秒に短縮

制約エディターの機能強化

  • 2021.2 でナビゲーション機能が改善

To Fixed Size ブロックが改善

To Variable Size ブロックが改善

論理回路の協調シミュレーション機能が強化

  • AI エンジンの入力用に Matlab データをエクスポート - xmcVitisWrite
  • AI エンジン データを Matlab にインポート - xmcVitisRead
  • AI エンジン データを Matlab にインポート - xmcVitisRead

その他

  • 入力 (ソース ブロック) なしで、AI エンジンまたは HLS カーネル ブロックをインポート
  • 新しいデータ型をサポート
    • ザイリンクスのデータ型 x_sfix64 および x_ufix64 の代わりとなる、AI エンジン開発用の Simulink のネイティブ データ型 int64 および uint64
    • AI エンジン開発用の accfloat および caccfloat
  • Ubuntu 20.04 のサポート
  • MATALB 20a、20b、21a のサポート (MATLAB 21b は対象外)
  • サンプル デザインの追加
    • 64 個のカーネルを使用するデュアル ストリーム SSR フィルターの例
    • 疑似逆行列 (64x32) – commslib の例
  • xmcLibraryPath コマンドを使用して、カスタム DSPLib の場所を指定する
  • その他多数の機能強化とバグ修正
2021.1

Vitis ソフトウェア プラットフォーム 2021.1 リリースのハイライト

  • ザイリンクス Kria SOM (システム オン モジュール) KV260 ビジョン AI スターター キットをサポート。ML (DPU 推論エンジン) + X (RTL カーネルと Vitis HLS ベースのコンピューター ビジョン カーネル) のための完全 Vitis フロー。詳細はこちら >
  • CPU/GPU より優れた FPGA や Versal ACAP 用の C/C++ Vision、DSP、Graph (Louvain Modularity)、Codec による画像処理、圧縮 (GZIP、Facebook ZSTD、ZLIB whole application acceleration) のパフォーマンス最適化ライブラリを多数サポート。
  • Vitis™ コア開発キットでは、Versal ACAP デバイスを使用するデザイン フローを改善: AI エンジン デザインのトレース レポート視覚化を改善、GMIO を使用する AI エンジン イベント トレース、インクリメンタル リコンパイル、新しいブート イメージ ウィザード、暗号化された AI エンジンのソース ファイルをサポート。
  • 新しい Vitis Model Composer ツールは、 MathWorks MATALB および Simulink® 環境内でデザインを試行して検証でき、AI エンジンやプログラマブル ロジックなどのブロックの協調シミュレーション、コード生成、テストベンチの作成が可能。  詳細はこちら >
  • 特定のフェーズやレポートにすばやくアクセスできる新しい Vitis HLS Flow Navigator の GUI。合成、解析、デバッグの各ビューを一般的なデフォルト コンテキストに統合。

Vitis 最新情報 (カテゴリ別)

次の各セクションを展開して Vitis 2021.1 の新機能と拡張機能の詳細を確認してください。サポートされているプラットフォーム、動作の変更、既知の問題については、Vitis 2021.1 リリース ノートのアプリケーション アクセラレーション フローおよびエンベデッド ソフトウェア開発フローを参照してください。

注記: Vitis アクセラレーション ライブラリは、個別にダウンロードして入手します。これらは、GitHub からダウンロードできますが、Vitis IDE 内で直接ダウンロードも可能です。

  • AIE DSP
    • DSP ライブラリが Vitis アクセラレーション ライブラリ セットの一部として Github で公開されています。
    • DSP ライブラリには、多くの高度な信号処理アプリケーションで使用される、一般的なパラメーター指定可能な DSP 関数が含まれています。現在、これらの関数はすべて、ストリーミング インターフェイス対応のウィンドウ インターフェイスをサポートしています。
      • FIR フィルター

        機能

        Namespace

        シングル レート、非対称

        dsplib::fir::sr_asym::fir_sr_asym_graph

        シングル レート、非対称

        dsplib::fir::sr_sym::fir_sr_sym_graph

        補間非対称

        dsplib::fir::interpolate_asym::fir_interpolate_asym_graph

        デシメーション、ハーフバンド

        dsplib::fir::decimate_hb::fir_decimate_hb_graph

        補間、ハーフバンド

        dsplib::fir::interpolate_hb::fir_interpolate_hb_graph

        デシメーション、非対称

        dsplib::fir::decimate_asym::fir_decimate_asym_graph

        補間、分数、非対称

        dsplib::fir::interpolate_fract_asym:: fir_interpolate_fract_asym_graph

        デシメーション、対称

        dsplib::fir::decimate_sym::fir_decimate_sym_graph

         

      • FFT/iFFT - この DSP ライブラリには、FFT/iFFT ソリューションが 1 つ含まれています。シングル チャンネル、シングル カーネルの DIT (Decimation in Time) であり、ポイント サイズ、複雑なデータ型、カスケード長、FFT/iFFT 関数を指定できます。

        機能

        Namespace

        シングル チャネル FFT/iFFT

        dsplib::fft::fft_ifft_dit_1ch_graph

      • 行列乗算 (GeMM) - この DSP ライブラリには、Matrix Multiply/GEMM (GEneral Matrix Multiply) ソリューションが 1 つ含まれています。2 つの行列 A と B の行列乗算をサポートするもので、派生した出力データ型を生成する入力データ型を指定できます。

        機能

        Namespace

        Matrix Mult / GeMM

        dsplib::blas::matrix_mult::matrix_mult_graph
      • ウィジェット ユーティリティ - これらのウィジェットは、DSP ライブラリ関数への入力に関するウィンドウとストリームの変換、DSP ライブラリ関数の出力に関するストリームとウィンドウの変換をサポートします。(実数と複素数のデータ型変換のために追加されたウィジェット)。

        機能

        Namespace

        ストリームからウィンドウ/ウィンドウからストリーム

        dsplib::widget::api_cast::widget_api_cast_graph

        実数から複素数/複素数から実数

        dsplib:widget::real2complex::widget_real2complex_graph
      • Vitis Model Composer では DSP ライブラリ関数をサポートしているため、ユーザーはこれらの関数を Matlab/Simulink 環境にプラグインするだけで、簡単に AI エンジン DSP ライブラリを評価したり、AI エンジン ADF グラフを開発できます。
  • Vitis HPC ライブラリのリリースでは、FPGA ベース HPC アプリケーション向けに HLS プリミティブ、ビルド済みカーネル、ソフトウェア API を提供しています。これらのアプリケーションを次に示します。

    • 2D Acoustic RTM (Reverse Time Migration) FDTD (Finite Difference Time Domain) アルゴリズム (フォワード カーネルとバックワード カーネルを含む)

    • 3D Acoustic RTM (Reverse Time Migration) FDTD (Finite Difference Time Domain) アルゴリズム (フォワード カーネルを含む)

    • MLP (多層パーセプトロン) コンポーネント: 活性化関数と完全接続ネットワーク カーネル

    • 密行列と疎行列の両方に対応する PCG (Preconditioned Conjugate Gradient) ソルバー

  • 最初のリリースに含まれる AI エンジン向けビジョン関数
  • 利用できる関数

    • Filter2D

    • absdiff

    • accumulate

    • accumulate_weighted

    • addweighted

    • blobFromImage

    • colorconversion

    • convertscaleabs

    • erode

    • gaincontrol

    • gaussian

    • laplacian

    • pixelwise_mul

    • threshold

    • zero

  • xfcvDataMovers: 高解像度画像のタイリングを容易にし、AI エンジン コアのローカル メモリに転送するためのユーティリティ データ ムーバーです。次の 2 つの方法があります。

    • PL カーネルを使用: 追加で PL リソースを使用する必要がありますが、高スループットを実現できます。
    • GMIO を使用: PL カーネルを使用する場合よりスループットは低下しますが、Versal NOC (Network on Chip) を使用するため、PL リソースは不要です。
  • 新しいプログラマブル ロジック (PL) の機能と特長
  • ISP パイプラインと機能:
    • 2020.2 Non-HDR パイプラインが改善
      • 動作中に一部の ISP パラメーターを変更可能です: 赤色/青色チャネルのゲイン パラメーター、AWB の有効/無効オプション、R/G/B のガンマ テーブル、AWB 正規化のために最小/最大を計算するためのピクセル値 (%pixels)。
      • ガンマ補正と色空間変換 (RGB2YUYV) がパイプラインの一部となっています。
    • 新しい 2021.1 HDR パイプライン: 2020.2 パイプライン + HDR サポート
      • 短時間露光フレームと長時間露光フレームのデジタル オーバーラップを使用するセンサーに対応する二重露光の HDR マージ。
        • 4 つの Bayer パターンをサポート: RGGB、BGGR、GRBG、GBRB
      • HDR マージ + isp パイプライン (ランタイム コンフィギュレーション オプション付き)。RGB 出力を返します。
      • 抽出機能: HDR 抽出機能は前処理機能であり、入力としてデジタル オーバーラップ ストリームを 1 つ受け取り、出力露出フレーム (SEF、LEF) を 2 つ返します。
    • 3DLUT: 色相、彩度、輝度などの複雑な色演算子を制御するための入出力マッピングを提供します。
    • CLAHE: Contrast Limited Adaptive Histogram Equalization は、適応型ヒストグラム均等化を行う際にコントラストを制限することで、ほぼ一定の領域でコントラストを過剰に増幅しないようにする手法です。これにより、ノイズの問題も軽減されます。
  • 反転: 水平/垂直方向に画像を反転させることができます。
  • カスタム CCA: 果物の欠陥を検出するための、カスタム バージョンの連結成分分析アルゴリズムです。果物の欠陥部分の計算とは別に、欠陥ピクセルと果物全体のピクセルを計算します。
  • Canny の改善: Canny 関数が任意の画像解像度に対応するようになりました。

ライブラリ関連の変更点

  • すべてのテストが OpenCV 3.4.2 の使用から OpenCV 4.4 の使用に対応できるようにアップグレードされました。
  • Versal エッジ シリーズ (VCK190) のサポートが追加されました。
  • ベンチマーキング セクションが更新され、リリースされたパイプライン/関数のベンチマーキング コラテラルが含まれています。
  • 2021.1 リリースでは、Two-Gram テキスト分析を提供:

    • TGP (Two Gram Predicate) は、2 文字で転置インデックスを用いた検索を実行します。転置インデックスが確立されているデータセットでは、転置インデックスの各レコードの中から一致する ID を見つけることができます。

  • コミュニティの検出: Louvain Modularity
  • 2-Hop 検索
  • L2 カーネルによる倍精度 SpMV (疎行列ベクトル積) の実装が追加されています。
  • 2021.1 リリースでは、GQE で次の機能をアーリー アクセス サポートとして対応しています。

    • 64 ビット結合: gqeJoin カーネルとそれに付随する gqePart カーネルが 64 ビットのキーとペイロードに拡張され、より大規模なデータをサポートできるようになりました。

    • 初期ブルームフィルター サポート: gqeJoin カーネルには、ブルームフィルター プロービングを実行するモードがあります。これにより、初期段階でのデータサイズの最小化が重要になる特定のマルチノード フローを効率化します。

    • 現在、これらの機能は L3 の純粋なソフトウェア API として提供されています。対応する L3 テストケースをご確認ください。

  • GZIP マルチコア圧縮:
    • 新しい GZIP Multi-Core Compress Streaming Accelerator は、純粋なるストリームのみのソリューション (フリーランニング カーネル) であり、4KB、8KB、16KB、32KB の異なるブロック サイズをサポートする豊富なバリエーションを備えています。
  • Facebook ZSTD 圧縮コア:
    • ブロックサイズが 32KB の新しい Facebook ZSTD シングルコア圧縮アクセラレータです。より高いスループットを達成できるマルチコア ZSTD 圧縮を現在開発中です。
  • GZIP 低レイテンシ解凍:
    • 新バージョンの GZIP 解凍は、各ブロックのレイテンシが改善され、リソース使用率を削減でき (LUT は 35% 減、BRAM は 83% 減)、FMax が向上しています。
  • ZLIB アプリケーション全体を高速化 (U50 を使用):
    • U50 プラットフォーム向けの L3 GZIP ソリューションであり、6 つの圧縮コアを搭載し、PCIe 帯域幅を最大限に活用します。CPU libz.so ライブラリを高速化するための効率的な GZIP SW ソリューションが提供されているため、再コンパイルすることなく、エンドカスタマー ソフトウェアとのシームレスな API レベルの統合が可能になります。
  • Versal プラットフォームをサポート
 
  • AIE サポートが追加されています - 上記を参照してください。
  • 2021.1 リリースで提供するサポート: BLS 向けの * RIPEMD160 * イニシャル サポート (未完成)
  • 2021.1 リリースでは、データ ムーバーがこのライブラリに追加されています。この機能は、その他の C++ ベース API とは異なり、HLS ベースのカーネル設計の経験が少ない方を対象としており、ストリームベースのデザインを検証することをサポートします。データ ムーバーは、実際にカーネル ソース コードを生成する機能があり、AIE デバイスのようなデザインを駆動したり検証したりするための一般的なヘルパー カーネルの一覧を作成します。
  • QoR メトリクスを作成 (Vitis QoR Generation API)
    • アプリケーション カーネルのサイクル
    • ストール サイクル (VCD ファイルから計算)
    • ラッパーでのオーバーヘッド サイクルを計測 (カーネル本体以外の機能にかかる時間)
    • スループット
  • 3 段階の最適化機能 XLOPT=0、1 (デフォルト)、2
  • xlopt=2 の新機能:
    • ループ フュージョン、単一反復の外側ループ平坦化、ループ ピーリング ヒューリスティックの強化
  • 「__restrict」 の使用法を分析してガイダンスを提供する
  • インクリメンタル リコンパイル: グラフが変わらない場合に、変更されたカーネルのみを再コンパイルする
  • パケット交換式データ → 最大 32 分割 (従来は、最大 4 分割)
  • 新しい DMA FIFO ロケーション制約 (リリース間のマッパー/ルーターの変更による性能への影響はない)
  • 新しいコンパイルの制約条件としてマッピング ソリューションを使用: 性能に影響を与えるマッピングの変更を回避するため
  • x86sim の機能サポートを aiesim レベルにする
  • ADF グラフにおける PL カーネルの非推奨を開始 (2021.2 で非推奨を完了)
  • 特定のフェーズやレポートにすばやくアクセスできる Flow Navigator GUI
  • BIND_OP および BIND_STORAGE ディレクティブ用の新しい合成レポート セクション
  • 合成後の新しいテキスト レポートには、GUI 合成レポートに提供される情報が反映される
  • IP エクスポートや Vivado インプリメンテーション run のウィジェットが新しくなり、設定ファイルや制約ファイルを Vivado へ渡すオプションが追加されている
  • 関数やループを可視化するための新しい関数呼び出しグラフ ビューアーでは、II、レイテンシ、DSP/BRAM の使用率をオプションのヒートマップでハイライトできる
  • DSP ブロックのネイティブ浮動小数点演算用に Versal タイミング キャリブレーションと新しい制御機能 (config_op の -precision オプション)
  • Vitis HLS 移行ガイド (旧 UG1391) が UG1399 の第 1 章に含まれる
  • ユーザー ガイド (UG1399 およびウェブ) に新しい設計手法のセクションを追加
  • 代替のフラッシュ可能なパイプライン オプションが改善 (フリーランニング パイプライン、通称 「frp」)
  • Vitis では、最上位ポート ポインターを、グローバル メモリではなく、axi-lite アダプターにマッピング可能になる
  • aggregate 指示子は、最大限のパッキングを行うための 「-compact bit」 オプションを提供する
  • オプションのアンケートを使用して、[ヘルプ] メニューに [Leave Feedback] の項目を追加
  • 一部の Linux システムで [Man Pages] タブに情報が表示されないというバグを修正
  • Vitis では、m_axi インターフェイスの再形成を hls::vector 型で実行する必要がある
  • s_axilite および m_axi データ ストレージ用のカスタマイズ オプション (「auto」、「uram」、「bram」、「lutram」) を使用して、デザイン内の RAM 使用率を微調整できる
  • Vitis では、カーネル用に継続的に動作する新モードをサポート (つまり、終わらない)
  • セカンダリ クロック オプションの axi_lite が再び利用可能に
  • Vivado IP Packager で RTL カーネル パッケージング機能のサポートが強化
    • 製品化および一般リリースされた機能であり、適切な手法と資料を提供している
    • デフォルトで XRT がカーネルを制御

  • 入力として暗号化された AIE ソース ファイルをサポートする

    • AIE コンパイラは暗号化された AIE ソース ファイルを受け入れることができ、残りのフローは v++ で対応

  • Versal デバイス用に Create Boot Image ウィザードのサポートを追加
  • AI エンジンのプログラミングおよびデバッグにおけるいくつかの改善点
    • マイクロ コード ラベルのオン/オフが可能
    • ソース コードとマイクロ コード間の静的なクロスプロービング
    • マイクロ コードの全体表示
    • パイプライン ビューで情報が更新されるたびに、最後の PC を可視エリアに移動
    • パイプライン ビューでのインストラクション データの整列
    • [Disassembly] ビューに単一命令モードのアクションを追加
  • プラットフォーム プロジェクト用のデフォルト BIF ファイルを生成できる
  • SD および eMMC 用のプログラム フラッシュに Raw モード サポートを追加
  • AI エンジン開発フローにインコンテクストのヘルプ メッセージを追加
  • GCC ツールチェーンのバージョンを 10.2 にアップグレード
  • ユーザーは、Python/C++ などの外部プロセスを使用して、AXI-MM マスター/スレーブをエミュレートできます。これにより、ユーザーは AXI マスターや VIP の開発にリソースを費やすことなく、AXI マスター/スレーブをすばやく設計してデザインをエミュレートできるようになります。AXI-MM プロセス間通信 (IPC) は、2 つの FPGA 間の Chip to Chip 接続をエミュレートするのにも役立ちます。
  • VCS 用 Versal モデルのコンパイルが可能
  • プラットフォーム開発者は、スタンドアロン アプリケーションを使用してプラットフォーム上でハードウェア エミュレーションを実行できるため、初期段階でプラットフォームをテストできます。
  • ユーザー レンジ プロファイリング情報とユーザー イベント情報がプロファイル サマリ レポートに集約。
  • Vitis アナライザーでクリティカルなタイミング パスを表示。

    • Vitis アナライザーでは、Vivado プロジェクトやネットリストを開かなくても、Vivado GUI タイミング レポートの簡易版を表示できます。

  • Vitis アナライザーの複数ストラテジ サポート

    • 複数のストラテジを実行した結果は、Vitis アナライザーで可視化されます。

  • プロファイリングとデバッグ用の新しい xrt.ini スイッチ
  • 大規模アプリケーションのメモリおよび読み込み時間を削減

    • 新しいプロファイル ツールは、少ないリソースで大規模な csv ファイルを処理できるため、読み込み時間が短縮し、クラッシュの問題も回避できます。

  • PL 連続トレース オフロード機能の改善

    • トレース データを格納するメモリ リソースとして DDR または HBM を使用

    • 大容量データの負荷軽減をサポートする循環バッファー

    • トレース バッファーのサイズとオフロードの間隔は、xrt.ini で設定可能

  • AIE デザインのトレース レポート可視化機能が改善

    • すべての AIE 入力が表示される (ウィンドウ、ストリーム、カスケード ストリームなど)

    • すべての IO データ型をサポート

  • 安定したネイティブ XRT API であり、C++ API を使用して AIE グラフの制御と実行、ソフトウェア エミュレーション、トレーシングが可能になります。
  • XRT の新しいヘルパー API は、OpenCL API から $XILINX_XRT/include/CL/cl2xrt.hpp の XRT ネイティブ API への移行をサポートします。
  • XRT の新しい API xrt::device.get_info() を使用して、デバイスのプロパティを抽出できます。
  • 大幅に改良された次世代型の xbutil および xbmgmt ユーティリティがデフォルトになりました。
  • xbutil では、電源の状態をレポートできます。
  • xbmgmt では、ランタイム クロックのスケーリングをサポートし、ボードやサーバーを保護するために消費電力しきい値を設定できます。
  • sysfs、xbmgmt、xbutil では、Alveo ボードの MAC アドレスをレポートできます。
  • xocl の KDS Scheduler がリファクタリングされ、複数デバイスの複数演算ユニットを同時に実行する多数のプロセスのスループットが大幅に向上します。レガシ シェルでは、スループットがわずかに低下する可能性があります。詳細は AR を参照してください。
  • debugfs /sys/kernel/debug/xclmgmt/ and /sys/kernel/debug/xocl/ による XRT ドライバーのデバッグ トレース

Alveo アクセラレータ カード向けの最新 Vitis ターゲット プラットフォームに関する情報は、japan.xilinx.com/alveo を参照してください。使用を検討しているアクセラレータ カードの 「設計開始」 セクションをご覧ください。

Vitis ターゲット プラットフォームの最新リリース情報は、 UG1120 - 『Alveo データセンター アクセラレータ カード プラットフォーム ユーザー ガイド』 を参照してください。

新しいプラットフォーム

  • Alveo U200 Gen3x16 XDMA 1RP
    • 名称: xilinx_u200_gen3x16_xdma_1_202110_1
    • 機能: スレーブ ブリッジ、P2P、GT カーネル、DDR セルフリフレッシュ
  • Alveo U50 Gen3x16 noDMA 1RP 
    • 名称: xilinx_u50_gen3x16_nodma_1_202110_1
    • 機能: スレーブ ブリッジ、P2P、GT カーネル、クロック スロットル
  • VCK190 ベース プラットフォームでは、DDR と LPDDR に ECC 機能が付いているため制約が簡潔になる。
  • MPSoC ベース プラットフォームでは、CMA のサイズが 1536M に増加。すべての Vitis AI モデルは、この CMA サイズに対応可能。
  • エンベデッド プラットフォームの構築フローが簡素化: Device Tree Generator による ZOCL ノードの自動生成。XSCT で BIF ファイルを生成可能。ベース プラットフォームのソース ファイルが削減。
  • Kubernetes(K8s) クラスターのサポート: ザイリンクス FPGA リソース マネージャー (XRM) で Kubernetes がサポートされました。これにより、1 つのサーバーに接続された複数の Alveo アクセラレータ カードのさまざまな計算ユニット (CU) を実行/管理できる、Alveo カードを使用して複数のサーバーにアプリケーションを拡張できます。
  • 包括的な制約エディターを使用して、Vitis Model Composer で AI エンジン カーネルのあらゆる制約を指定できる。生成された ADF グラフに、これらの制約が含まれる。
  • ライブラリ ブラウザーへ AI エンジン FFT ブロックと IFFT ブロックを追加。
  • ライブラリ ブラウザーのさまざまな AI エンジン FIR ブロックを利用できる。
  • FIR フィルターの入力ポートを使用して、フィルター係数を指定できる。
  • 2 つの新しいユーティリティ ブロック (RTP Source と To Variable Size) を追加。
  • 機能強化された AIE カーネル インポート ブロックは、テンプレート化された AI エンジン機能のインポートにも対応。
  • Hub ブロックで、AI エンジン デザイン用ザイリンクス プラットフォームを指定できる。
  • Hub ブロックからは、AIE シミュレーション実行後にいつでも Vitis アナライザーを再実行できる。
  • Simulink Data Inspector を使用して、サイクルの概算出力を可視化して、各出力の推定スループットを確認できる。
  • グラフ ヘッダー ファイルのみを使用してグラフをブロックとして取り込む際の操作性が向上。
  • キャンセル ボタンが付いて進捗状況バーが刷新。
  • MATLAB の作業ディレクトリとモデルのディレクトリが異なる場合に、AI エンジン カーネルのインポートやデザインのシミュレーションを行う際の操作性が向上。
  • 新しい TX チェーン 200MHz の例。
  • HLS、HDL、AI エンジン ブロックを使用するデザインを紹介する新しい 2D-FFT の例。
  • SSR FIR (10 倍以上) および SSRFFT のシミュレーション速度が向上
  • RAM や FIFO などのメモリ ブロックのシミュレーション速度が向上
  • ブラック ボックス インポート フローで Questa Simulator が VHDL 2008 に対応
  • Vitis Model Composer には、ザイリンクスの System Generator for DSP の機能がすべて含まれている。System Generator for DSP を使用していたユーザーは、今後 Vitis Model Composer を使用して開発を続けることができる。
  • MATLAB サポート - R2020a、R2020b、R2021a

 

2020.2

Vitis ソフトウェア プラットフォーム 2020.2 リリースのハイライト

  • Vitis 2020.2 は、Versal ACAP プラットフォームをターゲットとするアプリケーションの高速化とエンベデッド ソフトウェア開発をサポート
  • Vitis コア開発キットには、Versal AI エンジン用の C/C++ アプリケーションをコンパイルするための AI エンジン コンパイラが含まれる。Versal AI コア シリーズの AI エンジンは演算負荷の高いアプリケーション向けのベクトル プロセッサである
  • Vitis HLS は、高速化されたカーネルのコンパイル (Vitis) と C/C++ から RTL IP を作成するフロー (Vivado) の両方をデフォルトでサポート
  • 性能に最適化された 13 のライブラリで 600 個以上の FPGA アクセラレーション関数を提供。2020.2 では高性能コンピューティング アプリケーションの高速化をサポートする新しい Vitis HPC ライブラリが導入され、既存のデータ分析、グラフ、BLAS、スパース、セキュリティ、およびデータベース ライブラリも強化および拡張されている
  • 最終的な FPGA バイナリを作成および改善するために複数のインプリメンテーション ストラテジを実行して評価できる。また、Vitis アプリケーション内で簡単に RTL カーネルを統合できる
  • その他の改善点には、AI エンジン アプリケーションのプロファイリング サポート、Vitis プロジェクトの Git バージョン管理、Vitis アナライザー内での Vitis AI プロファイラー データの統合、エミュレーション モードの機能強化などが含まれる。 詳細はこちら >
  • MATLAB® および Simulink® アドオン: ザイリンクスの Model Composer と System Generator for DSP を統合。AI エンジンは、MATLAB および Simulink にアドオンできる新しいドメイン
    詳細はこちら >

Vitis 最新情報 (カテゴリ別)

次の各セクションを展開して Vitis 2020.2 の新機能と拡張機能の詳細を確認してください。サポートされているプラットフォーム、動作の変更、既知の問題については、Vitis 2020.2 リリース ノートのアプリケーション アクセラレーション フローおよびエンベデッド ソフトウェア開発フローを参照してください。

注記: Vitis アクセラレーション ライブラリは、個別にダウンロードして入手します。これらは、GitHub からダウンロードできますが、Vitis IDE 内で直接ダウンロードも可能です。

  • HPC ワークロード向けの FPGA アクセラレーション ライブラリ。最初のリリースは、地震探査と地球物理学シミュレーションのユースケースにフォーカスしています。
    • RTM (リバース タイム マイグレーション) – 地下構造を正確に表現するための地震画像技術
    • 高精度 MLP (多層パーセプトロン) - 反射法地震探査データ (Seismic Inversion) を使用して地下の特性を再構築する
  • HPC アプリケーションで最も必要となる単精度浮動小数点データ型 (FP32) に最適化済み
  • ライブラリ v1 では、次を提供:
    • L1 Stencil プリミティブ、L1 MLP 活性化関数 (Sigmoid、Relu、Prelu など)
    • L2 2D RTM フォワード カーネル、2D RTM バックワード カーネル、3D RTM フォワード カーネル
    • ショットの並列処理をサポートする L32D RTM API

新しい機能と特長

  • 2020.2 ISP パイプライン サンプル デザインが最大 16 ビットのピクセル深度をサポート
  • ローカル トーン マッピング
  • 自動露出補正
  • 量子化/ディザリング
  • 色補正マトリクス
  • 黒レベル補正
  • レンズ シェーディング補正
  • ブルート フォース特徴マッチング
  • モード フィルター
  • blobFromImage
  • ラプラス作用素
  • 距離変換

ライブラリ インフラストラクチャとその他の改善点

  • すべてのライブラリ関数は Alveo U50 プラットフォームをサポート
  • GUI ではエッジとデータセンター プラットフォームの両方をサポート
  • 色変換: RGBX または 4 番目のチャネルをサポート
  • データ コンバーターでライン ストライドをサポート
  • xf_axi_sdata.hpp を削除。Axiconverter 関数は、代わりに HLS ap_axi_sdata.h ファイルを使用。

ザイリンクス アプリ ストア

Xilinx App Store では、Vitis ビジョン ライブラリを使用して開発された次に示す FPGA アクセラレーション アプリケーションをコンテナーとして提供しています。Nimbix クラウドやオンプレミスで Alveo アクセラレータ カードを使用して簡単に評価/運用可能です。

  • Vitis AI ライブラリの ML 推論エンジンと Vitis ビジョン ライブラリの前処理関数を使用した画像分類
  • イメージ センサー プロセッシング (ISP) パイプライン
  • ステレオ ブロック マッチング
  • テキスト処理 API. 主要な API を 2 つ含む - 正規表現マッチと geo-IP ルックアップ。正規表現マッチの API は、ログなどの非構造化データからコンテンツを抽出するために使用できますが、geo-IP ルックアップは、IP アドレスによる地理的位置情報を付けるために、ウェブのログを処理する際によく使用されます。バッチの Apache HTTP サーバー ログを JSON ファイルに変換するデモ ツールがライブラリに付属されます。
  • インメモリ データの抽象化のための DataFrame API: DataFrame は、データ分析ドメインにおけるインメモリ データの抽象化に一般的に使用されています。データ分析カーネル開発者は、DataFrame のライト/リード API を使用して、一時データを格納したり、Apache Arrow DataFrame を使用してオープンソース ソフトウェアと簡単に通信できます。
  • ツリー アンサンブル メソッド: ランダム フォレストに回帰が含まれて拡張されています。ブースティング法に基づく勾配ブースティング決定木が追加され、分類と回帰の両方をサポートします。また、損失関数と正則化の二階微分値を活用するために、分類と回帰での XGBoost サポートも含まれます。
  • 単一ソース最短パス API (singleSourceShortestPath): 2020.2 バージョンでは、Alveo U50 プラットフォームをサポートし、最短パス情報用の新しい出力 「pred32」を提供します。
  • ページ ランク API:2020.2 バージョンでは、Alveo U50 プラットフォームをサポートし、2 つの API を含んでいます (いずれも 「pageRankTop」 という名前)。1 つは単一のメモリ チャネルを利用し、もう一方はマルチバンク メモリを利用します。 
  • 類似性 API: さまざまなアプリケーションに対応するための 3 つの新しい API があります (密グラフ アプリケーション用のdenseSimilarityKernel、疎グラフ アプリケーション用の sparseSimilarityKernel、単一カーネルで両方のアプリケーションに対応できる generalSimilarityKernel)。
  • 次の API は AlveoU50 プラットフォームをサポートします。
    • 幅優先探索 (BFS) API
    • 度の計算 API (calcuDegree)
    • 接続されたコンポーネント API (connectedComponents)
    • CSC to CSR 変換 API (convertCsrCsc)
    • ラベル伝搬 API (labelPropagation)
    • 強く接続されたコンポーネント API (stronglyConnectedComponents)
    • トライアングル カウント API (triangleCount)
  • 新しい L2 GEMM カーネル
  • FP32 データ型の場合、L3 GEMM の性能が 280 GFLOPS から 340 GFLOPS に向上
  • Alveo U280 アクセラレータ カードで 16 HBM チャネル サポートを利用する FP32 L2 CSCMV カーネル (圧縮列格納方式 (CSC) の SpMV) を導入しています。
  • 2020.2 リリースでは、General Query Engine (GQE) カーネル デザインに大きな変更が加えられて機能が強化されました。また、JOIN や GROUP-BY AGGREGATE 用の新しいレベル 3 API が提供されています。
    • 入力バッファーとしての列: GQE カーネルは、各列を入力バッファーとして扱い、ホスト コードでのデータ管理を簡潔にします。さらに、ホスト側に複数バッファーを割り当てると、特にサーバーに大きな負荷がかかっている場合には、物理的に大容量メモリを隣接して割り当てる場合よりも、メモリ不足の問題が軽減されます。
    • コンフィギュレーション ビットを生成するためのコマンド クラス: L2 レイヤーは、GQE カーネルのコンフィギュレーション ビットを生成するためのコマンド クラスを提供します。開発者は GQE パイプラインでの機能を有効化/無効化にするためにビットマップ テーブルでビット トグルを理解する必要がなくなりました。したがって、ホスト コードは安定し、エラーが発生しにくくなります。
    • 新しいレベル 3 API: JOIN および GROUP-BY AGGREGATE 用として試験的に導入された新しい L3 API は、GQE で対応できる問題のサイズを拡大することを目的としています。これらはハッシュに基づいてテーブルをいくつかに分け、スケジュールどおりに GQE カーネルを複数回呼び出します。実行ストラテジは実行とは異なるため、データベースの専門家は OpenCL を操作することなく、テーブルの統計情報に従って実行を微調整できます。
  • Alveo U50 を使用する LIBZ ライブラリを高速化
    • libz 標準 API でシームレスなアクセラレーション: deflate、compress2uncompress
    • すぐに使える libz.so ライブラリで、コードを変更しなくてもホスト コードを簡単に高速化
    • xzlib スタンドアロン実行ファイルで、gzip/zlib フォーマットの圧縮/解凍に対応
  • ZSTD 解凍: Facebook エンジニアが開発した ZSTD アルゴリズムを利用する新しい実装
  • Snappy デュアル コア カーネル: Google のデュアル コア解凍アルゴリズム Snappy を利用する新しい実装で、シングル ファイルの解凍スループットが 2 倍向上。
  • GZIP 圧縮カーネル: 新しい GZIP クワッド コア圧縮カーネル (ビルトイン、LZ77、TreeGen、ハフマン符号化) の実装。全体的なリソース使用率を 20% 以上削減し、DDR 帯域幅要件を 50% 削減できる。
  • GZIP 圧縮ストリーミング カーネル: 規格に完全準拠の GZIP (ヘッダー/フッターを含む) の実装が可能 (ストリーミング フリーランニング カーネル)。
  • Alveo U50 を使用する GZIP/ZLIB L3 アプリケーション: Alveo U50 (HBM) および Alveo U250 カード向けに最適化された L3API として使用できる GZIP/ZLIB アプリケーション。単一 FPGA のバイナリ (xclbin) は、圧縮/解凍で zlibgzip の両方のフォーマットに対応。
  • Alveo U50 で利用可能: Alveo U50 プラットフォームで使えるように移植されたライブラリ関数 (LZ4、Snappy、GZIP、ZLIB)。
  • 低レイテンシの GZIP/ZLIB 解凍: 4KB/8KB/16KB ブロック サイズで初期解凍にかかるレイテンシが 5K から 2.5K に短縮。
  • API が更新され、Vitis HLS コンパイラを完全にサポートしています。
  • 新しい署名の生成および検証アルゴリズム: DSA、ECC、ECDSA(secp256k1)、および EdDSA(ed25519)
  • 新しいチェックサム アルゴリズム: Adler32 および CRC32
  • 検証可能な遅延関数 (VDF) の評価と検証: Pietrzak の VDF、Wesolowski の VDF
  • CAS で構成される商用暗号モジュール: SM2、SM3、SM4
  • ストリーム暗号: XChacha20.
  • RSA、GMAC、AES-GCM、SHA3 を最適化して性能とリソース使用率を向上させます。
  • 引数パーサー (ベータ版): コマンド ラインで渡されたオプションやフラグを解析し、自動でヘルプ情報を生成します。これによって、テスト ケースやユーザー アプリケーションにおいて開発者は一貫したユーザー体験を実現できます。
  • FIFO マルチプレクサー: このモジュールは、FIFO (カーネル コードの hls::stream を使用して実装) をラップ アラウンドすることで、同じハードウェア リソースを使用して異なるデータ型を渡すことを可能にします。データ範囲が広すぎる場合は、自動的に複数サイクルを使用して転送されます。このモジュールによって、よりコンパクトで可読性の高いデータフロー コードが実現します。

ADF: 適応型データフロー

  • コンパイラ:
    • PLIO または GMIO のイベント トレーシング
    • ハードウェア上でもイベント トレーシングが可能
    • ヒート マップ生成: すべての AI エンジンの使用率
    • PL カーネルや PLIO の異なる PL 周波数をサポート
  • AI エンジン用 Vitis IDE
    • パイプライン ビュー
    • ベクター レジスタ ビュー
    • 内部メモリ ビュー (East、West、North、South)
    • 外部メモリ
  • Vivado HLS から Vitis HLS へ移行 (既に 2020.1 リリースで、Vitis と C ベースのカーネル コンパイルをデフォルトでサポート)
    • 最上位の関数ポートに配列の再形成およびパーティショニング プラグマを追加
  • ツールは、Vitis や Vivado と共に所定のディレクトリ (./Vitis_HLS/2020.2) にインストールされます。
  • HLS デザインの移行に関する詳細は、UG1391 を参照してください。
  • Vitis HLS のユーザーガイドは、UG1399 を参照してください。HTML でもフルコンテンツを提供しています。
  • 最新のデザイン サンプルを GitHub で提供しています。これらは、Vitis HLS GUI ([Git リポジトリ] サブウィンドウ) から直接アクセスして自動ダウンロードも可能です。
  • SIMD プログラミングをサポート
  • bind_storage 指示子 (Vivado フローのみ) を使用するオンチップ ブロック RAM ECC フラグをサポートしているため、RAM ブロックで生成されたエラー訂正ロジックをモニター可能
  • GUI は、ツールバー アイコンのレイアウトがシンプルになり、インターフェイスおよび AXI4 (バーストを含む) 用の新しいレポート セクションがある
  • デフォルト以外のオプションを表示するには、[Solution Settings] → [General] で、[Show only non-defaults] のチェックマークをオンにすることで、すばやく特定できる
  • ユーザーは、-p オプションを使用して Tcl シェルから直接開始し、引数として Tcl ファイル (vitis_hls -p .tcl) を渡すことで、GUI でプロジェクトを作成したり、開くことが可能
  • GUI でインタラクティブな FIFO 深度構成
  • AXI インターフェイス用の制約付きランダム テストが GUI に表示される

Versal 専用機能

  • Vitis HLS は、DSP58 ブロックの浮動小数点演算 (加算器または乗算器) に専用の単一クロック サイクル累算を推論し、効率的な高スループットの累算機能を実装する
  • Versal の量産向けデバイス用にタイミング ライブラリが更新されている
  • RTL カーネルの統合が改善: Vitis アプリケーション内で RTL IP をカーネルとしてパッケージ化して統合できるように機能が強化されています。ユーザー管理の RTL カーネル (XRT API による制御ではない) のサポートや、このフローをサポートするために Vivado IP パッケージャーが改善されています。
  • 複数のインプリメンテーション ストラテジを実行してタイミング クロージャを達成: Vitis コンパイラとリンカー (v++) は、ハードウェア構築中に複数の Vivado インプリメンテーション ストラテジを同時に実行できます。このため、ユーザーはさまざまなストラテジのすべての結果を評価し、最終的な FPGA バイナリ (xclbin) を生成するための最適なストラテジを選択できます。

Versal 専用機能

  • 2020.2 の場合、ハードウェア デザインが同じである限りは、AIE プログラムが変更された場合にのみ、aiecompiler でソフトウェアを再コンパイルして更新します。v++ のリンク段階は再実行されず、パッケージ段階へと進みます。これにより、HW が修正された後、ユーザーは AIE プログラムをすばやく反復実行できます。
  • AIE、PL、PS デザイン ファイルなど、システム レベルのテンプレートが提供されます。
  • パイプライン情報の表示、ストレージ ビュー、並列コンパイルなど、多数の AIE ツール機能が Vitis IDE に統合されています。
  • Vitis プロジェクトのバージョン管理: Vitis プロジェクトを Git でバージョン管理することで、複数の開発者やチームによる共同開発が容易になります。
  • プロジェクト階層の改善: アクセラレーション カーネルとホスト アプリケーションは、最上位のシステム プロジェクトの下にある別々のプロジェクトとして管理されるため、ホスト アプリケーションとハードウェア カーネルを個別にコンパイルできます。
  • ボード サポート パッケージ (BSP) のビルド時間改善: スタンドアロン ドメインを使用するプラットフォーム プロジェクトの場合、BSP ドライバーはこれらを同時にコンパイルするため、アプリケーションのビルド時間を短縮できます。
  • ホスト アプリケーションのデバッグが容易: Vitis GUI から、処理システムのレジスタをファイルとしてエクスポートしてデバッグできるようになりました。
  • システム プロジェクトのプロファイリング: Vitis アプリケーション アクセラレーション フローでは、最上位システム プロジェクトで Vitis GUI からプロファイリング機能を指定して制御できるようになりました。
  • ハードウェア エミュレーションでプラットフォームの作成をサポート: ハードウェア エミュレーション モードは、最上位としてのブロック ダイアグラムをサポートするだけでなく、ブロック ダイアグラム内の上位モジュールやパッケージングされていないリファレンス RTL として、プラットフォーム内の RTL ソースをサポートします。Vivado と同様に RTL テストベンチを追加できます。実際に運用を開始する前に、柔軟なデザイン検証が可能になります。
  • デバッグ用にエミュレーション時の信号を保存: エミュレーション中の信号をザイリンクス シミュレータ (SIM) の波形ファイルに保存します。ハードウェア エミュレーションを再実行する際に、-wcfg-file-path launch_hw_emu.sh に渡すことができます。
  • スレーブ ブリッジ機能のエミュレーション サポート (Alveo プラットフォーム): スレーブ ブリッジ機能の詳細は、Alveo プラットフォームの資料を参照してください。
  • Python/C++ API で AXI Stream IO をエミュレート: シンプルな Python または C++ API を使用してプラットフォーム上の IO ポートを経由するデータ ストリーミングを模倣し、AXI4-Stream カーネルをエミュレートすることで、設計初期段階でプログラム済みのトラフィック パターンを含む全システムをデバッグできるようになります。
  • U250 Alveo プラットフォームの Questa シミュレータ サポート: Alveo プラットフォーム向けの Vitis ハードウェア エミュレーションは、ザイリンクス シミュレータ (SIM) のほかに、Questa もサポートしています。セットアップには、V++ コンフィギュレーション ファイルまたは Vitis IDE を利用できます。
  • HLS カーネルのデッドロック検出: v++ config param=compiler.deadlockDetection=true を使用して HLS カーネルをコンパイルすることで、ハードウェア エミュレーション中に HLS カーネルのデッドロックまたはライブロック コードを検出できます。

Versal 専用機能

  • サードパーティ シミュレータ サポート (Questa、Xcelium、VCS): Versal エンベデッド プラットフォーム向けの Vitis ハードウェア エミュレーションは、ザイリンクス シミュレータ (SIM) のほかに、Questa や Xcelium (Linux 対応) などのサードパーティ シミュレータもサポートしています。アーリー アクセスでは VCS がサポートされています。セットアップには、V++ コンフィギュレーション ファイルまたは Vitis IDE を利用できます。
  • Vitis AI プロファイラー データへのアクセス: AI 推論に DPU (Deep Learning Processing Unit) を使用するアプリケーションでは、Vitis アナライザー内で Vitis AI プロファイラーの情報 (DPU スループット、DDR の読み出し/書き込みレート、タイムライン トレース情報など) にアクセスして、アプリケーション全体のアクセラレーションを評価できます。
  • パッケージ サマリ レポートの表示: Vitis アナライザー内の [Package Summary Report] を表示して、性能や最適化レベルなどアプリケーション全体の状態を確認できます。パッケージ サマリは、ソフトウェアまたはハードウェア エミュレーションで実行できるパッケージを構築、またはハードウェア デバイス上で実行できるパッケージを構築してリンクが完了した後、v++ コマンドを実行すると作成されます。
  • 統合されたホストとカーネルのプロファイリング: Vitis 2020.2 には、任意のイベント API でプロファイリングする機能が追加されています。アクセラレーション カーネルに対して基本的に利用できるプロファイリング機能に加えて、ホスト コードでザイリンクス ランタイム ライブラリ (XRT) API を呼び出してデザインの任意のセクションをプロファイリングし、アプリケーション全体の性能最適化を判断できます。
  • その他の強化機能: Vitis アナライザー内でアクセスできるすべてのレポートを対象とするグローバル検索が可能。カスタマイズしたユーザー レイアウトの保存/回復が柔軟になり、性能レポートを表示できる。ガイダンス メッセージのグループ化を直感的に操作して関連する情報を 1 箇所にまとめて表示できる。使用率レポートが改善されて SLR (Super Logic Region) ごとに統計情報が表示されるため、より詳細なインサイトを得ることができる。

Versal 専用機能

  • プロファイル サマリ レポートには、具体的な AIE デザイン エントリがあります。HW 上で実行されているカーネルのアクティブ状態/ストール状態サイクルを表示する AIE ヒートマップなど、より多くの AIE 関連情報がコンパイル/実行サマリ レポートに表示されます。
  • デバッグ時の可視性向上: ハードウェア エミュレーション デザインの System-C 部分に対して、ザイリンクス シミュレータ (SIM) のトランザクション ビューアーで AXI-S のトランザクション レベルを表示できるようになり、デバッグ時の可視性が向上しています。
  • ライブ波形ビューアーによる FIFO ステータスの表示: ハードウェア エミュレーション中にライブ波形ビューアーでユーザー レベルの FIFO (カーネル コードでは hls:streams として示される) が表示されるため、スタティック型 FIFO の深度、要素、および使用状況を画面で確認してアクセラレーション カーネルの性能問題をすぐに特定できます。

Versal 専用機能

  • イベント トレース機能の強化: Vitis 2020.2 では、XRT による演算負荷のオフロード、複数トレース ストリーム フローのサポート、さらには PL カーネルがグラフに定義されている場合でも PL/AIE 境界をモニターできるなど、AIE イベントのトレース機能が強化されています。また、PL/PS/AIE イベント トレースは共通のタイムラインに結合されるため、デザイン全体の関係を可視化できます。

注記: ザイリンクス ランタイム ライブラリ (XRT) は、個別にダウンロードできます。ダウンロードおよびインストールの手順は、スタートアップ ガイドを参照してください。

  • HBM 搭載プラットフォームのサポート改善: v++ --sp HBM[#:#] で HBM バンクへのカーネル ポート接続を指定することにより、広帯域幅メモリ (HBM) 搭載プラットフォームを最大限に利用できます。ザイリンクス ランタイム ライブラリ (XRT) API は、HBM バンクを自動的に割り当てることができ、ホスト アプリケーションは 1 つ以上の HBM (HBM セグメントの境界に基づいて 256MB 以上になる) を使用して任意サイズのバッファーを割り当てることができます。
  • 次世代のザイリンクス ボード管理ユーティリティ (プレビュー版): 次世代型のザイリンクス ボード管理ユーティリティ (xbutil、xbmgmt) を利用できます。これにより、スレーブ ブリッジ機能や DDR 保持機能を有効化できます (これらの機能がサポートされているプラットフォームに限る)。注記: 現世代のボード管理ユーティリティは、2021.1 でメンテナンス モードに移行し、次世代のユーティリティには新機能のみ追加されます。

Versal 専用機能

  • AIE サポートの追加により、RTP、エラー処理、フルアレイのリコンフィギュレーション、およびグラフ API がサポートされています。

Alveo パッケージのダウンロード タブから Alveo アクセラレータ カード対応の最新 Vitis ターゲット プラットフォームにアクセスします

詳細情報および最新 Vitis ターゲット プラットフォームのリリースについては、 UG1120 『Alveo データセンター アクセラレータ カード プラットフォーム ユーザー ガイド』 を参照してください。

U200/U250 XDMA プラットフォーム

  • Alveo プラットフォーム U200 XDMA 2RP - プロダクション
    • 機能: ERT、CMC、PLRAM、DRM フロアプラン、XDMA、2RP、P2P、M2M、GT カーネル、PCIe スレーブ ブリッジ、DDR セルフリフレッシュ
  • Alveo プラットフォーム U200 XDMA 2RP - プロダクション
    • 機能: ERT、CMC、PLRAM、DRM フロアプラン、XDMA、2RP、P2P、M2M、GT カーネル、PCIe スレーブ ブリッジ、DDR セルフリフレッシュ

シェル アップグレードの DFX - 2RP (2 つのリコンフィギャラブル パーティション)

  • スタティック領域のサイズが小さい: ベース
    • PCIe 機能
    • インバンドの FPGA パーシャル リコンフィギュレーション
  • 新しいリコンフィギュレーション パーティション: シェル
    • DMA やユーティリティ関数を変更する
    • サーバーを再起動しなくてもプラットフォームを動的に置き換えることが可能
  • もう一つのリコンフィギュレーション パーティション: ユーザー ロジック
    • アクセラレーション カーネル関数

AXI スレーブ ブリッジ

  • カーネルによるダイレクト ホスト メモリ アクセス
  • DMA バイパス機能と AXI-Slave 512 ビット インターフェイスを使用することで、ユーザーは独自のデータ転送を実現

データ保持 - DDR4 セルフリフレッシュ

  • DDR4 セルフ フレッシュを使用することで、リコンフィギュレーション中に FPGA メモリにデータコンテキストが保持される
  • 異なる XCLBIN の一時的なストレージとしてホスト RAM に複製することを無効にする
  • 大規模データセットの移動を最小限に抑える

注記: エンベデッド プラットフォーム用の Vitis ターゲット プラットフォーム (ビルド済みの Linux カーネル、ルート ファイル システム、sysroot を含む) は、Vitis エンベデッド プラットフォームのタブから個別にダウンロードできます。

  • ZYNQ-7000/ZYNQ UltraScale+ MPSoC ベース プラットフォームの機能に変更はありませんが、プラットフォームのソース コードが再構築されています。複数プラットフォームで共通するソース ファイルがグループ化されて、分かりやすいようにディレクトリ名が変更されています。これにより、プラットフォームのソースコードを簡単に再利用して新しいプラットフォームに移植できるようになります。
  • ソース コードからプラットフォームを構築する場合でユーザーがダウンロードした共通のソフトウェア コンポーネントを使用する場合には、PetaLinux のコンパイルを 0 から開始するのではなく、新たなエンドツーエンドのコンパイル プロセスが追加されます。プラットフォームを構築する際に、これらのコンポーネントを指定することで、PetaLinux のコンパイル プロセスをスキップできます。

VCK190 プラットフォームは、柔軟性の高い DDR + LPDDR メモリ サブシステムを備えており、アクセラレーション カーネル用に 63 個の割り込みをサポートしています。『Versal ACAP AI エンジン プログラミング環境ユーザー ガイド』 (UG1076) で説明しているとおり、Vitis コア開発キットで使用することで、アプリケーション アクセラレーションとエンベデッド プロセッサ ソフトウェア開発の両方に対応できます。このプラットフォームを利用して、次を含むデザインを開発できます。

  • AI エンジンのグラフおよびカーネル
  • プログラマブル ロジック カーネル
  • Versal デバイスの Arm プロセッサで実行される Linux またはベアメタル OS をターゲットとするホスト アプリケーション。
  • 詳細は、Vitis および Versal ACAP プラットフォームのスタートアップ ガイドを参照してください。
  • Kubernetes(K8s) クラスターのサポート: ザイリンクス FPGA リソース マネージャー (XRM) で Kubernetes がサポートされました。これにより、1 つのサーバーに接続された複数の Alveo アクセラレータ カードのさまざまな計算ユニット (CU) を実行/管理できる、Alveo カードを使用して複数のサーバーにアプリケーションを拡張できます。
2020.1