CPU/FPGA 相互作用解析を使用して、データ並列 C++ (SYCL*) または OpenCL* アプリケーションを実行する専用の FPGA を搭載したシステム上の CPU と FPGA のバランスを評価します。
CPU/FPGA 相互作用解析を使用して、実行されたカーネルの FPGA パフォーマンス、CPU と FPGA 間のメモリー転送合計時間、CPU と FPGA ワークロードの待機時間による影響を評価します。
インテル® VTune™ プロファイラーは、これらの FPGA デバイスメトリックを収集します。
グローバル帯域幅
ストール
占有率
アクティビティー
アイドル
この手順に従って、CPU/FPGA 相互作用解析のオプションを設定します。
必要条件:
コンパイル対象 | 利用するコンパイラー | オプション |
---|---|---|
OpenCL* アプリケーション |
インテル® FPGA SDK for OpenCL* オフライン・コンパイラー |
-profile オプション |
SYCL* アプリケーション |
インテル® oneAPI DPC++/C++ コンパイラー |
-Xsprofile オプション |
その他のコンパイラー・オプション (OpenCL* プロファイル専用) については、「FPGA プログラミング・ガイド」 (英語) を参照してください。
インテル® VTune™ プロファイラー・ツールバーの (スタンドアロン GUI)/ (Visual Studio* IDE) [解析の設定] ボタンをクリックします。
[解析の設定] ウィンドウが表示されます。
[何を] ペインで次の操作を行います。
[アプリケーション] バーでホストの実行ファイルを指定します。
必要に応じて、ホスト・アプリケーションの引数を [アプリケーションの引数] に指定します。
[どのように] ペインで ブラウズボタンをクリックします。
この設定のコマンドラインを生成するには、 コマンドライン・ボタンをクリックします。
[開始] ボタンをクリックして解析を実行します。
パフォーマンス・プロファイラー・ラッパーを使用して profile.json ファイル形式で FPGA プロファイル・データを収集した場合、それらをインテル® VTune™ プロファイラーにインポートできます。
収集済みデータの読み取りを高速化するには、profile.json を空のフォルダーにコピーして、コンパイル・ディレクトリー全体ではなくそのフォルダーだけをインポートします。
パフォーマンス・プロファイラー・ラッパーを使用してデータをプロファイルする方法 (oneAPI アプリケーションのみ) の詳細については、「FPGA 最適化ガイド」 (英語) を参照してください。
CPU/FPGA 相互作用解析の結果は、[CPU/FPGA 相互作用] ビューポイントに表示されます。ビューポイントには次のウィンドウが含まれます。
[サマリー] ウィンドウには、CPU 時間とプロセッサー利用率、および SYCL* や OpenCL* カーネルの実行時間を特定する、アプリケーション全体の実行に関する統計情報が表示されます。[ボトムアップ] ビューに表示されるカーネルをダブルクリックすると、[ソース] ビューを介してパフォーマンス・データの詳細がを確認できます。
[ボトムアップ] ウィンドウには、ボトムアップ・ツリーに関数、CPU 時間、および関数ごとの CPU 利用率が表示されます。このビューに表示される関数またはカーネルをクリックして [ソース] ビューを表示します。
[プラットフォーム] ウィンドウには、SYCL* または OpenCL* カーネル、メモリー転送、CPU コンテキスト・スイッチ、FPU 利用率、および SYCL* または OpenCL* カーネルと CPU スレッドのメトリックとパフォーマンス・データが時間軸で表示されます。
CPU/FPGA 相互作用ビューポイントを使用して以下を確認します。
FPGA 利用率: FPGA 上で実行されているカーネルの一覧については、[サマリー] ウィンドウの [上位 FPGA 計算タスク] を参照してください。[ボトムアップ] ウィンドウは、各カーネルの合計および平均実行時間を表示します。
メモリー転送: [ボトムアップ] ウィンドウの [データ転送] カラム、または [プラットフォーム] ウィンドウの [計算キュー] 行を参照して、SYCL* および OpenCL* カーネルとメモリー転送を確認します。
ワークロードの影響: [サマリー] ウィンドウの [コンテキスト・スイッチ時間] メトリックには、CPU コンテキスト・スイッチで費やされる時間が表示されます。コンテキスト・スイッチは、アプリケーション実行中に [プラットフォーム] タブにも表示されます。