< Table Of Contents

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

「パフォーマンス・スナップショット」では、マイクロアーキテクチャーの使用に関する問題について説明しました。チュートリアルのこのステージでは、マイクロアーキテクチャー全般解析を実行して最適化の可能性を探します。

これまでの最適化により、アプリケーションの合計経過時間に大きな利点がもたらされましたが、まだ改善の余地があります。パフォーマンス・スナップショット解析では、マイクロアーキテクチャーが十分に活用されていないことが明らかになりました。

マイクロアーキテクチャー全般解析を実行して、改善の可能性を特定します。

マイクロアーキテクチャー全般解析を実行

マイクロアーキテクチャー全般解析を実行するには:

  1. パフォーマンス・スナップショット解析ツリーで、[マイクロアーキテクチャー全般解析] アイコンをクリックします。

  2. [どのように] ペインで、すべての追加オプションを有効にします。

  3. [開始] ボタンをクリックして解析を実行します。

マイクロアーキテクチャー全般解析の結果データを解釈

アプリケーションが終了すると、インテル® VTune™ プロファイラーはデフォルトで [サマリー] ウィンドウを開きます。

このビューには次の内容が表示されます。

この場合は、次の指標を観察します。

これらの要素を総合的に考慮すると、アプリケーションにメモリーアクセスの問題があるという結論になります。ただし、この問題は、以前にループ変換を使用して解決されたメモリーアクセスの問題とは若干性質が異なります。

ループ変換が適用される前は、アプリケーションはキャッシュに適さないメモリー・アクセス・パターンに拘束されており、その結果、多数の LLC (最終レベルキャッシュ) ミスが発生していました。その結果、DRAM への要求が頻繁に発生するようになりました。

この場合、メモリー帯域幅メトリックが高いことは、アプリケーションが DRAM 帯域幅の制限を飽和させていることを意味します。DRAM の物理的な能力を向上させる方法はありませんが、アプリケーションを変更して、最終レベルキャッシュをさらに有効活用し、DRAM からのロード回数を減らすことは可能です。

(オプション) キャッシュの再利用を改善

一般的に、ほとんどの開発者は、望ましいパフォーマンスの目標に到達すると、それ以上アプリケーションの最適化を停止します。matrix アプリケーションの最適化によってパフォーマンスが向上し、アプリケーションの経過時間が約 90 秒から約 2.5 秒に短縮されました。

さらに最適化したい場合は、コードを変更してキャッシュ・ブロッキング手法を実装できます。キャッシュ・ブロッキングは、データブロックがキャッシュにロードされ、必要な期間だけ再利用されるようにデータ アクセスを再配置し、DRAM アクセスの数を大幅に削減するアプローチです。

キャッシュ・ブロッキング手法を使用するようにコードを変更するには:

  1. multiply.h ヘッダーファイルの 36 行目を変更します。

    #define MULTIPLY multiply2

    変更後:

    #define MULTIPLY multiply4

  2. 変更を保存し、アプリケーションを再コンパイルします。

これにより、multiply.c ソースファイルでキャッシュ・ブロッキング手法を実装する multiply4 関数を使用するようにコードが変更されます。

アプリケーションを再コンパイルしたら、任意の分析を実行してパフォーマンスの向上を確認できます。

次のステップ: 前回の結果と比較します。