サマリー

共通ボトルネックの検出チュートリアルは完了しています。インテル® VTune™ プロファイラーを使用してコードのホットスポットとハードウェアの問題を解析する際に覚えておくべき重要な事項を以下に示します。

ステップ

チュートリアルの内容

チュートリアルの重要なポイント

1.ボトルネックを検出

パフォーマンス・スナップショットから始めて、主な制限の要因と最適化の次のステップを特定します。

  1. ホットスポット解析を使用して、問題を特定のコード領域に分離します。
  2. メモリーアクセス解析を使用して、ボトルネックの背後にある正確なメカニズムを理解します。
  • アプリケーションを初めて解析するときは、パフォーマンス・スナップショット解析から始めて、主な問題領域と次の手順を特定することを推奨します。
  • ホットスポット解析を使用して、特定のコード領域のパフォーマンスの問題を明らかにします。[Bottom-up] ウィンドウでホットスポットである関数名をクリックすると、ボトルネックの原因となっているコード行が表示されます。
  • メモリーアクセス解析を使用して、ソフトウェアにおいて最も一般的な制限要因の 1 つである非効率的な DRAM アクセスに関連する問題を特定します。

2.問題を修正してアプリケーションを再コンパイル

コードを編集し、アプリケーションを再コンパイルして、キャッシュに適さない DRAM アクセスパターンを排除しました。

これにより、アプリケーションの実行時間が大幅に短縮されました。

コンパイラーのオプションがベクトル化にどのように影響するか確認するため、異なる最適化レベルを使用するようにコンパイラー・オプションを設定しました。

  • 効率的でキャッシュに適した DRAM アクセスパターンを使用すると、パフォーマンスが大幅に向上します。
  • コンパイラー・ オプションは、特に複数の異なるコンパイラーが使用されている場合、アプリケーションの動作に目に見えない形で影響を与える可能性があります。インテル® VTune™ プロファイラーは、アプリケーションのベクトル化が不適切であり、利用可能なハードウェア・リソースが十分に活用されていない問題を特定するのに役立ちます。

3.ベクトル化の問題を解決

異なる最適化レベルでアプリケーションを再コンパイルし、コードがベクトル化されました。

ただし、パフォーマンス・スナップショットを使用しているときに、128 ビットのベクトルレジスターのみが使用され、256 ビットレジスターはまったく使用されていないことに気付きました。

HPC パフォーマンス特性解析を使用すると、古い命令セット拡張である SSE2 ベクトル命令セット拡張が使用されていることが判明しました。ハードウェア・リソースの一部が十分に活用されていません。

プラットフォームを機能に活用するようにベクトル化されたことを確認するため、異なるオプションを使用してアプリケーションを再コンパイルしました。

  • パフォーマンス・スナップショットと HPC パフォーマンス特性解析の両方の解析タイプは、不適切なベクトル化に関連する問題を特定するのに役立ちます。
  • コンパイラー・オプションは詳しく説明されており、その動作もわかっていますが、オプションの特殊性を見逃してしまうことはよくあります。これにより、いずれのコンパイラーを使用しても、ハードウェア・リソースを最大限に活用できるようにアプリケーションをコンパイルすることが困難となる可能性があります。インテル® VTune™ プロファイラーは、開発のあらゆる段階でこのような問題を検出するのに役立ちます。

4.マイクロアーキテクチャー使用の解析

パフォーマンス・スナップショットの推奨に従って、マイクロアーキテクチャー全般解析により次の最適化手順を特定しました。

この解析タイプを使用すると、アプリケーションをさらに最適化する最善の方法はキャッシュ・ブロッキング手法であることがわかりました。

  • インテル® VTune™ プロファイラーは、インテルのアーキテクトによって調整された多数のマイクロアーキテクチャー・メトリックを提供し、情報に基づいた最適化の決定を可能にします。
  • メトリックと µPipe 分布図を使用して、次の最適化を決定しました。

5.ワークの確認

Compare Results 機能を使用して、さまざまな最適化段階でアプリケーションのパフォーマンスを比較しました。

最適化前後の解析結果を比較して、定期的な回帰テストを行います。GUI から、インテル® VTune™ プロファイラー・ツールバーの [Compare Results] ボタンをクリックします。コマンドラインから vtune コマンドを実行します。

次のステップ: 解析するアプリケーションを準備します。次に、インテル® VTune™ プロファイラーを使用してパフォーマンスの問題を見つけて排除します。

関連情報