FPGA 上での DPC++ アプリケーションのプロファイル
この記事は、インテル® デベロッパー・ゾーンに公開されている「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
コンパイラーが必要です。 - ツール:
- ベータ版インテル® oneAPI ベース・ツールキット (Linux* 版) (英語)
- ベータ版 oneAPI ベース・ツールキット用インテル® FPGA アドオン (英語)
- ベータ版インテル® VTune™ プロファイラー: CPU/FPGA 相互作用解析 (プレビュー機能)
注
- インテル® 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 ボード (およびインストール可能なアドオン)
ツールキットをインストールして設定する
- インテル® PAC カードをマシンの PCIe* スロットに装着します。
- ベータ版インテル® oneAPI ベース・ツールキット (Linux* 版) (英語) をダウンロードしてインストールします。すべてのデフォルトのオプションを選択して、オンラインまたはオフライン・インストーラーのいずれかを選択します。
- ベータ版 oneAPI ベース・ツールキット用インテル® FPGA アドオン (英語) をダウンロードします。
- ベータ版 oneAPI ベース・ツールキット用インテル® FPGA アドオンを展開して、
setup.sh
を実行します。すべてのデフォルトのオプションを選択します。 - oneAPI 環境をセットアップします。
source <oneAPI インストール・ディレクトリー>/setvars.sh
- FPGA ボードを装着します。
aocl install
- 診断コマンドを実行して、すべての診断にパスすることを確認します。
aocl diagnose
サンプル・アプリケーションをビルドする
- インテル® oneAPI DPC++ コンパイラー・サンプルのリポジトリー (英語) からサンプルコードをダウンロードします。
git clone https://github.com/intel/BaseKit-code-samples.git
crr
サンプルフォルダーを開きます。cd BaseKit-code-samples/FPGAExampleDesigns/crr
src/CMakeLists.txt
ファイルを開きます。set(HARDWARE_LINK_FLAGS
から始まる、ハードウェア・フラグをリストしているコード行に移動します。- リストに
-Xsprofile
を追加します。 - サンプルのメイン・ディレクトリーに戻ります。
build
という名前の新しいフォルダーを作成して開きます。mkdir build cd build
- サンプルをコンパイルします。
cmake .. make fpga
この処理には数時間かかります。処理が終了すると、
crr.fpga
という名前の実行ファイルが生成されます。
これで、FPGA ハードウェア上で crr.fpga
を実行できます。
CPU/FPGA 相互作用解析を実行する
- インテル® VTune™ プロファイラーを起動して、[Welcome (ようこそ)] ページで [New Project (新規プロジェクト)] をクリックします。
[Create a Project (プロジェクトの作成)] ダイアログボックスが表示されます。
- プロジェクトの名前と場所を指定したら、[Create Project (プロジェクトの作成)] ボタンをクリックします。
[Configure Analysis (解析の設定)] ダイアログボックスが開きます。
- [WHERE (どこを)] ペインで、[Local Host (ローカルホスト)] を選択します。
- [WHAT (何を)] ペインで、ターゲットとして [Launch Application (アプリケーションを起動)] を選択します。
- [Application (アプリケーション)] フィールドに、
crr.fpga
実行ファイルのパスを指定します。 - [Application parameters (アプリケーションのパラメーター)] フィールドに、
ordered_inputs.csv
を入力します。
- [Application (アプリケーション)] フィールドに、
- [HOW (どのように)] ペインで、[Platform Analysis (プラットフォーム解析)] グループの [CPU/FPGA Interaction (preview) (CPU/FPGA 相互作用 (プレビュー))] を選択します。
- 解析の設定で、[FPGA profiling data source (FPGA プロファイル・データソース)] に [AOCL Profiler (AOCL プロファイラー)] を選択します。
- ウィンドウの下部にある [Start (開始)] ボタンをクリックして解析を開始します。
結果を解釈する
データ収集が完了すると、[CPU/FPGA Interaction (CPU/FPGA 相互作用)] ビューポイントでファイナライズされた結果を確認できます。最初に、[Summary (サマリー)] ウィンドウで次の詳細を確認します。
- FPGA の上位計算タスク
- CPU の上位のタスクとホットスポット
[Bottom-up (ボトムアップ)] ウィンドウに切り替えて、以下を含むカーネルレベルの詳細情報を確認します。
- ストール
- 占有率
- データ転送サイズ
- 転送データの平均帯域幅
タイムライン・ビューを使用して、カーネル・インスタンスに関する次の情報を確認します。
- 開始時間/終了時間
- 全体のストール
- 占有率
- 帯域幅メトリック
[Bottom-up (ボトムアップ)] ウィンドウで、カーネルを右クリックしてコンテキスト・メニューから [View Source (ソースを表示)] を選択します。
[Source (ソース)] ビューが開いて、特定のカーネルソース行のメトリックを確認できます。
関連項目
- 設定レシピ
- CPU/FPGA 相互作用解析 (英語)