コードで使用したメモリー割り当て/割り当て解除のトレースをサポートしたインテル® VTune™ Amplifier XE 2016 の新しいメモリーアクセス解析

インテル® VTune™ プロファイラー

この記事は、インテル® デベロッパー・ゾーンに公開されている「New Memory Access Analysis in VTune™ Amplifier XE 2016 Supports of Tracing Memory Allocation/De-allocation Used in Your Code」 (https://software.intel.com/en-us/blogs/2015/09/11/new-memory-access-analysis-in-vtune-amplifier-xe-2016-supports-of-tracing-memory) の日本語参考訳です。


以前の (XE 2015) バージョンでは、メモリーアクセス解析でメモリーロード/ストア、L1/L2/LLC および XSNP ミスに関するイベント数を記録し、帯域幅解析で LLC ミスと OFFCORE イベント (ローカルの DRAM にアクセスする LLC ミスを示すほかのコアからの応答) に関するイベント数を記録して、これらのデータを GFLOPS メトリックで表示していました。

XE 2016 バージョンの新しいメモリーアクセス解析は、以前のメモリーアクセスと帯域幅機能を組み合わせたものになりました。また、コードのシステムメモリーの割り当て / 割り当て解除をトレースする新しい機能も追加されています。この機能はシステムメモリーの割り当て / 割り当て解除 API を使用するため、ランタイム・オーバーヘッドが増加することに注意してください。次のような制限があります。

  1. Linux* オペレーティング・システムでのみ利用できます。
  2. Sandy Bridge 以降のプロセッサーのみサポートしています。

GUI で [Analyze memory object (メモリー・オブジェクトを解析)] を有効にするには、[Memory Access (メモリーアクセス)] を選択した後、メモリーアクセス解析を行う前に [Analyze memory object (メモリー・オブジェクトを解析)] チェックボックスをオンにします。

コマンドラインで同じ操作を行うには、次のコマンドを使用します。
# amplxe-cl -c memory-access -knob analyze-mem-objects=true -data-limit=0 -d 60 — ./cache_test

Amplifier XE で結果を開いて、[Bottom-up (ボトムアップ)] テーブルをクリックし、ビューポイントとして [Memory Usage (メモリー使用量)] を選択して、[Function / Memory Object / Allocation Stack (関数 / メモリー・オブジェクト / 割り当てスタック)] を使用します。

レポートには、ホットな関数 cache_test_array_struct() の CPU 時間、負荷、LLC ミスのカウント、平均レイテンシー (サイクル) が含まれます。関数に含まれるメモリー・オブジェクト g_array_stru (サイズ 2MB) も表示されています。通常は、ホットな関数の LLC ミスのカウントと平均レイテンシーを確認する必要があります。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください

タイトルとURLをコピーしました