インテル® VTune™ プロファイラーによって収集されたデータを、注目する領域でフィルター処理したり、データを特定のプログラム単位 (モジュール、関数、フレーム領域など) でグループ化して解析を行います。
インテル® VTune™ プロファイラーは、特定のオブジェクトや時間領域に注目することを可能にする強力なフィルター処理を提供します。これにより、注目する領域にのみ集中することができ、同時に小さなデータセットを処理する際の GUI の応答性が高まります。
特定のプログラム単位 (関数、モジュールなど) でフィルター処理するには、以下のオプションを使用します。
[コンテキスト・メニュー] オプション: 対象のオブジェクトをグリッドで選択して右クリックし、[選択してフィルターイン] コンテキスト・メニュー・オプションを選択して、選択したオブジェクト以外のオブジェクトを表示から除外します。また、[選択してフィルターアウト] を選択すると、選択したオブジェクトが非表示になります。下にあるフィルターバーが更新され、データのパーセンテージがメトリックごとに表示されます。
例えば、最も時間がかかる関数 sphere_intersect をフィルターインします:
フィルターが適用されると、フィルターバーには収集された CPU 時間データの 24.9% しか表示されていないことが分かります。
[フィルターバー] オプション: [フィルター] ドロップダウン・メニュー (プロセス、モジュール、スレッド) でプログラム単位を選択し、特定のデータを表示するグリッドとタイムライン・ビューを除外します。例えば、51.5% の CPU 時間を占有する analyze_locks プロセスを選択した場合、結果データにはこのモジュールのみの統計が表示され、フィルターバーには CPU 時間の 51.354% のみが表示されていることが示されます:
タイムライン上で解析を特定の領域に絞り込むことができます。例えば、GPU 計算/メディア・ホットスポット・ビューポイントのタイムラインで、注目する領域を選択し、右クリックして [選択してズームイン] または [選択してズームインおよびフィルターイン] を選択します。
選択した時間範囲で右側のコンテキスト・サマリーが更新され、フィルターツールバーにはデータのパーセンテージ (デフォルト) が表示されます。
[グループ化] メニューを使用して、データを表示する順番に注目して編成できます。利用可能なグループは解析タイプとビューポイントによって異なります。
例えば、開発したモジュールから収集したデータを表示する場合、[モジュール/関数/コールスタック] の粒度を選択し、モジュール内で最もホットな関数を特定してから、[関数/スレッド/論理コア/コールスタック] の粒度に切り替えて、ホットな関数が実行された CPU を確認します。
インテル® VTune™ プロファイラーは、意味的に次のグループに分類できる、事前定義された粒度を用意しています。
解析するグループ |
説明 |
---|---|
基本 |
関数のホットスポットを特定して、問題があるコールスタックを区別します。 ほとんどのビューポイントでは、関数レベルがデフォルトです。アプリケーション・モジュールにデバッグ情報がある場合、ホットスポット関数は正しく検出されます。デバッグ情報が不完全または欠落している場合、関数名が<不明>と表示されたり、モジュール内の関数で収集されたサンプルが隣接する外部関数によるものであることがあります。 例: 関数/コールスタック インライン展開された関数と JIT コンパイルされた関数のすべてのインスタンスを解析する [ソース関数/関数/コールスタック] |
マルチスレッド化解析 |
関数、OS (スレッド)、または HW (パッケージ、コア、スレッド) の観点から、マルチスレッド・アプリケーションのホットスポットを解析します。 例: 異なるスレッドで実行される異常な関数を特定する [関数/スレッド/論理コア/コールスタック] マルチプロセッサー・システムのインターコネクト/NUMA の問題を特定する [関数/パッケージ/論理コア/スレッド/コールスタック] 特定のハイパースレッドの問題を特定する [物理コア/論値コア/関数/コールスタック] コア間のスレッドの移行によって引き起こされる問題を特定する [物理コア/スレッド/関数/コールスタック] と [スレッド/物理コア/関数] |
フレーム解析 |
低速および高速フレームレートを特定します。 例: [フレームドメイン/フレーム持続時間タイプ/関数/コールスタック] [フレームドメイン/フレーム持続時間タイプ/フレーム/関数/コールスタック] |
OpenMP* 解析 |
OpenMP* 領域から呼び出されたホットスポットを特定します。 例: 異なるセグメント間のロード・インバランスを特定する [OpenMP* 領域/OpenMP* バリアからバリアへのセグメント/関数/コールスタック] 高速/低速な OpenMP* 領域インスタンスを解析する [OpenMP* 領域/OpenMP* 領域持続時間タイプ/関数/コールスタック] |
GPU 解析 |
GPU がアイドルまたはコードを実行している間の CPU アクティビティーを解析します。 例: [レンダーと GPGPU パケットステージ / 関数 / コールスタック] [レンダーと GPGPU パケットステージ/ スレッド/ 関数 / コールスタック] |
通常、[サマリー] ウィンドウで解析を始め、目的のオブジェクトをクリックすると、解析に最も適した分類でグループ化されたグリッドが表示されます。
事前設定されたグループ化レベルが解析の目的にそぐわない場合、 [グループ化のカスタマイズ] ボタンをクリックして [カスタムグループ] ダイアログボックスを設定し、独自のグループを作成できます。