7新しいIntel®VTune Amplifier XEの機能





VTune Amplifier XEは、アプリケーションレベルとマイクロアーキテクチャレベルの両方で、ソフトウェアパフォーマンスの詳細な分析でユーザーに長い間知られています。



このツールは静止しておらず、新しい機能を積極的に開発、改善、獲得しています。 この投稿では、9月にリリースされたVTune Amplifier XE 2013、および最近の後続のアップデートの両方に登場した新しい「機能」の概要を説明します。







サイクル分析



ご存知のように、高性能コンピューティングの最適化は、ループを中心に構築されることがよくあります-ここでは、並列化、キャッシュを最適に使用するためのデータの再配布、およびベクトル化です。 VTune Amplifier XE 2013アップデート3は、どのホットスポットが実際に「ホットサイクル」であるかを判断できます。 ユーザーは、ソースコード内のサイクルを検索するのではなく、それらの最適化に集中でき、さらに、特定の各サイクルを最初から最初まで最適化する効果を評価できます。







テキスト検索



VTune Amplifier XEのプロファイリング結果は膨大な量になる可能性があり、関心のある関数/モジュール/同期オブジェクトなどをすぐに見つけるのは困難です。

これで、ユーザーはすべてのメインウィンドウ(ボトムアップ、トップダウン、ソースビュー、アセンブリビュー)で単純なテキスト検索を使用できるようになりました。







エネルギー効率分析



アプリケーションのエネルギー効率はますます重要になっています。 結局のところ、ハードウェアだけでなく、ソフトウェアもエネルギーの浪費のせいです。 VTune Amplifier XE 2013は、この分野で2つの新しいタイプの分析を導入しました(これまではLinuxでのみ利用可能です)。



CPU周波数の分析により、すべてのコアでのプログラム実行中のクロック周波数の変化を追跡できます。 これにより、ターボブースト、SpeedStepなどの周波数変更テクノロジーで遊ぶために、アクティブなエネルギー消費の推定値が得られます。







スリープ状態のCPUの分析により、受動的な消費電力(C状態間の遷移)の推定値が提供されます。 「目覚め」-「目覚め」を追跡します。 より深いCステートに移行してそこから抜け出すにはコストがかかるため、これが頻繁に発生する場合は、状況の変更について考えるのが理にかなっています。 スリープ状態のCPUの分析は、状態遷移の頻度、さまざまな状態にある統計、そして最も重要なこととして、タイマーなどの望ましくない「目覚め」を引き起こすオブジェクトを示します。







スタックを使用したEBS分析



VTune Amplifier XEは、2つの基本的なプロファイリングアプローチを使用します。 1つ目は、分析中のプロセスのバイナリインストルメンテーションに基づいており、「ユーザーレベル分析」と呼ばれます。 2番目のアプローチ(EBS分析)はプロセスでは機能せず、プロセッサのPMUモジュールで機能します。これにより、ユーザーアプリケーションだけでなく、オペレーティングシステムとドライバーもプロファイリングできます。 さらに、ソフトウェアの「マイクロアーキテクチャ」問題を見つけることができます。



EBSの2013バージョンのリリース前は、分析により関数とそのコードを見つけることができましたが、呼び出しスタックは見つけることができませんでした。 たとえば、システム機能が「ホットスポット」であることが判明した場合、これは不便でした。これを担当するユーザーコードを見つけるのは容易ではありませんでした。 2013年以降、EBSベースの分析もコールスタックを提供しています。 これで、システムコールとドライバーからアプリケーションへのパスが含まれている場合、それをトレースできます。







別の良い点は、関数呼び出しの数の統計計算です。 これで、関数の実行に費やされた合計時間を確認できるだけでなく、その形成方法を評価することもできます-多くの場合、少しずつ、またはその逆です。







Javaアプリケーションのプロファイリング



2013年から、VTune Amplifier XEはJavaアプリケーションプロファイリングをサポートしています。 これは、Javaと「ネイティブ」モジュールの呼び出しを組み合わせた「混合」コードの分析(たとえば、重い計算を実行するため)に特に役立ちます。 さらに、プロファイラーを使用すると、Javaコードのマイクロアーキテクチャの問題、たとえばキャッシュの非効率的な使用を検出できます。 詳細については、 この記事 (英語)を参照てください







カスタムタスク用のAPI



多くの並列アプリケーションは、「タスク」に基づいて構築されます-スレッドによって実行される作業の小さな論理要素。 たとえば、Intel Threading Building Blocksはタスクに基づいて構築されています。



VTune Amplifier XEが提供するAPI(__itt API)は、最近このようなタスク用のマークアップツールで補充されました。



void do_foo(double seconds); DWORD WINAPI work (void *pArg) { __itt_task_begin (domain, __itt_null, __itt_null, UserSubTask); do_foo (1); __itt_task_end (domain); return 0; } int main() { int i = 0; HANDLE hThread [NUM_THREADS]; __itt_task_begin (domain, __itt_null, __itt_null, UserTask); do_foo (0.3); for (i = 0; i < NUM_THREADS; i++) { hThread[i] = CreateThread ( NULL, 0, work, (void*)i, 0, 0 ); } WaitForMultipleObjects (NUM_THREADS, hThread, TRUE, INFINITE ); __itt_task_end (domain); return 0; }
      
      





ユーザータスクは、「タスクタイプ/関数/コールスタック」のグループ化と[タスク]ウィンドウで追跡できるようになりました。











この投稿でタスクAPIの詳細を読んでください。



コマンドラインの改善



VTune Amplifier XEは、 貴重で美しいGUIであるだけでなく、高度なコマンドインターフェイスでもあります。 コマンドラインでプロファイリングの結果を見ると(またはそのような出力は自動テストで使用されます)、端末ウィンドウにすべてが収まらず、フォーマットが「移動」しないことがあります。 2013バージョンでは、レポート幅パラメーターが表示され、印刷結果の幅が制限され、すべてが収まるようになりました。



 $ amplxe-cl -R hotspots -report-width=100 -r r004cc
      
      





GNU gprofのファンのために、結果を表示するための新しい形式がgprof形式で登場しました。



 $ amplxe-cl -report gprof-cc -r r001hs
      
      





必要なイベントのセットを使用して独自のEBS分析を作成する場合、別のマシンで実行する必要がある場合があります。 グラフィカルインターフェイスがない場合は、コマンドラインをコピーできます。 最近まで、このような非標準の分析とともに、追加の手順が必要な構成ファイルをコピーして、このファイルの使用方法などを把握する必要がありました。



VTune Amplifier XEの最新のアップデートでは、これがより簡単になりました-すべてのパラメーターはコマンドラインに含まれています。 GUIで「コマンドライン」を押して、生成された行をリモートマシンにコピーするだけです。 追加のファイルは必要ありません。







まとめ



投稿で説明されている7つの新機能はすべて、Intel VTune Amplifier XE 2013 update 3の最新バージョンで利用可能です-ダウンロード、試用、お楽しみください。 試用版は公式サイトからダウンロードできます。



All Articles