インテル® VTune™ プロファイラー・ユーザーガイド

HPC パフォーマンス特性ビュー

計算集約型またはスループット・アプリケーションの CPU 利用率、メモリー効率、および浮動小数点利用率を予測するには、HPC パフォーマンス特性を使用します。計算集約型やスループット・アプリケーションでは、経過時間中にハードウェア・リソースを効率良く使用する必要があります。アプリケーションのパフォーマンスとランタイムを最適化する出発点として、HPC パフォーマンス特性解析を使用します。

HPC パフォーマンス特性ビューポイントで示されるパフォーマンス・データを解釈するには、次のステップに従います。

  1. パフォーマンスのベースラインを測定します。

  2. 最適化の可能性を判断します。

  3. ソースを解析します。

  4. プロセス/スレッドのアフィニティーを解析します。
  5. その他の解析タイプを調査します。

ヒント

ハイブリッド・アプリケーションをチューニングする基本ステップを検討するには、OpenMP* と MPI アプリケーション解析のチュートリアルを利用してください。インテル® デベロッパー・ゾーン (https://software.intel.com/en-us/itac-vtune-mpi-openmp-tutorial-lin (英語)) でチュートリアルを入手できます。HPC パフォーマンス特性解析を説明するウェビナーは、https://software.intel.com/en-us/videos/hpc-applications-need-high-performance-analysis (英語) でご覧いただけます。

1. パフォーマンスのベースラインを測定

アプリケーションの実行に関する一般的な情報を提供する [サマリー] ウィンドウから調査を始めます。最適化の重要な範囲には、経過時間と 1 秒あたりの浮動小数点演算数 (単精度、倍精度、およびレガシー x87) が含まれます。赤文字で示される部分が最適化の対象となる可能性があります。コードの改善に関する詳細を確認するには、フラグにカーソルを移動します。

最適化前後のバージョンを比較するベースラインとして、経過時間と GFLOPS 値を使用します。

2. 最適化の可能性を判断

[サマリー] ウィンドウを確認して、アプリケーションの最適化の可能性を見つけます。改善の可能性があるパフォーマンス・メトリックは赤く表示されます。検出される問題には、有効な物理コア利用率、メモリー依存、ベクトル化、およびこれらの組み合わせが含まれます。以降のセクションでは、それぞれの問題で推奨される次のステップを説明します。

CPU 利用率

メモリー依存

ベクトル化

ベクトル化と GFLOPS メトリックは、インテル® マイクロアーキテクチャー開発コード名 Ivy Bridge、Broadwell、および Skylake でサポートされています。インテル® Xeon Phi™ プロセッサー (開発コード名 Knights Landing) では機能が制限されます。メトリックは、第 4 世代のインテル® プロセッサーでは利用できません。システムで利用可能なプロセッサー・ファミリーを表示するには、[解析の設定] ウィンドウの [どのように] ペインの [詳細] セクションを展開します。

インテル® Omni-Path ファブリックの使用

インテル® Omni-Path ファブリック (インテル® OP ファブリック) メトリックは、インテル® OP ファブリック・インターコネクトを搭載した計算ノードの解析に利用できます。インターコネクト・ハードウェアの上限に達することが MPI 通信のボトルネックに関連しているか確認するのに役立ちます。ここでは、インターコネクトの使用に関する、帯域幅とパケットレートについて説明します。インターコネクトは双方向であるため、帯域幅とパケットレートのデータはどちらも送信と受信に分割されます。ボトルネックはどちらかの方向に関連している可能性があります。

3. ソース解析

最適化する関数をダブルクリックして、関連するソースコードのファイルを [ソース/アセンブリー] ウィンドウに表示します。インテル® VTune™ プロファイラーから直接コードエディターを開いてコードを編集できます (例えば、ホットスポット関数の呼び出し回数を最小限に抑えるなど)。

4. プロセス/スレッドのアフィニティー解析

結果が非効率なコア利用率や NUMA の影響を示す場合、スレッドがプロセッサー・コアにピニング (固定) されているか、またはその方法を理解する必要があります。

スレッド・ピニング・アフィニティーは、MPI などの並列ランタイムの環境変数、または並列ランタイムやオペレーティング・システムが提供する API を使用して設定できます。インテル® VTune™ プロファイラー GUI の [スレッド・アフィニティーの収集] またはコマンドラインの -knob collect-affinity=true を使用して、HPC パフォーマンス特性解析向けのアフィニティー収集を有効にします。このオプションを有効にすると、ソケット、物理コア、および論理コアへのスレッドのピニングを示すスレッド・アフィニティー・コマンドライン・レポートを生成できます。アフィニティー情報は、スレッドのライフタイムの最後に収集されるため、結果として得られるデータは、スレッドのライフタイム中に変更された動的なアフィニティーの問題全体を示すものではありません。

プレビューの HTML レポートを利用して、スレッドの CPU での実行とリモートアクセスにおけるプロセス/スレッドのアフィニティーを確認できます。次のコマンドを使用して HTML レポートを生成します。

vtune -report affinity -format=html -r <result_dir>

これは、プレビュー機能です。プレビュー機能は、正式リリースに含まれるかどうか未定です。皆さんが機能に対する有用性のフィードバックを送ることで、将来の採用決定の判断に役立ちます。プレビュー機能で収集されたデータは、将来のリリースで下位互換が提供される保証はありません。parallel.studio.support@intel.com または intelsystemstudio@intel.com へフィードバックをお送りください。

5. その他の解析タイプを調査

関連情報