チュートリアルのこのステージでは、メモリーアクセス解析を実行して、アプリケーションのパフォーマンスが低下する主なボトルネックを理解します。
multiply1 ループのメモリーアクセス問題の背景にある正確なメカニズムを理解するには、メモリーアクセス解析を実行します。
メモリーアクセス解析を実行するには、次の操作を行います。
以前に収集したパフォーマンス・スナップショットの結果で [メモリーアクセス] のアイコンをクリックするか、メイン ツールバーの [解析の構成] ボタンをクリックします。
[メモリーアクセス] 解析アイコンをクリックしている場合、メモリーアクセス解析が事前に選択されているはずです。そうでない場合、[どのように] ペインでこの解析タイプを選択します。
このアプリケーションでは必要ないため、[どのように] ペインで [OpenMP 領域の解析] オプションを無効にします。
[開始] ボタンをクリックして解析を実行します。
サンプル・アプリケーションが終了すると、インテル® VTune™ プロファイラーは結果を確定し、[サマリー] ビューポイントを開きます。
ここでも、アプリケーションはメモリーアクセスに依存していることに注意してください。システムが DRAM 帯域幅だけに制限されないということは、アプリケーションが飽和した物理 DRAM 帯域幅ではなく、頻繁に小さなメモリー要求によって制限されていることを示しています。
multiply1 関数の正確なメトリックを表示するには、[ボトムアップ] タブに切り替えます。
multiply1 関数では、CPU 時間とメモリー依存メトリック値が最も高く、グリッドの最上部にあります。
LLC (L3) ミスカウントのメトリックが非常に高いことに注意してください。これは、アプリケーションがキャッシュを有効に活用しないメモリー・アクセス・パターンを持っていることを示しています。これにより、プロセッサーが LLC (L3) を頻繁にミスし、DRAM からデータを要求しするためレイテンシーの点でコストがかかります。
この問題を解決する良い方法は、ループ変換手法を適用することです。この場合、メインループで行列の行と列がアドレス指定される方法が変更されます。これにより、非効率的なメモリー・アクセス・パターンが排除され、プロセッサーは LLC (L3) をより有効に活用できるようになります。
次のステップ: メモリーアクセスの問題を解決します。