インテル® VTune™ プロファイラーによって収集されたデータを、注目する領域でフィルター処理したり、データを特定のプログラムユニット (モジュール、関数、フレーク領域など) でグループ化して解析を行います。
インテル® VTune™ プロファイラーのフィルター処理メカニズムを使用して、特定のデータセット、オブジェクト、または時間領域に注目します。注目する領域に焦点を絞り、小さなデータセットを処理するときに GUI の応答を高速化することもできます。
特定のプロセスの解析に集中するには、[プロセスにアタッチ] ターゲットタイプを使用せずに、すべてのプロセスのデータを収集します。次に、収集した結果をフィルター処理します。
[ボトムアップ] ウィンドウの [グループ化] ドロップダウン・メニューから、プロセスを選択してグループ化します。例えば: [プロセス/関数/スレッド/コールスタック]。
グリッドで注目するプロセスを右クリックし、コンテキスト・メニューから [選択してフィルターイン] を選択します。
インテル® VTune™ プロファイラーは、選択したプロセスのデータのみを表示するためグリッドを更新します。
[グループ化] ドロップダウン・メニューから、必要とするグループ化レベルを選択します。例えば、[関数/コールスタック]。
インテル® VTune™ プロファイラーは、選択したプロセスのデータを、指定した粒度でグループ化します。
特定のプログラム単位 (関数、モジュールなど) でフィルター処理するには、以下のオプションを使用します。
[コンテキスト・メニュー] オプション: 対象のオブジェクトをグリッドで選択して右クリックし、[選択してフィルターイン] コンテキスト・メニュー・オプションを選択して、選択したオブジェクト以外のオブジェクトを表示から除外します。また、[選択してフィルターアウト] を選択すると、選択したオブジェクトが非表示になります。下にあるフィルターバーが更新され、データのパーセンテージがメトリックごとに表示されます。
例えば、最も時間がかかる関数 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 パケットステージ/ スレッド/ 関数 / コールスタック] |
通常、[サマリー] ウィンドウで解析を始め、目的のオブジェクトをクリックすると、解析に最も適した分類でグループ化されたグリッドが表示されます。
事前設定されたグループ化レベルが解析の目的にそぐわない場合、 [グループ化のカスタマイズ] ボタンをクリックして [カスタムグループ] ダイアログボックスを設定し、独自のグループを作成できます。