FPGA 上での DPC++ アプリケーションのプロファイル

同カテゴリーの次の記事

インテル® VTune™ プロファイラー・パフォーマンス解析クックブック: 設定レシピ

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® VTune™ Profiler Performance Analysis Cookbook」の「Profiling an FPGA-driven DPC++ Application」の章の日本語参考訳です。


このレシピは、FPGA 上で DPC++ (データ並列 C++) アプリケーションをプロファイルします。このレシピでは、インテル® VTune™ プロファイラーの CPU/FPGA 相互作用解析タイプ (プレビュー機能) に統合されている AOCL プロファイラーを使用します。

コンテンツ・エキスパート: Dmitry Ryabtsev (英語)

使用するもの

このレシピの最小ハードウェア要件とソフトウェア要件は次のとおりです。

  • アプリケーション: crr。この FPGA サンプルは、インテル® oneAPI DPC++ コンパイラー・サンプルのリポジトリー (英語) から入手できます。
  • コンパイラー: DPC++ アプリケーションをプロファイルするには、ベータ版インテル® oneAPI ツールキット (英語) に含まれる dpcpp コンパイラーが必要です。
  • ツール:

    • インテル® VTune™ プロファイラーのダウンロードと製品サポートについては、https://www.isus.jp/intel-vtune-amplifier-xe/ を参照してください。
    • このクックブックのレシピはすべてスケーラブルであり、インテル® VTune™ Amplifier 2018 以降に適用できます。バージョンにより設定がわずかに異なることがあります。
    • ベータ版インテル® oneAPI ベース・ツールキット向けのバージョンから、インテル® VTune™ Amplifier の名称がインテル® VTune™ プロファイラーに変わりました。引き続き、インテル® Parallel Studio XE またはインテル® System Studio のコンポーネントとして、あるいはスタンドアロン版のインテル® VTune™ プロファイラーをご利用いただけます。
  • オペレーティング・システム: Ubuntu* 18.04
  • CPU: インテル® サーバー・プラットフォーム開発コード名 Cascade Lake
  • FPGA: インテル® プログラマブル・アクセラレーション・カード (インテル® PAC) インテル® Arria® 10 GX FPGA 搭載版または DPC++ 向けインテル® Stratix 10 GX FPGA PAC ボード (およびインストール可能なアドオン)

ツールキットをインストールして設定する

  1. インテル® PAC カードをマシンの PCIe* スロットに装着します。
  2. ベータ版インテル® oneAPI ベース・ツールキット (Linux* 版) (英語) をダウンロードしてインストールします。すべてのデフォルトのオプションを選択して、オンラインまたはオフライン・インストーラーのいずれかを選択します。
  3. ベータ版 oneAPI ベース・ツールキット用インテル® FPGA アドオン (英語) をダウンロードします。
  4. ベータ版 oneAPI ベース・ツールキット用インテル® FPGA アドオンを展開して、setup.sh を実行します。すべてのデフォルトのオプションを選択します。
  5. oneAPI 環境をセットアップします。
    source <oneAPI インストール・ディレクトリー>/setvars.sh
    
  6. FPGA ボードを装着します。
    aocl install
    
  7. 診断コマンドを実行して、すべての診断にパスすることを確認します。
    aocl diagnose
    

サンプル・アプリケーションをビルドする

  1. インテル® oneAPI DPC++ コンパイラー・サンプルのリポジトリー (英語) からサンプルコードをダウンロードします。
    git clone https://github.com/intel/BaseKit-code-samples.git
    
  2. crr サンプルフォルダーを開きます。
    cd BaseKit-code-samples/FPGAExampleDesigns/crr
    
  3. src/CMakeLists.txt ファイルを開きます。
  4. set(HARDWARE_LINK_FLAGS から始まる、ハードウェア・フラグをリストしているコード行に移動します。
  5. リストに -Xsprofile を追加します。
  6. サンプルのメイン・ディレクトリーに戻ります。build という名前の新しいフォルダーを作成して開きます。
    mkdir build
    cd build
    
  7. サンプルをコンパイルします。
    cmake ..
    make fpga
    

    この処理には数時間かかります。処理が終了すると、crr.fpga という名前の実行ファイルが生成されます。

これで、FPGA ハードウェア上で crr.fpga を実行できます。

CPU/FPGA 相互作用解析を実行する

  1. インテル® VTune™ プロファイラーを起動して、[Welcome (ようこそ)] ページで [New Project (新規プロジェクト)] をクリックします。

    [Create a Project (プロジェクトの作成)] ダイアログボックスが表示されます。

  2. プロジェクトの名前と場所を指定したら、[Create Project (プロジェクトの作成)] ボタンをクリックします。

    [Configure Analysis (解析の設定)] ダイアログボックスが開きます。

  3. [WHERE (どこを)] ペインで、[Local Host (ローカルホスト)] を選択します。
  4. [WHAT (何を)] ペインで、ターゲットとして [Launch Application (アプリケーションを起動)] を選択します。
    • [Application (アプリケーション)] フィールドに、crr.fpga 実行ファイルのパスを指定します。
    • [Application parameters (アプリケーションのパラメーター)] フィールドに、ordered_inputs.csv を入力します。

  5. [HOW (どのように)] ペインで、[Platform Analysis (プラットフォーム解析)] グループの [CPU/FPGA Interaction (preview) (CPU/FPGA 相互作用 (プレビュー))] を選択します。
  6. 解析の設定で、[FPGA profiling data source (FPGA プロファイル・データソース)][AOCL Profiler (AOCL プロファイラー)] を選択します。

    FPGA 解析のセットアップ

  7. ウィンドウの下部にある [Start (開始)] ボタンをクリックして解析を開始します。

結果を解釈する

データ収集が完了すると、[CPU/FPGA Interaction (CPU/FPGA 相互作用)] ビューポイントでファイナライズされた結果を確認できます。最初に、[Summary (サマリー)] ウィンドウで次の詳細を確認します。

  • FPGA の上位計算タスク
  • CPU の上位のタスクとホットスポット

CPU/FPGA 相互作用の結果サマリー

[Bottom-up (ボトムアップ)] ウィンドウに切り替えて、以下を含むカーネルレベルの詳細情報を確認します。

  • ストール
  • 占有率
  • データ転送サイズ
  • 転送データの平均帯域幅

[Bottom-up (ボトムアップ)] ウィンドウ

タイムライン・ビューを使用して、カーネル・インスタンスに関する次の情報を確認します。

  • 開始時間/終了時間
  • 全体のストール
  • 占有率
  • 帯域幅メトリック

CPU/FPGA 相互作用のタイムライン・ビュー

[Bottom-up (ボトムアップ)] ウィンドウで、カーネルを右クリックしてコンテキスト・メニューから [View Source (ソースを表示)] を選択します。

[Source (ソース)] ビューが開いて、特定のカーネルソース行のメトリックを確認できます。

[Source (ソース)] ビュー

関連項目

関連記事