アプリケーション トフォームの資料 アクセラレー …...vitis...

500
Vis 統合ソフトウェア プラッ トフォームの資料 アプリケーション アクセラレーション 開発 UG1393 (v2019.2) 2020 2 28 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資 料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報 につきましては、必ず最新英語版をご参照ください。

Upload: others

Post on 13-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

  • Vitis 統合ソフトウェア プラットフォームの資料アプリケーション アクセラレーション開発UG1393 (v2019.2) 2020 年 2 月 28 日

    この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

    https://www.xilinx.com

  • 改訂履歴次の表に、この文書の改訂履歴を示します。

    セクション 改訂内容2020 年 2 月 27 日 バージョン 2019.2

    2019.2 用にアップデート 「データセンター アクセラレータ カード プラットフォーム」の章を削除。各アクセラレータ カードの仕様および使用可能なターゲットプラットフォームは、『Alveo データセンター アクセラレータ カード プラットフォーム ユーザー ガイド』 (UG1120: 英語版、日本語版) を参照してください。

    2020 年 12 月 19 日 バージョン 2019.22019.2 用にアップデート Profile_Summary レポートの追加と内容のアップデート

    xbutil ステータスのアップデートxbutil flash 廃止のメッセージ次の Alveo™ アクセラレータ カードをサポートするためにアップデート• U50

    • U200 および U25 QDMA2019 年 11 月 11 日 バージョン 2019.2

    Vitis 2019.2 ソフトウェア プラットフォーム リリース ノート 内容をアップデート。Vitis ソフトウェア プラットフォームのインストール 内容をアップデート。

    ライセンス情報を削除。2019 年 10 月 30 日 バージョン 2019.2

    資料全体 パブリック リリース用に内容を追加および図をアップデート。

    • Vitis 2019.2 ソフトウェア プラットフォーム リリース ノート

    • xbmgmt ユーティリティ• Vitis アナライザーの理解• データセンター アクセラレータ カード プラットフォーム• セクション VIII: エンベデッド プロセッサ プラットフォーム開発

    • セクション IX: エンベデッド プロセッサ アプリケーションの SDSoC から Vitis への移行

    新しい章を追加。

    2019 年 10 月 1 日 バージョン 2019.2初版 なし

    改訂履歴

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 2

    https://japan.xilinx.com/cgi-bin/docs/bkdoc?k=accelerator-cards;d=ug1120-alveo-platforms.pdfhttps://japan.xilinx.com/cgi-bin/docs/bkdoc?k=accelerator-cards;d=j_ug1120-alveo-platforms.pdfhttps://japan.xilinx.com/cgi-bin/docs/bkdoc?k=accelerator-cards;d=j_ug1120-alveo-platforms.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=2

  • 目次改訂履歴..........................................................................................................................................................................2セクション I: Vitis 統合ソフトウェア プラットフォームの概要.........................................11第 1 章: Vitis 2019.2 ソフトウェア プラットフォーム リリース ノート.................12

    Vitis ソフトウェア プラットフォームに含まれる機能......................................................................................... 12サポートされるプラットフォーム......................................................................................................................... 12既知の問題.............................................................................................................................................................. 12

    第 2 章: インストール................................................................................................................................... 13インストール要件................................................................................................................................................... 13Vitis ソフトウェア プラットフォームのインストール......................................................................................... 14

    第 3 章: アクセラレーション用 Vitis 環境の概要..................................................................... 17入門と概要.............................................................................................................................................................. 17実行モデル.............................................................................................................................................................. 18ビルド プロセス......................................................................................................................................................19チュートリアルおよびサンプル.............................................................................................................................22

    第 4 章: Vitis ソフトウェア プラットフォームでのアプリケーションのアクセラレーション手法.................................................................................................................................23概要......................................................................................................................................................................... 23デバイス アクセラレーション アプリケーションの設計手法.............................................................................. 25C/C++ カーネルの開発手法.................................................................................................................................... 36

    セクション II: アプリケーションの開発............................................................................................... 46第 5 章: プログラミング モデル............................................................................................................ 47デバイス トポロジ.................................................................................................................................................. 47カーネル プロパティ.............................................................................................................................................. 47

    第 6 章: ホスト アプリケーション....................................................................................................... 51OpenCL 環境の設定............................................................................................................................................... 51FPGA でのコマンドの実行..................................................................................................................................... 55後処理および FPGA のクリーンアップ................................................................................................................. 65まとめ......................................................................................................................................................................65

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 3

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=3

  • 第 7 章: C/C ++ カーネル............................................................................................................................ 67データ型.................................................................................................................................................................. 67インターフェイス ................................................................................................................................................... 69ループ......................................................................................................................................................................72データフロー最適化............................................................................................................................................... 77配列コンフィギュレーション ................................................................................................................................ 79関数のインライン展開............................................................................................................................................83まとめ......................................................................................................................................................................83

    第 8 章: RTL カーネル................................................................................................................................... 84RTL カーネルの要件................................................................................................................................................84RTL カーネルの開発フロー.................................................................................................................................... 87RTL Kernel ウィザード...........................................................................................................................................93RTL カーネルの推奨事項...................................................................................................................................... 109

    第 9 章: ストリーミング接続................................................................................................................. 113ホストとカーネル間 (H2K) のストリーミング データ転送................................................................................ 113カーネル間 (K2K) のストリーミング データ転送................................................................................................117フリーランニング カーネル................................................................................................................................. 118

    第 10 章: OpenCL カーネル....................................................................................................................120第 11 章: Vitis を使用したアクセラレーションのベスト プラクティス ................122

    セクション III: アプリケーションのビルドおよび実行...........................................................123第 12 章: Vitis 環境の設定........................................................................................................................124第 13 章: ビルド ターゲット.................................................................................................................. 125ソフトウェア エミュレーション..........................................................................................................................125ハードウェア エミュレーション..........................................................................................................................126システム ハードウェア ターゲット..................................................................................................................... 126

    第 14 章: ホスト プログラムのビルド.............................................................................................127x86 用のコンパイルおよびリンク....................................................................................................................... 127Arm 用のコンパイルおよびリンク...................................................................................................................... 128

    第 15 章: FPGA バイナリのビルド.....................................................................................................130Vitis コンパイラでのカーネルのコンパイル....................................................................................................... 131Vivado HLS でのカーネルのコンパイル..............................................................................................................131package_xo を使用した RTL カーネルのパッケージ......................................................................................... 136カーネルのリンク................................................................................................................................................. 137レポート生成の制御............................................................................................................................................. 145

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 4

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=4

  • 第 16 章: ディレクトリ構造................................................................................................................... 147v++ コマンドからの出力ディレクトリ................................................................................................................ 147Vitis IDE からの出力ディレクトリ.......................................................................................................................148

    第 17 章: アプリケーションの実行................................................................................................... 150セクション IV: アプリケーションのプロファイル、最適化、およびデバッグ..... 153第 18 章: アプリケーションのプロファイリング................................................................... 154機能とパフォーマンスのベースライン............................................................................................................... 155設計ガイダンス.....................................................................................................................................................157システム見積もりレポート.................................................................................................................................. 159HLS レポート........................................................................................................................................................ 164プロファイル サマリ レポート............................................................................................................................ 165アプリケーション タイムライン..........................................................................................................................171[Waveform] ビューおよびライブ波形ビューアー ............................................................................................. 174

    第 19 章: パフォーマンスの最適化................................................................................................... 179ホスト最適化.........................................................................................................................................................179カーネル最適化.....................................................................................................................................................187トポロジ最適化.....................................................................................................................................................218

    第 20 章: アプリケーションおよびカーネルのデバッグ...................................................223デバッグ フロー....................................................................................................................................................223ソフトウェア エミュレーションでのデバッグ................................................................................................... 224ハードウェア エミュレーションでのデバッグ................................................................................................... 230ハードウェア実行中のデバッグ...........................................................................................................................234コマンド ライン デバッグの例............................................................................................................................ 254

    セクション V: Vitis 環境リファレンス資料.......................................................................................257第 21 章: Vitis コンパイラ コマンド.................................................................................................258

    Vitis コンパイラの一般オプション...................................................................................................................... 258--advanced オプション........................................................................................................................................271--clock オプション................................................................................................................................................ 274--connectivity オプション....................................................................................................................................276--hls オプション....................................................................................................................................................278--vivado オプション............................................................................................................................................. 280Vitis コンパイラの設定ファイル..........................................................................................................................282メッセージ ルール ファイルの使用..................................................................................................................... 283

    第 22 章: xrt.ini ファイル......................................................................................................................... 285第 23 章: platforminfo ユーティリティ ........................................................................................290

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 5

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=5

  • 基本的なプラットフォーム情報...........................................................................................................................291ハードウェア プラットフォーム情報.................................................................................................................. 292インターフェイス情報..........................................................................................................................................292クロック情報.........................................................................................................................................................292有効な SLR............................................................................................................................................................ 293使用可能なリソース............................................................................................................................................. 293メモリ情報............................................................................................................................................................ 293Feature ROM 情報............................................................................................................................................... 295ソフトウェア プラットフォーム情報.................................................................................................................. 295

    第 24 章: kernelinfo ユーティリティ ..............................................................................................296カーネル定義.........................................................................................................................................................297引数....................................................................................................................................................................... 297ポート....................................................................................................................................................................298

    第 25 章: emconfigutil ユーティリティ ........................................................................................299第 26 章: xclbinutil ユーティリティ .................................................................................................301

    xclbin 情報............................................................................................................................................................ 302ハードウェア プラットフォーム情報.................................................................................................................. 302クロック................................................................................................................................................................ 303メモリ コンフィギュレーション ..........................................................................................................................303カーネル情報.........................................................................................................................................................304ツールの生成情報................................................................................................................................................. 305

    第 27 章: xbutil ユーティリティ ......................................................................................................... 306clock...................................................................................................................................................................... 307dmatest................................................................................................................................................................ 308dump.................................................................................................................................................................... 309flash (xbutil)......................................................................................................................................................... 313flash scan..............................................................................................................................................................314list..........................................................................................................................................................................315m2m......................................................................................................................................................................315mem --read.......................................................................................................................................................... 316mem --write......................................................................................................................................................... 316p2p........................................................................................................................................................................ 317program............................................................................................................................................................... 317query.....................................................................................................................................................................317reset...................................................................................................................................................................... 320scan.......................................................................................................................................................................320status.................................................................................................................................................................... 321top......................................................................................................................................................................... 323validate................................................................................................................................................................. 324

    第 28 章: xbmgmt ユーティリティ .................................................................................................. 325flash (xbmgmt).................................................................................................................................................... 325

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 6

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=6

  • scan (xbmgmt).................................................................................................................................................... 326version.................................................................................................................................................................. 327

    第 29 章: package_xo コマンド.......................................................................................................... 328第 30 章: HLS プラグマ..............................................................................................................................330

    pragma HLS allocation....................................................................................................................................... 331pragma HLS array_map......................................................................................................................................332pragma HLS array_partition...............................................................................................................................334pragma HLS array_reshape................................................................................................................................336pragma HLS data_pack.......................................................................................................................................338pragma HLS dataflow......................................................................................................................................... 340pragma HLS dependence...................................................................................................................................342pragma HLS expression_balance...................................................................................................................... 344pragma HLS function_instantiate......................................................................................................................345pragma HLS inline...............................................................................................................................................347pragma HLS interface.........................................................................................................................................349pragma HLS latency............................................................................................................................................354pragma HLS loop_flatten....................................................................................................................................356pragma HLS loop_merge....................................................................................................................................357pragma HLS loop_tripcount............................................................................................................................... 359pragma HLS occurrence.....................................................................................................................................360pragma HLS pipeline.......................................................................................................................................... 361pragma HLS reset................................................................................................................................................362pragma HLS resource......................................................................................................................................... 363pragma HLS stream............................................................................................................................................ 365pragma HLS top...................................................................................................................................................366pragma HLS unroll.............................................................................................................................................. 367

    第 31 章: OpenCL 属性.............................................................................................................................. 370always_inline........................................................................................................................................................ 371opencl_unroll_hint...............................................................................................................................................372reqd_work_group_size........................................................................................................................................ 373vec_type_hint....................................................................................................................................................... 374work_group_size_hint......................................................................................................................................... 375xcl_array_partition...............................................................................................................................................376xcl_array_reshape................................................................................................................................................378xcl_dataflow......................................................................................................................................................... 380xcl_latency............................................................................................................................................................ 382xcl_loop_tripcount............................................................................................................................................... 383xcl_max_work_group_size...................................................................................................................................384xcl_pipeline_loop................................................................................................................................................. 385xcl_pipeline_workitems.......................................................................................................................................386xcl_reqd_pipe_depth........................................................................................................................................... 387xcl_zero_global_work_offset...............................................................................................................................389

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 7

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=7

  • セクション VI: Vitis アナライザーの使用.......................................................................................... 390第 32 章: レポートの使用.........................................................................................................................392第 33 章: Vitis アナライザーの理解.................................................................................................. 394第 34 章: run コンフィギュレーションの作成.........................................................................396第 35 章: Vitis アナライザーの設定.................................................................................................. 398

    セクション VII: Vitis IDE の使用...............................................................................................................400第 36 章: Vitis のコマンド オプション........................................................................................... 401第 37 章: Vitis IDE プロジェクトの作成........................................................................................ 402

    Vitis IDE ワークスペースの起動.......................................................................................................................... 402アプリケーション プロジェクトの作成.............................................................................................................. 403Vitis IDE の理解.................................................................................................................................................... 406ソースの追加.........................................................................................................................................................408[Project Editor] ビューの使用............................................................................................................................. 410[Assistant] ビューの使用..................................................................................................................................... 411

    第 38 章: システムのビルド................................................................................................................... 414Vitis IDE の [Guidance] ビュー............................................................................................................................415Vitis IDE からの Vivado ツールの使用................................................................................................................ 416

    第 39 章: Vitis IDE デバッグ フロー................................................................................................. 418第 40 章: Vitis IDE の設定........................................................................................................................ 420

    Vitis のプロジェクト設定..................................................................................................................................... 420Vitis ビルド コンィギュレーション設定..............................................................................................................422Vitis の run コンィギュレーション設定.............................................................................................................. 423Vitis のバイナリ コンテナー設定.........................................................................................................................425Vitis のハードウェア関数設定..............................................................................................................................425Vitis ツールチェーン設定..................................................................................................................................... 427

    第 41 章: プロジェクトのエクスポートとインポート........................................................ 431Vitis プロジェクトのエクスポート...................................................................................................................... 431Vitis プロジェクトのインポート..........................................................................................................................432

    第 42 章: サンプル デザインの概要..................................................................................................434サンプル デザインのインストール...................................................................................................................... 434ローカル コピーの使用.........................................................................................................................................435

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 8

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=8

  • セクション VIII: エンベデッド プロセッサ プラットフォーム開発............................... 436第 43 章: Vitis エンベデッド プラットフォーム......................................................................437第 44 章: ハードウェア コンポーネントの作成....................................................................... 440エンベデッド ソフトウェア開発用の XSA...........................................................................................................442アプリケーション アクセラレーション開発フローの XSA.................................................................................443

    第 45 章: ソフトウェア コンポーネントの作成....................................................................... 448PetaLinux を使用した Linux 出力ファイルの生成............................................................................................. 448

    第 46 章: プラットフォームの作成................................................................................................... 451XRT およびカーネル サポートを使用したプラットフォームの作成..................................................................452

    第 47 章: プラットフォーム インターフェイス プロパティのコンフィギュレーション.................................................................................................................................................... 455クロックの宣言.....................................................................................................................................................455AXI ポートの宣言..................................................................................................................................................456AXI4 -Stream ポートを宣言.................................................................................................................................458

    第 48 章: ハードウェア コンポーネント要件............................................................................ 459第 49 章: ソフトウェア コンポーネント要件............................................................................ 461第 50 章: プラットフォームのアドオン.........................................................................................462カーネル割り込みサポートの追加....................................................................................................................... 462

    セクション IX: エンベデッド プロセッサ アプリケーションの SDSoC からVitis への移行.................................................................................................................................................... 467第 51 章: 概要....................................................................................................................................................468基本的な移行手順................................................................................................................................................. 468

    第 52 章: ホスト アプリケーションの移行..................................................................................469インクルード ファイルのアップデート.............................................................................................................. 470main 関数の読み込み........................................................................................................................................... 471OpenCL API の使用..............................................................................................................................................472

    第 53 章: ハードウェア関数の移行................................................................................................... 475INTERFACE プラグマの指定.................................................................................................................................475

    第 54 章: システムのビルド................................................................................................................... 477

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 9

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=9

  • 第 55 章: アドバンス トピック: 複数の計算ユニットおよびカーネルのストリーミング.................................................................................................................................................... 478複数の計算ユニット............................................................................................................................................. 478カーネル間ストリーミング.................................................................................................................................. 479

    セクション X: 新規ターゲット プラットフォームへの移行................................................. 482第 56 章: デザインの移行.........................................................................................................................483

    FPGA アーキテクチャの理解............................................................................................................................... 484ターゲット プラットフォームの理解.................................................................................................................. 486

    第 57 章: リリースの移行.........................................................................................................................489ホスト コードの移行............................................................................................................................................ 489リリースの移行.....................................................................................................................................................490

    第 58 章: カーネル配置の変更.............................................................................................................. 491新しいハードウェア プラットフォームに移行する際の注意点......................................................................... 492カーネルを配置する場所の決定...........................................................................................................................493カーネルの SLR への割り当て..............................................................................................................................494

    第 59 章: タイミングの解決................................................................................................................... 497カスタム制約.........................................................................................................................................................497タイミング クロージャに関する注意事項...........................................................................................................497

    セクション XI: その他のリソースおよび法的通知...................................................................... 499ザイリンクス リソース...............................................................................................................................................499Documentation Navigator およびデザイン ハブ.................................................................................................... 499お読みください: 重要な法的通知...............................................................................................................................500

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 10

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=10

  • セクション I

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

    Vitis™ 統合ソフトウェア プラットフォームは、ザイリンクス ソフトウェア開発のすべてを 1 つの環境に統合した新しいツールです。このセクションは、次の章で構成されています。• Vitis 2019.2 ソフトウェア プラットフォーム リリース ノート• インストール• アクセラレーション用 Vitis 環境の概要• Vitis ソフトウェア プラットフォームでのアプリケーションのアクセラレーション手法

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 11

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=11

  • 第 1 章

    Vitis 2019.2 ソフトウェア プラットフォーム リリース ノート

    Vitis ソフトウェア プラットフォームに含まれる機能

    サポートされるプラットフォーム

    既知の問題Vitis ソフトウェア プラットフォームの既知の問題は、アンサー 72773 を参照してください。ザイリンクス ランタイムの既知の問題は、アンサー 71752 を参照してください。

    第 1 章: Vitis 2019.2 ソフトウェア プラットフォーム リリース ノート

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 12

    https://japan.xilinx.com/cgi-bin/docs/ndoc?t=answers;d=72773.htmlhttps://japan.xilinx.com/cgi-bin/docs/ndoc?t=answers;d=71752.htmlhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=12

  • 第 2 章

    インストールインストール要件

    Vitis ソフトウェア プラットフォームは、インタラクティブ プロジェクト開発用の統合開発環境 (IDE) と、スクリプトまたは手動アプリケーション開発用のコマンドライン ツールで構成されています。Vitis ソフトウェア プラットフォームには、ターゲット デバイス上のカーネルのプラグラムおよびカスタム ハードウェア プラットフォームの開発のために Vivado® Design Suite も含まれます。コンピューターにインストールして実行するには、次の最小要件を満たす必要があります。

    必要な CentOS/RHEL パッケージのインストールVitis ソフトウェア プラットフォームを CentOS または RedHat にインストールするには、EPEL (Extra Packages forEnterprise Linux) をインストールし、適切な kernel-headers および kernel-devel パッケージがインストールされていることを確認する必要があります。初期設定コマンドは、ご使用の OS によって異なります。詳細は、https://fedoraproject.org/wiki/EPEL を参照してください。重要: Linux は、GLX バージョン 1.3 以上が必要です。詳細は、アンサー 73017 を参照してください。

    1. EPEL をインストールします。RedHat の場合:システムで追加のリポジトリをイネーブルにし、パッケージをインストールするには、ターミナル ウィンドウを開き、次のコマンドを入力します。$ sudo yum-config-manager --enable rhel-7-server-optional-rpms

    $ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    CentOS の場合:ターミナル ウィンドウを開き、次のコマンドを入力します。sudo yum install epel-release

    2. カーネル ヘッダーおよびカーネル開発パッケージをインストールするには、次のコマンドを実行します。$ sudo yum install kernel-headers-`uname -r` $ sudo yum install kernel-devel-`uname -r`

    注記: uname は、シングル クォーテーション (') ではなく、バックティック (`) で囲みます。3. システムをコールド リブートします。

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 13

    https://fedoraproject.org/wiki/EPELhttps://fedoraproject.org/wiki/EPELhttps://japan.xilinx.com/support/answers/73017.htmlhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=13

  • OpenCL インストーラブル クライアント ドライバー ローダーシステムには、それぞれ独自のドライバーと OpenCL バージョンを持つ複数の OpenCL™ を含めることができます。Vitis™ 環境では、OpenCL インストーラブル クライアント ドライバー (ICD) 拡張 (cl_khr_icd) がサポートされます。これにより、OpenCL を複数インプリメンテーションして、同じシステム内に共存させることができます。ICDローダーは、インストールしたすべてのプラットフォームを監視して、API 呼び出しの標準ハンドラーを提供します。アプリケーションはインストールされたプラットフォームのリストから OpenCL プラットフォームを選択できます。ICD はアプリケーションで指定したプラットフォーム ID に基づいて、OpenCL ホスト呼び出しを正しいランタイムに送信します。ザイリンクスでは OpenCL ICD ライブラリを提供していないので、次のライブラリをシステムに合わせてインストールする必要があります。

    Linux

    RHEL/CentOS 7.X の場合、EPEL 7 を使用し、次のパッケージをインストールします。• ocl-icd

    • ocl-icd-devel

    • opencl-headers

    Vitis ソフトウェア プラットフォームのインストール1. Vitis ソフトウェア プラットフォームのインストール2. ザイリンクス ランタイムのインストール の手順に従います。3. Vitis ソフトウェア プラットフォームを実行するための環境の設定 の手順に従います。注記: CentOS/RedHat に XRT をインストールして使用するには、必要な CentOS/RHEL パッケージのインストール に説明されているように、必要なパッケージすべてと推奨されるライブラリをインストールする必要があります。

    Vitis ソフトウェア プラットフォームのインストールシステムが インストール要件 に記載されているすべての要件を満たしていることを確認します。ヒント: インストール時間を短縮するには、アンチウィルス ソフトウェアをオフにし、開いているプログラムで不要なものをすべて閉じます。

    1. ザイリンクス ダウンロード ウェブサイトにアクセスします。2. ご使用のオペレーティング システム用のインストーラーをダウンロードします。3. インストーラーを実行します。ザイリンクス統合 2019.2 インストーラーが開きます。4. [Next] をクリックします。5. ザイリンクスのユーザー アカウントの ID とパスワードを入力し、[Download and Install Now] をクリックます。6. [Next] をクリックします。7. 各 [I Agree] をクリックし、契約条件を理解して承認したことを示します。

    第 2 章: インストール

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 14

    https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/vitis.htmlhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=14

  • 8. [Next] をクリックします。9. [Vitis] をオンにし、[Next] をクリックします。10. オプション: インストールするデザイン ツールおよびデバイスを選択し、[Next] をクリックします。重要: 次のオプションはオフにしないでください。これらはインストールに必須です。• [Devices] → [AlveoInstall devices for and Xilinx Edge acceleration platforms]注記: Vitis ツールと Vivado Design Suite の両方がインストールされます。Vivado ツールを別にインストールする必要はありません。必要に応じて、System Generator および Model Composer もインストールできます。

    11. インストール ディレクトリを選択し、オプションのショートカットおよびファイル関連付けオプションを選択して、[Next] をクリックします。

    12. インストール サマリで選択したオプションおよびディレクトリを確認します。13. [Install] をクリックして Vitis ソフトウェア プラットフォームをインストールします。インストールが正しく完了すると、確認メッセージが表示されます。

    ザイリンクス ランタイムのインストールザイリンクス ランタイム (XRT) は、ユーザー空間およびカーネル ドライバー コンポーネントの組み合わせとしてインプリメントされます。XRT では、Alveo PCIe ベースのカードおよび Zynq UltraScale+ MPSoC ベースのエンベデッド システム プラットフォームがサポートされ、ザイリンクス プログラマブル ロジック デバイスへのソフトウェアインターフェイスが提供されます。プラットフォームをいくつインストールする場合でも、XRT は 1 回インストールするだけです。重要: XRT のインストールでは、標準 Linux RPM 配布ファイルが使用されます。すべてのソフトウェアおよびファームウェアのインストールにルート権限が必要です。 は、インストールするパッケージをダウンロードしたディレクトリです。使用するオペレーティング システム用の XRT パッケージをダウンロードおよびインストールするには、次を実行します。

    CentOS/RedHat

    1. RPM ファイルをダウンロードするには、このリンクをクリックします。2. パッケージをインストールするには、次のコマンドを入力します。

    sudo yum install /.rpm

    Vitis ソフトウェア プラットフォームを実行するための環境の設定Vitis ソフトウェア プラットフォームを実行する環境を設定するには、次のスクリプトを実行して、特定のコマンドシェルで実行する環境を設定します。 #setup XILINX_VITIS and XILINX_VIVADO variables source /Vitis/2019.2/settings64.sh #setup XILINX_XRT source /opt/xilinx/xrt/setup.sh

    第 2 章: インストール

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 15

    https://japan.xilinx.com/bin/public/openDownload?filename=xrt_201920.2.3.1301_7.4.1708-xrt.rpmhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=15

  • ヒント: .csh スクリプトも提供されています。

    第 2 章: インストール

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 16

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=16

  • 第 3 章

    アクセラレーション用 Vitis 環境の概要入門と概要

    Vitis™ 統合ソフトウェア プラットフォームは、ザイリンクス ソフトウェア開発のすべてを 1 つの環境に統合した新しいツールです。Vitis ソフトウェア プラットフォームでは、次世代のテクノロジに移行する予定のザイリンクス ソフトウェア開発キット (SDK) ユーザー用に Vitis エンベデッド ソフトウェア開発フロー、ザイリンクス FPGA ベースのソフトウェア アクセラレーションの最新機能を活用することを考慮しているソフトウェア開発者用に Vitis アプリケーション アクセラレーション開発フローがサポートされています。この内容では、主にアプリケーション アクセラレーション フローについてと、Vitis コア開発キットおよびザイリンクス ランタイム (XRT) 使用について説明します。Vitis アプリケーション アクセラレーション開発フローは、ソフトウェアおよびハードウェア コンポーネントの両方に標準プログラミング言語を使用して、FPGA でアクセラレーションされたアプリケーションを開発して配布するためのフレームワークを提供します。ソフトウェア コンポーネント (ホスト プログラム) は、C/C++ を使用して開発して x86 またはエンベデッド プロセッサで実行し、OpenCL™ API 呼び出しを使用してアクセラレータとのランタイムの通信を管理します。ハードウェア コンポーネント (カーネル) は、C/C++、OpenCL C、または RTL を使用して開発できます。Vitis ソフトウェア プラットフォームはさまざまな設計手法に対応しており、アプリケーションまたはカーネルのいずれからでも開発を開始できます。

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

    Vitis drivers & runtime

    Vitis target platform

    Video Transcoding

    compilers analyzers debuggers

    OpenCVLibrary

    BLAS Library

    FintechLibrary

    Vitisaccelerated

    libraries

    Vitis coredevelopment

    kit

    XRT

    AI /ML

    X23292-092619

    上の図に示すように、Vitis 統合ソフトウェア プラットフォームには次の機能および構成要素が含まれます。

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 17

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=17

  • • Vitis テクノロジは、Alveo™ データセンター アクセラレータ カードなどのアクセラレーション ハードウェア プラットフォーム、または Zynq® UltraScale+™ MPSoC および Zynq®-7000 SoC ベースのエンベデッド プロセッサ プラットフォームをターゲットにしています。

    • XRT は、ホスト プログラムがターゲット プラットフォームにアクセスするための API およびドライバーを提供し、ホスト プログラムとアクセラレーション カーネルの間のトランザクションを処理します。

    • Vitis コア開発キットは、ホスト プログラムおよびカーネルをビルドするコンパイラおよびクロス コンパイラ、アプリケーションのパフォーマンスをプロファイリングおよび解析するアナライザー、アプリケーションの問題を特定して修正するためのデバッガーなど、ソフトウェア ツール スタックを提供します。

    • Vitis アクセラレーション ライブラリは、コードに最小限の変更を加えてパフォーマンスを最適化した FPGA アクセラレーションを提供しており、アルゴリズムをインプリメントし直さなくても、ザイリンクスの適応型コンピューティングの利点を活用できます。Vitis アクセラレーション ライブラリには、算術演算、統計、線形代数、DSP などの一般的な関数用のものだけでなく、ビジョンおよび画像処理、数理ファイナンス、データベースおよびデータ分析、データ圧縮などのドメイン特化アプリケーション用のものがあります。Vitis アクセラレーションライブラリの詳細は、https://xilinx.github.io/Vitis_Libraries/ を参照してください。

    FPGA アクセラレーションザイリンクス FPGA には、プロセッサで実行可能などの関数でもインプリメントできるカスタム アーキテクチャなど、従来の CPU/GPU アクセラレーションと比べて多くの利点があり、消費電力を低く抑えながら高パフォーマンスを達成できます。ザイリンクス デバイスのプログラマブル ロジック (PL) ファブリックでは、アプリケーション実行の並列化をプロセッサ アーキテクチャよりも詳細に調整できます。ザイリンクス デバイスでソフトウェアをアクセラレーションできる利点を活用するには、アプリケーションで計算負荷の高い部分をアクセラレーションします。これらの関数をカスタム ハードウェアにインプリメントすると、パフォーマンスと消費電力の理想的なバランスを達成できます。パフォーマンスが最適なアプリケーションを設計する方法およびその他を推奨される設計手法は、Vitis ソフトウェアプラットフォームでのアプリケーションのアクセラレーション手法 を参照してください。

    実行モデルVitis コア開発キットでは、アプリケーション プログラムがホスト アプリケーションとハードウェア アクセラレーション カーネルに分割され、その間が通信チャネルで接続されます。ホスト プログラムは、C/C++ および OpenCL のような API 抽象化を使用して記述され、ホスト プロセッサ (x86 サーバー、エンベデッド プラットフォーム用の Armプロセッサなど) で実行されますが、ハードウェア アクセラレーション カーネルはザイリンクス デバイス内で実行されます。ホスト プログラムとハードウェア アクセラレータの間のトランザクションを処理するには、XRT で制御される API呼び出しが使用されます。制御およびデータの転送を含むホストとカーネルの間の通信には、PCIe® バスまたはエンベデッド プラットフォームの AXI バスを使用します。制御情報はハードウェアの特定のメモリ位置間で転送されますが、ホスト プログラムとカーネル間のデータ転送にはグローバル メモリが使用されます。グローバル メモリにはホスト プロセッサとハードウェア アクセラレータの両方からアクセスできますが、ホスト メモリにはホスト アプリケーションからしかアクセスできません。たとえば、典型的なアプリケーションでは、まずホストがカーネルで実行されるデータをホスト メモリからグローバル メモリに転送します。その後カーネルがデータを処理し、結果をグローバル メモリに格納します。カーネルが処理を終了すると、ホストが結果をホスト メモリに戻します。ホストとグローバル メモリ間のデータ転送によりレイテンシが発生し、アクセラレーション全体に悪影響を及ぼすことがあります。実際のシステムでアクセラレーションを達成するには、ハードウェア アクセラレーション カーネルで達成される利点がこのデータ転送のレイテンシを上回る必要があります。

    第 3 章: アクセラレーション用 Vitis 環境の概要

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 18

    https://xilinx.github.io/Vitis_Libraries/https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=18

  • 図 2: Vitis コア開発キット アプリケーションのアーキテクチャ

    Custom Application

    XRT/OpenCL API

    XRT

    Drivers

    Custom Kernels

    AXI Interfaces

    Global Memory

    DMA

    Host Processor Programmable Logic

    X21835-102219

    ターゲット プラットフォームには FPGA アクセラレーション カーネル、グローバル メモリ、およびメモリ転送用のダイレクト メモリ アクセス (DMA) が含まれます。カーネルには 1 つまたは複数のグローバル メモリ インターフェイスを含むことができ、プログラム可能です。Vitis コア開発キットの実行モデルは、次の段階に分割できます。1. ホスト プログラムが、Alveo データセンター アクセラレータ カード上の PCIe インターフェイスまたはエンベデ

    ッド プラットフォームの AXI バスを介して、カーネルで必要なデータをグローバル メモリに書き込みます。2. ホスト プログラムが、入力パラメーターを使用してカーネルを設定します。3. ホスト プログラムが FPGA のカーネル関数の実行をトリガーします。4. カーネルが、必要に応じてグローバル メモリからのデータを読み出しながら、計算を実行します。5. カーネルがグローバル メモリにデータを書き込み、ホストにタスクが終了したことを通知します。6. ホスト プログラムがグローバル メモリからホスト メモリにデータを読み出し、必要に応じて処理を続けます。FPGA には、アクセラレータ上に複数のカーネル インスタンス (別のカーネル タイプまたは同じカーネルの複数のインスタンス) を含めることができます。ホスト プログラムとアクセラレータ内のカーネル間の通信は、XRT で管理されます。XRT アーキテクチャの資料は、https://xilinx.github.io/XRT/ を参照してください。

    ビルド プロセスヒント: ザイリンクス GitHub リポジトリのアクセラレーション アプリケの基本概念チュートリアルを参照してください。Vitis コア開発キットには、標準ソフトウェア開発環境の機能がすべて含まれています。• x86 または Arm® プロセッサで実行されるホスト アプリケーション用のコンパイラまたはクロス コンパイラ。

    第 3 章: アクセラレーション用 Vitis 環境の概要

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 19

    https://xilinx.github.io/XRT/https://github.com/Xilinx/Vitis-Tutorials/tree/master/docs/Pathway3https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=19

  • • FPGA バイナリをビルドするためのクロス コンパイラ。• コードの問題を特定して解決するのに役立つデバッグ環境。• ボトルネックを特定し、アプリケーションを最適化するのに役立つパフォーマンス プロファイラー。ビルド プロセスでは、ホスト プログラムとカーネル コードの両方に対して標準のコンパイルおよびリンク プロセスに従います。次の図に示すように、ホスト プログラムは GNU C++ コンパイラ (g++) または MPSoC ベース デバイス用の GNU C++ Arm クロス コンパイラを使用してビルドされます。FPGA バイナリは、Vitis コンパイラを使用してビルドされます。

    図 3: ソフトウェア/ハードウェアのビルド プロセス

    Host Application Executable

    FPGABinary

    (.xclbin)

    Link

    Compile

    Host Application

    Link

    Compile

    FPGA Kernels

    Software Build Steps

    FPGABuild Steps

    Build Target Selection

    RTL, C/C++ orOpenCL C

    C/C++ withOpenCL API

    Source Code

    X21399-102819

    ホスト プログラムのビルド プロセスメイン アプリケーションは、g++ コンパイラを使用して、次の 2 つの手順でコンパイルおよびリンクされます。1. 必要なコードをオブジェクト ファイル (.o) にコンパイル。2. オブジェクト ファイル (.o) を XRT 共有ライブラリとリンクし、実行ファイルを作成。このトピックの詳細は、ホスト プログラムのビルド を参照してください。

    第 3 章: アクセラレーション用 Vitis 環境の概要

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 20

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=20

  • FPGA バイナリのビルド プロセス図 4: FPGA のビルド プロセス

    v++ -lTarget

    Platform

    .xclbin

    OpenCL

    v++ -c

    .xo

    C/C++

    v++ -c

    .xo

    RTL

    package_xo

    .xo

    C/C++

    Vivado HLS

    .xo

    X21155-091219

    カーネルは、C/C++ または OpenCL C コードで記述するか、パッケージされた RTL デザインから作成できます。上の図に示すように、各ハードウェア カーネルが個別にザイリンクス オブジェクト (.xo) ファイルにコンパイルされます。ザイリンクス オブジェクト (.xo) ファイルをハードウェア プラットフォームとリンクして FPGA バイナリ (.xclbin) を作成し、これをターゲット プラットフォーム上のザイリンクス デバイスに読み込みます。FPGA バイナリをビルドする際に重要なのは、生成するビルド ターゲットを決定することです。詳細は、ビルド ターゲット を参照してください。ビルド プロセスの詳細は、FPGA バイナリのビルド を参照してください。

    ビルド ターゲットVitis コンパイラのビルド プロセスでは、ホスト プログラムの実行ファイルと FPGA バイナリ (.xclbin) が生成されます。FPGA バイナリの特性は、ビルド ターゲットによって決定されます。• ビルド ターゲットがソフトウェアまたはハードウェア エミュレーションの場合、Vitis コンパイラでカーネルのシミュレーション モデルが FPGA バイナリに生成されます。これらのエミュレーション ターゲットを使用すると、デザインをビルドおよび実行して比較的速いサイクルで反復実行し、アプリケーションをデバッグしてパフォーマンスを評価できます。

    第 3 章: アクセラレーション用 Vitis 環境の概要

    UG1393 (v2019.2) 2020 年 2 月 28 日 japan.xilinx.comVitis アプリケーション アクセラレーション開発 21

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback/document-feedback.html?docType=User_Guides&docId=UG1393&Title=%20Vitis%20%26%2332113%3B%26%2321512%3B%26%2312477%3B%26%2312501%3B%26%2312488%3B%26%2312454%3B%26%2312455%3B%26%2312450%3B%20%26%2312503%3B%26%2312521%3B%26%2312483%3B%26%2312488%3B%26%2312501%3B%26%2312457%3B%26%2312540%3B%26%2312512%3B%26%2312398%3B%26%2336039%3B%26%2326009%3B%3A%20%26%2312450%3B%26%2312503%3B%26%2312522%3B%26%2312465%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%20%26%2312450%3B%26%2312463%3B%26%2312475%3B%26%2312521%3B%26%2312524%3B%26%2312540%3B%26%2312471%3B%26%2312519%3B%26%2312531%3B%26%2338283%3B%26%2330330%3B&releaseVersion=2019.2&docPage=21

  • • ビルド ターゲットがシステムの場合は、Vitis コンパイラでハードウェア アクセラレータ用に .xclbin が生成され、Vivado Design Suite を使用して合成およびインプリメンテーションが実行されます。この場合、これらのツールで良い QoR (結果の品質) が得られることがわかっている定義済み設定が使用されます。Vitis コア開発キットの使用には、これらのツールの知識は必要ありませんが、ハードウェアについて理解することにより、これらのツールで使用可能なすべての機能を活用してカーネルをインプリメントできます。

    Vitis コンパイラには、デバッグおよび検証に使用する 2 つのエミュレーション ターゲット、および実際の FPGA バイナリを生成するのに使用するデフォルトのハードウェア ターゲットの 3 つのビルド ターゲットがあります。• ソフトウェア エミュレーション (sw_emu): ホスト アプリケーション コードとカーネル コードの両方がホスト プロセッサで実行できるようコンパイルされます。これにより、高速なビルドおよび実行ループを使用した反復アルゴリズムによる調整が可能になります。このターゲットは、構文エラーを特定し、アプリケーションと共に実行されるカーネル コードをソース レベルでデバッグし、システムの動作を検証するのに便利です。

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