SDAccel 環境ユーザー ガイド (UG10 ਲ3) - Xilinx · 2020-07-05 · SDAccel...

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

Transcript of SDAccel 環境ユーザー ガイド (UG10 ਲ3) - Xilinx · 2020-07-05 · SDAccel...

  • SDAccel 環境ユーザー ガイドUG1023 (v2017.4) 2018 年 7 月 30 日

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

    https://www.xilinx.com

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

    日付 バージョン 改訂内容2018 年 7 月 30 日 2017.4 • xocc --pk オプションを復元し、--dk、--reuse_synth、および --reuse_impl

    オプションを追加。• 『SDAccel 環境プログラマ ガイド』 (UG1277) および『SDAccel 環境デバッグ ガイド』

    (UG1281) へのリンクを追加。2018 年 3 月 30 日 2017.4 • --pk を --profile_kernel に変更。

    • RTL カーネル ウィザードに提供される関数プロトタイプがあくまで例にすぎないことを示す警告を追加。

    2018 年 1 月 26 日 2017.4 次を修正:• 全体でフォーマットとコマンド オプションをアップデート。• SDAccel のエレメントから不必要な内容を削除。• create_kernel Tcl コマンドを削除。• カーネルのユーザー指定の SLR 割り当てに SLR (Super Logic Region) の定義を追加。• RTL カーネルの使用をアップデート。• カーネルのユーザー指定の SLR 割り当てをアップデート。• SDAccel デバッグ コマンド ライン フローをアップデート。• --optimize オプションをリンク モードの xocc オプションの表に移動。• ザイリンクス OpenCL コンパイラ (xocc) を使用した OpenCL カーネルのコンパイル

    の --nk および --sp オプションをアップデート。• XOCC フローでのソフトウェアおよびハードウェアのエミュレーションの実行に --

    device が廃止予定であることを記述。• RTL カーネル ウィザードをアップデート。• RTL カーネル ウィザードの一般設定に VLNV の定義を追加。• グローバル メモリの注記に API 関数を追加。• プライベート メモリに関数を追加。• ハードウェア エミュレーションの使用に内容を追加。• グローバル メモリに 16 個のサブデバイスを作成する方法、使用する xocc コマンドと

    オプション、makefile での使用方法などの例を追加。

    改訂履歴

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 2

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1277-sdaccel-programmers-guide.pdfhttps://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1281-sdaccel-debugging-guide.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=2

  • 日付 バージョン 改訂内容2017 年 12 月 20日 2017.4 主な構成を変更し、次の内容を書き直し。• 『SDAccel 環境プロファイリングおよび最適化ガイド』 (UG1207)にプロファイリング

    および最適化に関する内容を移行。• 「アプリケーションのデバッグ」を書き直し。• 「コンパイル フロー」を書き直し。

    2017 年 8 月 16 日 2017.2 • カーネル言語サポートの章を並べ替え。• 現在のリリース用に訂正。

    2017 年 6 月 20 日 2017.1 • カーネル最適化サポートの章を編集して並べ替え。• 「OpenCL インストーラブル クライアント ドライブ (ICD) ローダー」のセクションを

    新しく追加。• 「サンプル デザインの概要」の章を新しく追加。• 「コンパイル フロー」の章に新しく XP パラメーターの表を追加。• 「コンパイル」の章の xocc オプションの表を書き直し。• 2017.1 SDx ソフトウェア リリース用にアップデート。

    改訂履歴

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 3

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1207-sdaccel-optimization-guide.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=3

  • 目次改訂履歴..........................................................................................................................................................................2第 1 章: 概要................................................................................................................................................................. 6

    SDAccel のエレメント.................................................................................................................................................... 7SDx の操作...................................................................................................................................................................... 7

    第 2 章: SDAccel プロジェクトの作成.................................................................................................... 10SDx の起動.................................................................................................................................................................... 10ソースのインポート......................................................................................................................................................11システムのビルド......................................................................................................................................................... 16

    第 3 章: カーネルのプロファイルおよび最適化.............................................................................. 19カーネルのユーザー指定の SLR 割り当て................................................................................................................... 21

    第 4 章: SDAccel 環境でのアプリケーションのデバッグ......................................................... 26カーネル デバッグでの printf() の使用....................................................................................................................... 27SDAccel GUI フロー......................................................................................................................................................27SDAccel デバッグ コマンド ライン フロー................................................................................................................. 29ホスト コードのデバッグ............................................................................................................................................. 31フル エミュレーション デバッグ................................................................................................................................. 31ザイリンクス GDB 拡張................................................................................................................................................32波形ベースのアドバンス カーネル デバッグ.............................................................................................................. 33

    第 5 章: コンパイル フロー............................................................................................................................. 36ザイリンクス OpenCL 演算ユニットのバイナリ コンテナーの作成......................................................................... 36ザイリンクス OpenCL コンパイラ (xocc) を使用した OpenCL カーネルのコンパイル.......................................... 38

    付録 A: サンプル デザインの概要.............................................................................................................. 50サンプル デザインのインストール.............................................................................................................................. 50ローカル コピーの使用.................................................................................................................................................52

    付録 B: プラットフォームおよびリポジトリの管理.................................................................... 54付録 C: OpenCL プラットフォーム メモリ モデルについて..................................................56

    OpenCL デバイスおよび FPGA.................................................................................................................................... 56OpenCL メモリ モデル.................................................................................................................................................58OpenCL インストーラブル クライアント ドライバー ローダー................................................................................63推奨ライブラリ............................................................................................................................................................. 64

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 4

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=4

  • 付録 D: SDAccel 環境での OpenCL ビルトイン関数サポート............................................. 65付録 E: RTL カーネルの作成...........................................................................................................................74

    プログラミングの基本枠組み.......................................................................................................................................74RTL カーネル ウィザード............................................................................................................................................. 76RTL カーネルの手動開発フロー................................................................................................................................... 83RTL 設計の推奨事項......................................................................................................................................................87

    付録 F: xbinst コマンド リファレンス................................................................................................... 89付録 G: ザイリンクス ボード スイス アーミー ナイフ ユーティリティ........................ 91

    xbsak コマンドおよびオプション............................................................................................................................... 91

    付録 H: ランタイム初期化ファイルの使用......................................................................................... 96付録 I: Tcl コンパイル フローを XOCC に変換............................................................................... 100付録 J: ボードのインストール.....................................................................................................................104

    KCU1500 カードのインストール............................................................................................................................... 104VCU1525 カードのインストール............................................................................................................................... 112

    付録 K: その他のリソースおよび法的通知........................................................................................ 120参考資料...................................................................................................................................................................... 120お読みください: 重要な法的通知...............................................................................................................................121

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 5

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=5

  • 第 1 章

    概要ソフトウェアはアプリケーション仕様と開発の基盤です。今日使用されている製品のほとんどは、エンド アプリケーションの用途がエンターテイメント、ゲーム、または医療であろうと、ソフトウェア モデルまたはプロトタイプから作られているので、それをハードウェア デバイスで加速させて実行する必要があるのです。そこでまず、ソフトウェア エンジニアの仕事は、マーケットに出すためのソリューションが得られて、なおかつ最高速のアクセラレーションが達成できる実行デバイスを選択するところから始まります。従来のアプローチでは、プロセッサのクロック周波数のスケーリングを基準にデバイスが選択されていました。ところが、このアプローチだと得られるリターンが減少してきたため、それがマルチコアやヘテロジニアス コンピューティングの開発につながってきました。これらのアーキテクチャは、さまざまなフォーム ファクターやコンピューティングの負荷を考慮して、パフォーマンスと消費電力を効果的にトレードオフできる環境を作り上げてきました。この新しいコンピューティング アーキテクチャを使用するにあたり課題になるのが、各デバイスのプログラミング モデルです。マルチコア デバイスやヘテロジニアス コンピューティング デバイスを使用するには、明確なパラレル処理という観点から問題を解決できるように根本から考え直す必要があります。Khronos Group (クロノス グループ) コンソーシアムは、マルチコア デバイスやヘテロジニアス コンピューティングデバイスのプログラミングの課題を認識しつつ、OpenCL™ のプログラミング規格を開発してきました。これらのデバイスの OpenCL 仕様は、1 つの一貫したプログラミング モデルを定義するほか、この規格をサポートするすべてのハードウェア デバイスのシステム レベルのアブストラクションを定義しています。つまり、ソフトウェア エンジニアにとっては、1 つのプログラミング モデルから複数ベンダーのデバイスに直接使用できるものが開発できるというわけです。OpenCL 規格で定められているように、OpenCL 仕様に準拠するコードはどれも機能的に移植性があるので、この規格をサポートするコンピューティング デバイスであれば、どのデバイスでも実行できます。つまり、コード変更はパフォーマンス最適化するためです。パフォーマンスを向上するために OpenCL プログラムをどの程度変更する必要があるのかは、最初のソース コードの質とアプリケーションの実行環境によって異なります。ザイリンクスは クロノス グループで活発に活動しているメンバーで、OpenCL 仕様に関し共同開発しながら、ザイリンクス FPGA の OpenCL プログラムのコンパイルをサポートしています。ザイリンクス SDAccel™ 開発環境は、ザイリンクス FPGA で実行する OpenCL プログラムのコンパイルに使用されます。FPGA での実行と CPU/GPU 環境での実行とでは、プログラムのコンパイル方法にいくつか違いがあります。この後の章では、SDAccel 開発環境を使用してザイリンクス FPGA 用に OpenCL プログラムをコンパイルする方法を説明します。この開発環境の機能および使用方法を説明するのがこの資料の目的です。ユーザーは OpenCL API の知識が既にあることが前提になっています。この資料でもハイレベルな OpenCL の概念がある程度説明されてはいますが、これは OpenCL API に関するテクニカル ガイドではありません。OpenCL API については、クロノス グループから提供されている OpenCL 仕様を参照してください。また、ザイリンクス ウェブサイトからご利用いただける OpenCL APIの入門編ビデオをご覧ください。

    1: 概要

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 6

    https://www.khronos.orghttp://www.khronos.orghttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=6

  • SDAccel のエレメントSDAccel™ 環境は、GNU ツールチェーンおよび標準ライブラリ (例: glibc)、および Target Communication Framework(TCF) と GDB インタラクティブ デバッガー、Eclipse/CDT ベースの GUI 内のパフォーマンス解析パースペクティブ、コマンド ライン ツールなど、Xilinx® SDK (ザイリンクス ソフトウェア開発キット) の多数のツールを継承しています。SDAccel 環境には、完全なハードウェア/ソフトウェア システムを生成するシステム コンパイラ (xocc)、プロジェクトとワークフローを作成して管理する Eclipse ベースのユーザー インターフェイス、ハードウェア/ソフトウェア インターフェイスのさまざまな what-if シナリオを試すためのシステム パフォーマンス見積もり機能などが含まれます。SDAccel システム コンパイラでは、Vivado® HLS、IP インテグレーター、データ移動およびインターコネクト用の IPライブラリ、および RTL 合成、配置、配線、ビットストリーム生成ツールを含む Vivado Design Suite (System Edition)からのツールが使用されます。ヒント: SDx でビルドが終了したら、Vivado を起動できます。SDx メニューから [Xilinx] → [Vivado Integration] →[Open Vivado Project] をクリックします。SDAccel 環境で使用されるワークフローは、確立されたプラットフォーム ベースの設計手法を使用した、デザイン再利用の原則が基礎となっています。SDAccel ソリューションは、アプリケーションが実行されるカーネルのボードおよびインフラストラクチャ コンポーネントを組み合わせた、ターゲット プラットフォームに対してコンパイルされます。SDAccel 環境には、アプリケーション開発用の多数のプラットフォームが含まれていますが、ザイリンクス パートナーから提供されるプラットフォームや FPGA 設計チームの開発したカスタム プラットフォームから提供されるプラットフォームも使用できます。『SDSoC 環境プラットフォーム開発ガイド』 (UG1164) には、Vivado Design Suiteを使用したデザインの作成方法、プラットフォーム インターフェイスを定義および設定するためのプラットフォームプロパティの指定方法、プラットフォームを構築するソフトウェア ランタイム環境を定義して SDAccel 環境で使用できるようにする方法などが記載されています。デバイスは、SDAccel エコシステム パートナー、FPGA デザイン チーム、およびザイリンクスから提供されています。サポートされるデバイスの最新のリストは、『SDx 環境リリース ノート、インストール、およびライセンス ガイド』(UG1238) を参照してください。

    SDx の操作プロジェクトが SDx IDE で開くと、プロジェクトが一連のウィンドウおよびエディター (IDE ではパースペクティブと呼ばれる) で表示されます。ツールは、SDx パースペクティブ (デフォルト) が開きます。

    1: 概要

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 7

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1164-sdaccel-platform-development.pdfhttps://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1238-sdx-rnil.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=7

  • 図 1: SDAccel - デフォルト パースペクティブ

    ソフトウェアの開き方については、SDx の起動を参照してください。ここで示すように、デフォルト パースペクティブには [Project Explorer] ビュー、[Project Editor] ウィンドウ、[Outline]ビューが上部に、[Report] ビュー、[Console] ビュー、[Target Connections] ビューが下部に表示されます。次は、これらの簡単な説明です。• [Project Explorer]: プロジェクト フォルダーおよびソース ファイル、ビルド ファイル、ツールで生成されるレポー

    トがツリー ビューで表示されます。• [Project Editor]: SDx IDE でプロジェクトを操作するウィンドウで、プロジェクト設定、文脈依存のコード エディ

    ターが表示され、プロジェクトを操作するコマンドが多くあります。• [Outline]: [Project Editor] ウィンドウで開いている現在のファイルのアウトラインが表示されます。• [Report]: パフォーマンス見積もり、プロファイル サマリ、ビルド結果などの SDx レポートが表示されます。• [Console]: コンソール、問題のレポート、プロジェクト プロパティ、ログ、ターミナル ビューなどの複数のビュ

    ーが含まれます。• [Target Connections]: Vivado ハードウェア サーバー、TCF (Target Communication Framework)、および QEMU ネ

    ットワーキングなどの SDx ツールに接続されるさまざまなターゲットのステータスが表示されます。[Window] → [Show View] コマンドを使用するとウィンドウを開いたり、閉じたりできるほか、IDE 内で新しい位置にウィンドウをドラッグ アンド ドロップすることで、必要に応じてそれらを並べ替えることができます。[Window] →[Perspective] → [Save Perspective As] をクリックすると、ウィンドウの配置をパースペクティブとして保存します。これにより、最初のプロジェクト編集、レポート解析、デバッグなどのに合わせてパースペクティブを定義できます。

    1: 概要

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 8

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=8

  • [Window] → [Perspective] → [Open Perspective] をクリックすると、別のパースペクティブを開くことができます。SDx (デフォルト) パースペクティブを開くと、デフォルトのウィンドウ配置に戻すことができます。

    コマンド ライン フローSDx IDE に加えて、SDAccel 環境は、5: コンパイル フローに示すように、スクリプト記述された makefile フローまたはコマンド ライン実行をサポートするコマンド ライン インターフェイスを提供します。• ホスト アプリケーションの C および C++ コードは xcpp コマンドを使用してコンパイルできます。• OpenCL カーネルは xocc コマンドを使用してコンパイルできます。• コマンド ライン実行ファイルは /bin インストール ディレクトリにあります。

    1: 概要

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 9

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=9

  • 第 2 章

    SDAccel プロジェクトの作成SDx の起動重要: SDAccel™ アプリケーションは、Linux OS でしか実行できません。SDAccel 環境のソフトウェア要件については、『SDx 環境リリース ノート、インストール、およびライセンス ガイド』 (UG1238)を参照してください。SDx IDE はデスクトップ アイコンまたはコマンド ラインから起動できます。• SDx アイコンをダブルクリックしてアプリケーションを開始。• Windows OS の [スタート] メニューから起動。• コマンド プロンプトで sdx と入力。ヒント: コマンド ラインから SDx ツールを起動するには、コマンド シェルをアプリケーションが実行できるように設定するか、[スタート] メニューから [SDx Terminal] ウィンドウを使用する必要があります。コマンド シェルを設定するには、Windows で settings64.bat ファイルを実行するか、Linux で settings64.sh またはsettings64.csh ファイルを /SDx/2017.4 ディレクトリから source で読み込みます。 は、SDx ソフトウェアのインストール フォルダーを意味しています。SDx IDE が開き、最初にツールを開いたときにワークスペースを選択するかどうかを尋ねるメッセージが表示されます。

    図 2: SDAccel ワークスペースを指定します。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 10

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1238-sdx-rnil.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=10

  • SDx ワークスペースとは、プロジェクト、ソース ファイル、ツールで処理された結果を含む SDx フォルダーです。プロジェクトごとに別のワークスペースを定義したり、SDAccel など、プロジェクトの種類別にワークスペースを使用できます。1. [Browse] ボタンでワークスペースを指定したり、[Workspace] フィールドに最適なパスを入力します。2. [Use this as the default and do not ask again] をオンにすると、指定したワークスペースがデフォルトになり、今

    後このダイアログ ボックスは表示されなくなります。ヒント: 現在のワークスペースは、[File] → [Switch Workspace] からいつでも変更できます。3. [OK] をクリックすると、SDx IDE を最初に起動した場合は、SDx Welcome 画面が開いて、次の操作を指定でき

    ます。[Create SDx Project] または [File] → [New] → [SDx Project] のいずれかをクリックします。

    ソースのインポートSDx IDE でプロジェクトを開くと、ソース ファイルをインポートしてプロジェクトに追加できます。ファイルを追加するには、[Project Explorer] ビューで src フォルダーを右クリックして [Import] をクリックします ()。ヒント: これは、[File] → [Import] メニュー コマンドからも実行できます。

    インポートするソース ファイルを指定できる [Import] ダイアログ ボックスが表示されます。インポートされるソースは、アーカイブ、既存プロジェクト、ファイル システム、Git リポジトリなどからのものです。インポートするソース ファイルを選択して [Next] をクリックします。表示されるダイアログ ボックスは、前の手順で選択したソース ファイルの種類によって異なります。次の図は、ファイル システムからソースをインポートした場合の [File System] ダイアログ ボックスを表示しています。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 11

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=11

  • 図 3: ファイル システムソースのインポート

    [File System] ダイアログ ボックスでは、システム内のフォルダーを探して、プロジェクトにインポートするファイルを選択できます。複数フォルダーからファイルを選択して、インポート先のフォルダーを指定できます。[Overwriteexisting resource without warning] をオンにすると、単に既存ファイルが上書きされ、[Create top-level folder] をオンにすると、ファイルがソース ファイル構造と同じディレクトリ構造でインポートされます。オフ (デフォルト) の場合は、ファイルが単に Into フォルダーにインポートされます。ソース ファイルをプロジェクトに追加したら、コンフィギュレーション、コンパイル、アプリケーションの実行を開始できます。

    SDAccel のプログラムザイリンクス FPGA 上で実行されるカーネル用に SDAccel 環境で生成されるカスタム プロセッシング アーキテクチャを使用すると、パフォーマンスをかなり向上できます。この可能性を最大限に活用するため、ホストおよびカーネル コードを FPGA でアクセラレーションするのに適したものにする必要があります。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 12

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=12

  • ホスト アプリケーションは x86 サーバーで実行され、SDAccel ランタイムを使用して FPGA カーネルとの通信を管理します。ホスト アプリケーションは OpenCL API を使用して C/C++ で記述されます。カスタム カーネルは、ザイリンクス FPGA 内の SDAccel プラットフォーム上で実行されます。SDAccel ハードウェア プラットフォームには、グローバル メモリ バンクが含まれます。ホスト マシンとカーネルの間のデータ転送は、これらのグローバル メモリ バンクを介して実行されます。ホスト x86 マシンと SDAccel アクセラレータ ボード間の通信には PCIe バスが使用されます。

    『SDAccel 環境プログラマ ガイド』 (UG1277) では、SDAccel OpenCL ランタイムをセットアップするためのホスト アプリケーション コードの記述方法、カーネル バイナリを SDAccel プラットフォームに読み込む方法、ホスト アプリケーションとカーネルの間でのデータの転送方法、FPGA 上のカーネルをホスト アプリケーションで適切なときにトリガーする方法を説明します。ホストアプリケーション、カーネル コード、およびそれらの間のデータ転送に関する詳細は、『SDAccel 環境プログラマ ガイド』を参照してください。

    カーネル言語サポートSDAccel™ 環境は OpenCL™ C、C/C++ および RTL (Verilog または VHDL) で記述されているカーネルをサポートします。同じアプリケーションで異なるカーネル タイムを使用できます。ただし、各カーネルには特定要件およびコード形式があり、それを使用する必要があります。

    OpenCL カーネルの使用SDAccel™ 環境では、OpenCL™ 言語コンストラクトと OpenCL 1.0 エンベデッド プロファイルのビルトイン関数がサポートされます。次は、SDAccel 環境でコンパイル可能な行列乗算用の OpenCL カーネルの例です。

    __kernel __attribute__ ((reqd_work_group_size(16,16,1))) void mult(__global int* a, __global int* b, __global int* output){ int r = get_local_id(0); int c = get_local_id(1); int rank = get_local_size(0); int running = 0; for(int index = 0; index < 16; index++){ int aIndex = r*rank + index; int bIndex = index*rank + c; running += a[aIndex] * b[bIndex]; } output[r*rank + c] = running; return;

    }

    重要: math.h などの標準 C ライブラリは OpenCL C カーネルでは使用できません。代わりに、OpenCL のビルトインC 関数を使用してください。

    C/C++ のカーネルの使用行列乗算用のカーネルは、Vivado® HLS ツールで合成できる C/C++ コードで記述できます。この情報で取り込まれたカーネルであれば、SDAccel™ 環境では、Vivado HLS で利用可能な最適化テクニックがすべてサポートされます。唯一ユーザーが留意しておくべき点は、この方法で記述されたカーネルは、特定の関数シグネチャに準拠している必要があることです。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 13

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1277-sdaccel-programmers-guide.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=13

  • 重要: グローバル変数および printf() は HLS の C/C++ カーネルではサポートされていません。

    void mmult(int *a, int *b, int *output){#pragma HLS INTERFACE m_axi port=a offset=slave bundle=gmem#pragma HLS INTERFACE m_axi port=b offset=slave bundle=gmem#pragma HLS INTERFACE m_axi port=output offset=slave bundle=gmem#pragma HLS INTERFACE s_axilite port=a bundle=control#pragma HLS INTERFACE s_axilite port=b bundle=control#pragma HLS INTERFACE s_axilite port=output bundle=control#pragma HLS INTERFACE s_axilite port=return bundle=control

    const int rank = 16; int running = 0; int bufa[256]; int bufb[256]; int bufc[256]; memcpy(bufa, (int *) a, 256*4); memcpy(bufb, (int *) b, 256*4);

    for (unsigned int c=0;c

  • 4.x またはそれ以前のバージョンのプラットフォームでは、arg_name は大文字で、接頭辞も大文字の M_AXI_ が付いたインターフェイス名 M_AXI_ARG_NAME が使用されていました。重要: 現在のプラットフォーム (v5 またはそれ以降) では、小文字のインターフェイス名 m_axi_arg_name が使用されます。arg_name も接頭辞 m_axi_ も小文字です。このインターフェイス名は、特定プラットフォームの DDR メモリ インターフェイスへインターフェイスを接続するようツールに指示する一部のアドバンス オプションで必要になります。制御インターフェイスは次のコマンドで指定されます。

    #pragma HLS INTERFACE s_axilite port= bundle=

    これらのプラグマの使用方法については、『SDx プラグマ リファレンス ガイド』 (UG1253) を参照してください。カーネルが C++ で定義される場合は、カーネルになるようターゲットになっている関数を extern "C" { ... } で囲みます。extern "C" 使用すると、コンパイラ/リンカーで C の命名規則および呼び出し規則が使用されます。構造体を使用する場合は、構造体のサイズをバイト (合計が 2 のべき乗) で指定します。基本インターフェイスの最大ビット幅は 512 ビットまたは 64 バイトであることを考慮し、構造体のサイズは、4、8、16、32、または 64 バイトにすることを推奨します。重要: ホスト コートとカーネル コードの間のミスアライメント リスクを緩和させるには、構造体エレメントで同じサイズを使用することを推奨します。ヒント: カーネルのグローバル メモリ ポインターには、C++ 任意制度型のデータ型を使用できます。これらは、値渡しされるスカラー カーネル入力にはサポートされていません。コマンド ライン フローを使用する場合は、たとえば --kernel オプションを使用してカーネル名が xocc に渡されます。

    xocc .. --kernel my_c_kernel

    xocc コマンドの詳細は、ザイリンクス OpenCL コンパイラ (xocc) を使用した OpenCL カーネルのコンパイルを参照してください。RTL カーネルの使用ホスト アプリケーションでは、HLS カーネルと同じように、次のような関数シグネチャを使用して RTL カーネルを起動します。

    void mmult(int *a, int *b, int *output)

    void mmult(unsigned int length, int *a, int *b, int *output)

    つまり、RTL デザインには、「開始、実行、終了」のソフトウェア関数またはカーネルに似た実行モデルが必要になります。• 呼び出されたときに、開始できる必要があります。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 15

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1253-sdx-pragma-reference.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=15

  • • すべてのデータ値を計算する必要があります。• データを返し、操作を終了する必要があります。RTL デザインに異なる実行モデルがある場合は、デザインをこの方法で実行できるようにするため、ロジックを追加する必要があります。RTL カーネル ウィザードは、そうした変更を実行できるようにするフローを提供します。詳細は、付録 E: RTL カーネルの作成を参照してください。

    システムのビルドSDAccel 開発環境でザイリンクス OpenCL デバイスで実行するためのアプリケーションのコンパイルは、コンパイルターゲットを選択してから実行します。このステップでは、ホストおよびカーネル コードのコンパイルだけでなく、ソリューションのバイナリ コンテナーすべてのカスタム演算ユニットも生成されます。

    図 4: アクティブなビルド コンフィギュレーション

    アプリケーション プロジェクトを開いた状態で、Project Editor ウィンドウでコンパイル ターゲットを指定します。[Active build configuration] でコンパイル ターゲットを指定します。選択肢は次のとおりです。• [Emulation-SW]: ソフトウェア エミュレーションで使用するプロジェクトをコンパイルします。カーネル コード

    は、ソフトウェア エミュレーション フローでホスト アプリケーションを使用して、プロセッサでデバッグできます。

    • [Emulation-HW]: ハードウェア エミュレーションで使用するプロジェクトをコンパイルします。このフローでは、FPGA デバイスで実行されるロジックの機能をテストするため、ハードウェア シミュレータが起動されます。

    • [System]: 「ビルド システム フロー」とも呼ばれ、FPGA ハードウェアにカーネルをコンパイルします。

    ヒント: [Build] ( ) コマンドから、または [Project] → [Build Configurations] → [Set Active] をクリックして、コンパイル ターゲットを割り当てることもできます。推奨フローは、次のようになります。1. 機能を確認するため、ソフトウェア エミュレーション (sw_emu) を実行します。2. カスタム ハードウェアを作成し、カーネルのパフォーマンスを確認するため、ハードウェア エミュレーション

    (hw_emu) を実行します。3. カスタム ハードウェアをインプリメントするため、ハードウェア hw システムをビルドします。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 16

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=16

  • 5: コンパイル フローで説明されているように、makefile またはコマンド ラインから次のコマンドを使用して、コンパイル ターゲットを指定することもできます。

    xocc --target sw_emu|hw_emu|hw ...

    使用するコンパイル方法は、選択されているカーネル コンパイル ターゲットによって変わります。xocc --targetオプションは、プロセッサでターゲットになっているカーネルと、FPGA デバイスでターゲットになっているカーネルとではそれぞれ異なるフローを起動します。

    ソフトウェア エミュレーションの使用SDAccel™ 開発環境では、CPU のアプリケーション エミュレーションが、典型的な CPU/GPU プログラミングでの反復的な開発プロセスのようなものです。このタイプの開発スタイルの場合、プログラマは開発しつつ、繰り返しコンパイルしてアプリケーションを実行します。ソフトウェア エミュレーションの主な目的は、論理的に正しくして、アプリケーションをカーネルに分割することにあります。アプリケーションのカーネルへの分割と最適化は OpenCL™ 環境に不可欠ですが、パフォーマンスはSDAccel 環境のこの段階のアプリケーション開発の主な目的ではありません。CPU ベースのエミュレーションの場合、ホスト コードとカーネル コードの両方が x86 プロセッサで実行できるようにコンパイルされます。高速コンパイルと run ループを使用して改良された反復アルゴリズムのプログラマ モデルは、CPU コンパイルと run サイクルと同じ速度で保持されます。

    ハードウェア エミュレーションの使用SDAccel™ 環境では、アプリケーションのカーネルごとに少なくとも 1 つのカスタム演算ユニットが生成されます。つまり、ソフトウェア エミュレーション フローでアプリケーションが正しく機能していることを確認はできますが、FPGA を実行するターゲット デバイスでの機能の確認はソフトウェア エミュレーションでは確約できません。アプリケーションを展開する前に、ツールで生成されたカスタム演算ユニットが正しく計算できていることをチェックする必要があります。SDAccel 環境には、ハードウェア エミュレーション フローがあり、カスタム演算ユニット用に生成されたロジックの機能をチェックできます。このフローでは、FPGA デバイスで実行されるロジックの機能をテストするため、SDAccel環境でハードウェア シミュレータが起動されます。ハードウェア エミュレーション用のメモリ モデルは RTL とはサイクル精度が違います。このため、プロファイル サマリ レポートにあるパフォーマンスを示す数値は概算値でしかなく、異なるカーネル インプリメンテーション間のパフォーマンスを比較する場合の一般ガイダンスとしてのみ使用してください。

    ターゲット FPGA/プラットフォームの構築SDAccel™ 開発環境では、バイナリ コンテナーの各演算ユニットに対しカスタム ロジックが生成されます。この構築には、SDAccel アプリケーション コンパイル フローのほかのステップよりも実行に時間がかかるのが一般的です。FPGA デバイスをターゲットにした演算ユニットのコンパイル手順は次のようになります。1. 特定カーネルに対しカスタムの演算ユニットを生成します。2. OpenCL® バイナリ コンテナーに演算ユニットをインスタンシエートします。3. ターゲット デバイスのメモリおよびインフラストラクチャ エレメントに演算ユニットを接続します。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 17

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=17

  • 4. FPGA プログラミング ファイルを生成します。カーネル コードのカスタム演算ユニットの生成には、SDAccel 環境の演算ユニット ジェネレーターであるザイリンクス Vivado® 高位合成 (HLS) ツールのプロダクション レベルで実証済みの機能が利用されます。ソリューションで使用するターゲット デバイスの特性に基づき、パフォーマンスを最大化させつつ、同時に FPGA デバイスの演算リソースの消費を最小限に抑えるカスタム ロジックを生成するため、SDAccel 環境で演算ユニット コンパイラが起動します。すべてのコード形式で、最大パフォーマンスを得るために演算ユニットを自動的に最適化するのは不可能なので、コンパイラに追加のユーザー入力が必要になります。『SDAccel 環境プロファイリングおよび最適化ガイド』(UG1207)では、カスタム演算ユニットへのカーネル操作のインプリメンテーションを最適化することを目的にした、SDAccel 環境で使用可能な追加ユーザー入力が説明されています。演算ユニットがすべて生成されると、これらのユニットは、ソリューションのターゲット デバイスで提供されるインフラストラクチャ エレメントに接続されます。この場合のデバイスのインフラストラクチャ エレメントは、OpenCLアプリケーションをサポートするために定義されているメモリ、制御、I/O のデータ プレーンのすべてを指します。SDAccel 環境では、アプリケーション実行中にザイリンクス デバイスをプログラムするために使用される FPGA バイナリを生成するため、カスタム演算ユニットと基本デバイス インフラストラクチャがまとめられます。重要: SDAccel 環境では、常に有効な FPGA ハードウェア デザインが生成されますが、制御およびメモリのデータ プレーンで使用可能なバンド幅は、自動的には最適に割り当てられません。この最適化は、演算ユニットごとにメモリおよび制御のデータ プレーンへの接続ポイントを選択して、手動で設定できます。

    2: SDAccel プロジェクトの作成

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 18

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1207-sdaccel-optimization-guide.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=18

  • 第 3 章

    カーネルのプロファイルおよび最適化SDAccel™ でアルゴリズム最適化を実行する場合、次の 3 つの最適化が実行されます。• ホスト最適化• カーネル最適化• PCIe® 帯域幅最適化ホスト コードの最適化については、ほとんどのアプリケーション開発者が理解しているはずです。これには、通常アルゴリズムの複雑性、全体的なシステム パフォーマンス、データの局所性などを解析する必要があります。パフォーマンスのボトルネックを見つける方法を示した手法ガイドおよびソフトウェア ツールなどは多くあります。これらと同じ方法が、SDAccel でアクセラレーションをターゲットにした関数に適用できます。このため、プログラマは、まず全体的なプログラム パフォーマンスを最終的なターゲットとは別に最適化する必要があります。ただし、SDAccel と汎用ソフトウェアの大きな違いは、SDAccel プロジェクトの場合、コアがアルゴリズムを計算する部分が FPGA の負担になっているところにあります。つまり、開発者はアルゴリズムの同時処理、データ転送のほか、プログラマブル ハードウェアがターゲットであるという事実にも注意しておく必要があります。通常は、プログラマがアクセラレーションするアルゴリズムのセクションを指定する必要があります。計算とアクセラレータへの必要なデータ転送間の率は、システム バスが不必要なボトルネックを作成しないですむように十分な値にする必要があります。同様に、ホストはアクセラレータを効率的に使用する必要があります。これには、データ転送とカーネル実行がされるだけでなく、可能であれば、前後に追加でプロセスが実行されるようにホスト コードを最適化する必要もあります。SDAccel では、これらの最適化をサポートするため、ホスト コードとハードウェア カーネルを詳細に解析しやすくするレポートが生成されます。プロジェクトを構築する際に自動的に生成されるレポートは、SDx IDE の [Reports] ビューにリストされます。リストされたレポートは、ダブルクリックで開きます。次の図は、HLS レポート、アプリケーション タイムライン、およびプロファイル サマリの 3 つの主なレポートを示しています。SDx IDE からこれらのレポートを開くには、[Reports] ビューが表示されるようにしておく必要があります。このビューは、通常 [Project Explorer] ビューの下にあります。ヒント: 表示されていない場合は、[Window] → [Show View] → [Other] をクリックすると表示されます。詳細は、SDxの操作を参照してください。HLS レポートには、高位合成 (High-Level Synthesis) プロセスに関する詳細が含まれます。このタスクでは、FPGA に機能をインプリメントするため C/C++ モデルがハードウェア記述言語に変換されます。これにより、プログラマが直接ハードウェア インプリメンテーションに関わって、カーネル インプリメンテーションを最適化できるようになります。

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 19

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=19

  • 図 5: [HLS Report] ウィンドウ

    [Application Timeline] には、実行中の OpenCL® インターフェイス呼び出しがグラフィカルに表示されます。アプリケーション タイムライン全体で実行された演算と時間などを視覚化できます。これにより、カーネル同期および効率的な並列実行に関する問題を見つけることができるようになります。

    図 6: [Application Timeline] ウィンドウ

    [Profile Summary] には、アプリケーション パフォーマンス全体に関する注釈付きの詳細が表示されます。プログラムの実行中に収集されたデータはすべて SDAccel で集められ、カテゴリ別に分類されます。プロファイル サマリでは、実際のデータ転送とカーネル実行の数と統計をより詳細に掘り下げることができます。注記: プロファイル サマリには、プロファイル ルール チェック (PRC) も含まれます。PRC には現在のパフォーマンス数とよく達成される基準数がハイレベルに表示されます。

    3: カーネルのプロファイルおよび最適化

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 20

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=20

  • 図 7: [Profile Summary] ウィンドウ

    各ビューアーの詳細およびプロファイリング、最適化手法、共通最適化段階の詳細、またコーディング ガイドラインについては、『SDAccel 環境プロファイリングおよび最適化ガイド』 (UG1207) を参照してください

    カーネルのユーザー指定の SLR 割り当てダイナミック プラットフォームでは、通常インプリメンテーション ツールにより、カーネルがアクセスするメモリ バンクと同じ SLR (Super Logic Region) に配置されると想定されます。ロジック リソースが競合して、カーネルが自動的に正しい SLR 配置されなくなる場合は、xocc ツールへ追加で入力が提供されて、カーネルのロジックが指定されたSRL に割り当てられます。この明示的な指示子で SLR に 1 つまたは複数のカーネルを配置すると、この情報がダイナミック プラットフォームのメモリ サブシステムと共有され、SLR クロッシング パイプラインが自動的に追加され、プラットフォームでのタイミング クロージャーが実行しやすくなります。重要: 次の機能は、現在のところ SDx メモリ サブシステム インスタンスを含む KCU1500 および VCU1525 ダイナミック プラットフォームにのみ該当します。プラットフォーム デザインに SLR 割り当て情報を指定するには、次の 2 つの手順が必要です。1. ユーザー ポスト システム リンク Tcl ファイルの作成:

    カーネルを特定の SLR に割り当てるには、ユーザーがまず userPostSysLink.tcl ファイルを作成する必要があります。このファイルには、次の set_property 割り当てが 1 つまたは複数含まれている必要があります。

    set_property CONFIG.SLR_ASSIGNMENTS \[get_bd_cells insert_kernel_name_here]

    3: カーネルのプロファイルおよび最適化

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 21

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1207-sdaccel-optimization-guide.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=21

  • は SLR (SLR0、SLR1、SLR2 ...) の文字列で、カーネルのロジックを含める場所です。次に例を示します。

    set_property CONFIG.SLR_ASSIGNMENTS SLR0 [get_bd_cells vadd_0]set_property CONFIG.SLR_ASSIGNMENTS SLR1 [get_bd_cells vadd_1]set_property CONFIG.SLR_ASSIGNMENTS SLR0 [get_bd_cells vadd_2]

    2. 追加で xocc オプションを指定して、ユーザー ポストシステム リンク Tcl ファイル (userPostSysLink.tcl)をプラットフォーム リンキングに適用します。必要な SLR_ASSIGNMENTS プロパティが userPostSysLink.Tcl ファイルに取り込まれたら、xocc コマンドラインに次のオプションを追加で指定して、割り当てをデザインに適用します。

    --xp param:compiler.userPostSysLinkTcl=

    重要: Tcl ファイルへのフル ファイル システム パスを指定する必要があります。相対パスは、この段階では xocc コマンドでサポートされていません。

    DSA 作成要件IP インテグレーターの SLR オートメーション機能は、現在のところ set_param がイネーブルになっている場合にのみ使用できます。

    set_param ips.enableSLRParameter 2

    サポートされるプラットフォーム DSA (KCU1500/VCU1525) を使用すると、このパラメーターが DSA プレシステムリンク Tcl フックでイネーブルになります。set_param は、プロジェクトを開く前に割り当てられるのが理想的で、最悪でも IP インテグレーター デザインを開いたり、作成する前に割り当てられる必要があります。2017.4 を使用してこの機能を新しい DSA に適用する場合、set_param が DSA プレリンク Tcl フック ファイルに適用されるようにしてください。

    複数メモリ バンクにアクセスするカーネルのガイドラインDSA のメモリ バンクはプラットフォームの SLR に分散されます。SLR 間をまたぐのに使用できる接続数には制限があるので、カーネルをほとんどの接続があるメモリ バンクと同じ SLR に配置するのが一般的です。これにより、SLRをまたがる接続の競合が減り、SLR クロッシングに関連する余分なロジック リソースが消費されないようになります。

    3: カーネルのプロファイルおよび最適化

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 22

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=22

  • 図 8: 同じ SLR 内のカーネルおよびメモリ

    前の図に示すように、カーネルに 1 つの AXI インターフェイスが接続されていて、それが 1 つのメモリ バンクにのみマップされている場合、DSA リリース情報にそのカーネルのメモリ バンクに接続された SLR がリストされます。この場合、カーネルはマップされるメモリ バンクと同じ SLR 内に含めるのが最適です。この単純な例の場合、追加入力の必要もなく、デザイン ツールで自動的にその SLR にカーネルが配置される可能性がありますが、次のような条件の場合は、明示的に SLR 割り当てを指定する必要があることもあります。• 同じメモリ バンクにアクセスするカーネルが多く含まれる場合• カーネルにメモリ バンクの SLR で使用可能でない特殊なロジック リソースがいくつか必要な場合複数の AXI インターフェイスが同じメモリ バンクにアクセスする場合も、1 つの AXI インターフェイスを使用したカーネルの場合と同じように処理されます。カーネルは AXI インターフェイスが接続されるメモリ バンクと同じ SLR内に含める必要があります。

    3: カーネルのプロファイルおよび最適化

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 23

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=23

  • 図 9: 隣接 SLR のメモリ バンク

    複数の AXI インターフェイスがあり、別の SLR に含まれる複数のメモリ バンクに接続される場合は、そのカーネルのアクセスするメモリ バンクを一番多く含む SLR にカーネルを配置することをお勧めします。これにより、このカーネルで必要とされる SLR クロッシング数が最小限に抑えられ、使用可能な SLR クロッシング リソースが増えるので、ユーザー デザイン内のほかのカーネルでメモリ バンクに接続するために使用できるリソースが増えます。カーネルが別の SLR にあるメモリ バンクに接続される場合は、userPostSysLink.tcl ファイルでカーネルの SLR割り当てを明示的に指定します。

    3: カーネルのプロファイルおよび最適化

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 24

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=24

  • 図 10: 2 つ離れた SLR のメモリ バンク

    前の図に示すように、プラットフォームに含まれる SLR が 3 つ以上になると、カーネルがすぐ隣の SLR にないメモリバンクに接続されることもあります。このような場合、離れたメモリ バンクへアクセスするために複数の SLR バウンダリをまたがる必要があるので、SLR クロッシング リソースのコストが増えます。このようなコストを避けるには、カーネルを中間の SLR に配置して、隣接する SLR へのクロッシングだけが必要なようにします。

    3: カーネルのプロファイルおよび最適化

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 25

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=25

  • 第 4 章

    SDAccel 環境でのアプリケーションのデバッグ

    SDAccel™ 環境は、ホスト コードとカーネル コードの 2 つのコード間のインタラクションを効率よくデバッグできるよう、アプリケーション レベルのデバッグ機能を提供します。ここに示すトピックの詳細は、『SDAccel 環境デバッグ ガイド』 (UG1281) を参照してください。詳細は、このガイドを参照してください。推奨されるアプリケーション レベルのデバッグ フローには、3 つのレベルのアプリケーション デバッグがあり、次のようにまとめることができます。1. ソフトウェア エミュレーションを実行します。

    ソフトウェア エミュレーションを実行して、ホストおよびカーネル コードが機能的に正しいことを検証します。すべての操作モードでアプリケーションが正しく機能するまで、ソフトウェア エミュレーションで繰り返し実行することを推奨します。そのほうが、コンパイルに時間がかからず、すばやく実行できます。

    2. ハードウェア エミュレーションを実行します。ハードウェア エミュレーションを実行して、ホストおよびカーネルのハードウェア インプリメンテーションが正しいことを検証します。このエミュレーションでは、ハードウェアの正確なモデルを使用して、詳細な検証を実行します。ハードウェア エミュレーションの実行時間はソフトウェア エミュレーションよりも長くなります。

    ヒント: デバッグおよび検証には小さなデータ セットを使用することを推奨します。また、この段階なら、パフォーマンスを改善するためカーネル コードを変更するオプションもあります。詳細は、『SDAccel 環境プロファイリングおよび最適化ガイド』 (UG1207)を参照してください。機能が正しいこと、見積もられたカーネル パフォーマンスが十分であることを確認できるまで、ハードウェア エミュレーションで繰り返し実行します。

    3. 実際にシステムを実行します。この段階で、最終的なシステム イメージ (xclbin) が生成され、実際のハードウェアで実行されます。カーネルが実際の FPGA ハードウェアで正しく実行していることが確認されます。ここから、デバッグを終了し、実際のホスト コードのパフォーマンスを調整していきます。

    この 3 段回アプローチにより、異なるレベルのアブストラクションでデバッグが可能になります。さらに、SDAccel環境は、アブストラクションのレベルに関係なく、コンパイルされたホストおよびカーネル コードのインタラクションをデバッグできる、アプリケーション デバッグ機能を提供します。実行モードはすべて、基本的なコンパイル時間およびランタイム設定オプションを使用し、統合された GUI フロー、バッチ フローでサポートされています。この 2 つのデバッグ フローについては、この後のセクションでさらに説明しますが、これらのフローを始める前に、最も基本的なデバッグ アプローチを簡単に説明します。

    4: SDAccel 環境でのアプリケーションのデバッグ

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 26

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1281-sdaccel-debugging-guide.pdfhttps://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug1207-sdaccel-optimization-guide.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=26

  • カーネル デバッグでの printf() の使用アルゴリズムをデバッグするには、プログラムを実行して主なデータ値を検証することがシンプルで最も基本的な方法です。アプリケーション開発では、プログラム実行内で問題を実際に見つけるにはこれが最適であることがわかっていますが、この段階ではアルゴリズムの一部が FPGA 上で実行されているので、さらにサポートが必要です。このため、SDAccel™ 開発環境では、すべての開発フロー (ソフトウェア エミュレーション、ハードウェア エミュレーション、実際のハードウェアでのカーネルの実行) で OpenCL™ の printf() ビルトイン関数がカーネル内でサポートされています。重要: printf() は C/C++ カーネルではサポートされません。

    次は、printf() を使用したカーネル例で、カーネルがグローバル サイズ 8 で実行されたときの出力を示しています。

    __kernel __attribute__ ((reqd_work_group_size(1, 1, 1)))void hello_world(__global int *a){ int idx = get_global_id(0);

    printf("Hello world from work item %d\n", idx); a[idx] = idx;}

    出力は次のようになります。

    Hello world from work item 0Hello world from work item 1Hello world from work item 2Hello world from work item 3Hello world from work item 4Hello world from work item 5Hello world from work item 6Hello world from work item 7

    重要: printf() メッセージはグローバル メモリにバッファリングされ、カーネル実行が終了したらアップロードされます。printf() が複数カーネルで使用される場合に、各カーネルからのメッセージ順番が必ずホスト ターミナルに表示されるとは限りません。

    SDAccel GUI フローGUI フローで SDAccel™ を実行すると、デバッグ機能に簡単にアクセスできます。次の図のように、プロジェクト ビューで、ハードウェア エミュレーションまたはソフトウェア エミュレーションをターゲットにするため [Kernel debug] チェック ボックスをオンにします。

    4: SDAccel 環境でのアプリケーションのデバッグ

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 27

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=27

  • 図 11: [Software Project Settings] のオプション

    これで設定が完了し、デフォルトのデバッグ コンフィギュレーションを実行できます。カーネルが起動すると、別の GDB コンソールでカーネルの冒頭でブレークポイントにヒットします。

    図 12: GDB コンソール

    このコンソールからは、ブレークポイントの追加、変数の確認、カーネルのデバッグといった標準作業が可能です。注記: ハードウェア エミュレーションでは、効率のいいインプリメンテーションができるように C/C++ コードが変換されるので、すべての文にブレークポイントが配置できるわけはありません (未処理のループおよび関数にはだいたい配置可能)。同様に、保存された変数のみしかアクセスできません。一般的な OpenCL® 構造に簡単にアクセスできるように設計された追加デバッグ機能については、GDB 拡張を参照してください。

    4: SDAccel 環境でのアプリケーションのデバッグ

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 28

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=28

  • SDAccel デバッグ コマンド ライン フローSDAccel™ 環境のアプリケーション デバッグ機能では、ソフトウェア エミュレーション、ハードウェア エミュレーション、またはハードウェアのすべてのモードで実行される OpenCL® アプリケーションをデバッグします。この機能は、関連 OpenCL API など、ホスト側でのデバッグをメインに処理するので、「アプリケーション デバッグ」と呼ばれています。これに対して、OpenCL カーネルのデバッグ (アクセラレーションされた部分) は「カーネル デバッグ」と呼ばれています。コマンド ライン フローを使用した SDAccel でのアプリケーション デバッグには次の 4 つのステップがあります。1. 一般的な環境設定2. デバッグ用のホスト コードの準備3. デバッグ用のカーネル コードの準備4. デバッグ用の GDB をスタンドアロンで起動重要: SDAccel 環境は、すべてのフローでホスト プログラムのデバッグをサポートしていますが、カーネル デバッグは gdb を使用したエミュレーション フローでのみサポートされています。また、波形解析など、よりハードウェア中心のデバッグ サポートもカーネル用に提供されています。

    一般的な環境設定

    コマンド ラインからソフトウェア エミュレーションまたはハードウェア エミュレーションを実行するには、次の環境変数を設定する必要があります。表 1: 環境変数および値

    環境変数 値XCL_EMULATION_MODE sw_emu または hw_emuXILINX_SDX インストールされている SDx へのパス。XILINX_OPENCL インストールされている SDx へのパス ( ${XILINX_SDX} と同じ)。LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${XILINX_SDX}/lib/lnx64.o:$

    {XILINX_SDX}/ runtime/lib/x86_64:${XILINX_SDX}/lib/lnx64.o/Default

    注記: 4.x 以前の DSA を使用する場合は、ソフトウェアおよびハードウェア エミュレーションで 4.x の DSA ライブラリを LD_LIBRARY_PATH の冒頭に追加する必要があります。ホスト コードの準備ホスト プログラムは、実行ファイルにより生成されたデバッグ情報を使用してコンパイルする必要があります。次のように、xcpp コマンド ラインに -g を追加します。

    xcpp -g ...

    ヒント: xcpp はシステム コンパイラ (gcc) のラッパーなので、-g オプションを指定すると、コンパイラでデバッグ情報が生成されるようになります。

    4: SDAccel 環境でのアプリケーションのデバッグ

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 29

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=29

  • カーネルの準備カーネル コードは、ソフトウェア エミュレーションまたはハードウェア エミュレーションでのホスト プログラムと一緒にデバッグできます。デバッグ情報は、まず、xocc コマンド ラインに -g オプションを渡して、バイナリコンテナーで生成する必要があります。

    xocc -g -t [sw_emu | hw_emu] ...

    –t オプションは、ソフトウェア エミュレーション (sw_emu) またはハードウェア エミュレーション (hw_emu) を指定するために使用します。ソフトウェア エミュレーション フローでは、OpenCL ベースのカーネルに対し追加のランタイム チェックを実行できます。ランタイム チェックには次のものが含まれます。• カーネル インターフェイス バッファーによる境界外アクセスをチェック (オプション: address)• カーネルにより初期化されていないメモリ アクセスがあったかどうかをチェック (オプション: memory)次のように、これらのオプションは -–xp オプションを介してイネーブルされ、また、リンク段階 (-l) でイネーブルにする必要があります。

    xocc -l –t sw_emu --xp param:compiler.fsanitize=address -o bin_kernel.xclbinxocc -l –t sw_emu --xp param:compiler.fsanitize=memory -o bin_kernel.xclbinxocc -l –t sw_emu --xp param:compiler.fsanitize=address,memory -o bin_kernel.xclbin

    オプションがイネーブルになったら、ソフトウェア エミュレーション実行中にデバッグ ログが /Emulation-SW/-Default>/emulation_debug.log に出力され、エミュレーション診断メッセージが確認できます。

    GDB の起動ホスト プログラムおよびカーネルがデバッグ情報を使用してビルドされている場合は (-g オプションでビルドされている)、アプリケーションのデバッグにスタンドアロンの GDB を起動できます。このフローは、ddd などの GDBのグラフィカル フロントエンドを使用しているときにも使用できます。

    GDB の起動手順は次のようになります。1. SDx を実行する環境を設定するため、次のファイルを読み込んで SDx コマンド設定が PATH に含まれるようにし

    ます。• C シェル: source /settings64.csh• Bash: source /settings64.sh

    2. XCL_EMULATION_MODE 環境変数が設定されていることを確認します。3. アプリケーション デバッグ機能は sdaccel.ini ファイルの属性を使用してランタイム時にイネーブルにする

    必要があります。ホスト実行ファイルと同じディレクトリに sdaccel.ini ファイルを作成し、次の行を含めます。

    [Debug]app_debug=trueprofile=true

    4: SDAccel 環境でのアプリケーションのデバッグ

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 30

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=30

  • 4. xgdb – args host.exe test.xclbin でザイリンクス ラッパーから gdb を起動します。xgdb ラッパーで次の設定が実行されます。• gdb --args host.exe test.xclbin を実行し、ホスト プログラムで GDB を起動します。• Python インストールに PYTHONHOME および PYTHONPATH の環境変数を設定します。現時点では、SDx の

    gdb には Python 2.6 または Python 2.7 が必要です。たとえば、コンピューターにインストールされているPython が Python 2.6 であれば、次のように環境変数を設定します (Bash シェルの例)。

    export PYTHONHOME=/usr export PYTHONPATH=/usr/lib64/python2.6/:/usr/lib64/python2.6/lib-dynload/

    • GDB コンソールで Python スクリプトを実行してザイリンクス GDB 拡張 をイネーブルにします。

    gdb> source ${XILINX_SDX}/scripts/appdebug.py

    ホスト コードのデバッグgdb を起動したら、一般的なアプリケーション デバッグ セッションと同じように、ホスト コードをデバッグできます。GDB でコードを順番に実行し、コードの内容が予期どおりであることを確認するため、OpenCL オブジェクトをチェックします。

    フル エミュレーション デバッグハードウェアがよりうまくエミュレートできるように、ソフトウェア エミュレーション カーネルは別のプロセスとして起動します。ホスト コードのデバッグに GDB を使用している場合は、カーネル ラインに設定されているブレークポイントは、カーネル コードがそのプロセス内で実行されていないのでヒットしません。ホスト コードの同時デバッグおよびカーネル コードをサポートするため、SDAccel™ 環境には、sdx_server を使用して実行されているカーネルをデバッグするメカニズムがあります。このため、ターミナルを 3 つそれぞれ起動する必要があります。• 最初のターミナルでは、次のコマンドを実行して sdx_server を起動します。

    ${XILINX_SDX}/bin/sdx_server --sdx-url

    • 2 番目のターミナルでは、ホスト コード (xgdb) を実行します。 スタンドアロンの GDB の起動の設定手順に従います。この時点で、sdx_server を実行している最初のターミナルに「GDB listener port NUM」と表示されます。GDBリスナー ポートはカーネル プロセスをデバッグするのに GDB で使用されるので、sdx_server で返される数値を継続的にチェックします。GDB リスナー ポートが表示されると、実行されているカーネル プロセスがsdx_server に接続し、ユーザーからのコマンドが入力されるまで待機状態になります。このプロセスを制御するには、GDB の新しいインスタンスを起動し、sdx_server に接続する必要があります。

    4: SDAccel 環境でのアプリケーションのデバッグ

    UG1023 (v2017.4) 2018 年 7 月 30 日 japan.xilinx.com [placeholder text]SDAccel 環境ユーザー ガイド 31

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1023&Title=SDAccel%20%26%2329872%3B%26%2322659%3B%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B&releaseVersion=2017.4&docPage=31

  • 重要: sdx_server が実行している場合は、デバッグ用にコンパイルされているすべての起動プロセスが接続し、ユーザーからの指示があるまで待機状態になります。GDB が接続しない、またはコマンドを提供しない場合は、カーネル コードが停止しているのように見えます。• 3 つ目のターミナルでは、xgdb コマンドを実行し、GDB のプロンプトで次のコマンドを実行します。

    ○ ソフトウェア エミュレーションの場合:

    “file ${XILINX_SDX}/data/emulation/cpu_em/generic_pcie/model/genericpciemodel”

    ○ ハードウェア エミュレーションの場合:1. sdx_server の一時ディレクトリ /tmp/sdx/$uid を検索します。2. このデバッグ セッションの DWARF ファイルを含む sdx_server プロセス ID (PID) を検索します。3. gdb コマンド ラインで、「file /tmp/sdx/$uid/$pid/NUM.DWARF」を実行します。

    • どちらのエミュレーションでも、カーネル プロセスに接続します。

    target remote :NUM

    NUM は、GDB リスナー ポートとして sdx_server で返される数値です。これらのコマンドを実行したら、必要に応じてカーネルにブレークポイントを設定し、continue コマンドを実行し、カーネル コードをデバッグできます。すべてのカーネル実行が完了しても、ホスト コードは続行しますが、接続は解除されます。ソフトウェアおよびハードウェア エミュレーション フローの場合、アクセラレートされたカーネル コードのデバッグの繰り返し実行には制限があります。このコードがソフトウェア エミュレーションフローでプリプロセスされ、ハードウェア エミュレーション フローでハードウェア記述言語に変換され、デバッグ中にシミュレーションされるとき、いつでもどんな位置にもブレークポイントを設定できるわけではありません。特にハードウェア エミュレーションの場合、保存ループおよび関数などで限られた数のブレークポイントしかサポートされていません。このような制限はありますが、カーネル/ホスト インターフェイスのデバッグには、このモードが便利です。ヒント: ソフトウェア/ハードウェア エミュレーションのカーネルを SDAccel GUI 環境でデバッグする場合は、ホストコードおよびカーネル コードを同時にデバッグするための環境が用意されているのであれば、これらの手順が自動的に処理され、カーネル プロセスも自動的にデバッグされます。

    ザイリンクス GDB 拡張アプリケーション デバッグには新しい GDB コマンドがあります