インテル® VTune™ Amplifier 2018 ヘルプ
並行性解析を使用して、スレッド並列処理とプロセッサー使用率が Poor なホットスポット関数を特定します。
並行性解析は、アプリケーションの実行中に各ポイントで実行されていたスレッド数についての情報を示します。この情報には、現在実行中のスレッド数や実行の準備ができているスレッド数が含まれます。つまり、定義された待機場所やブロッキング API で待機しているスレッドは含まれません。インテル® VTune™ Amplifier はまた、ホットスポットが実行される間の CPU 使用またはスレッド並行性による効率を推測します。CPU 使用によるホットスポット・ビューポイントでは、Poor な使用率は赤いバーで表示され、チューニングを行うべきであることを示します。
並行性解析を行うには次を確認します。
並行性解析向けの設定オプション:
必要条件: プロジェクトを作成し、解析ターゲットを指定します。
インテル® VTune™ Amplifier ツールバーの (スタンドアロン GUI)/(Visual Studio* IDE) [New Analysis (新規解析)] ボタンします。
[Analysis Type (解析タイプ)] ウィンドウをアクティブにして、[New Amplifier Result (新規 Amplifier 結果)] タブを開きます。
左のペインにある解析ツリーから、[Algorithm Analysis (アルゴリズム解析)] > [Concurrency (並行性)] 解析タイプを選択します。
右に [Concurrency] ペインが表示されたら、
解析オプションを設定します。
[CPU sampling interval, ms (CPU サンプリング間隔、ミリ秒)] スピンボックス |
CPU サンプルの間隔 (ミリ秒で) を指定します。 指定可能な値 - 1-1000。 デフォルト値は、10。 |
[Analyze user tasks, events, and counters (ユーザータスク、イベント、カウンターを解析)]チェックボックス |
ITT API を使用してコード中で指定したタスク、イベント、およびカウンターを解析します。このオプションを指定すると、高いオーバーヘッドが生じ、結果ファイルのサイズが増加します。 デフォルト値は、[false] です。 |
[Analyze Intel runtimes and user synchronization (インテルのランタイムとユーザー同期を解析)] チェックボックス |
OpenMP* やインテル® TBB など (またはユーザー定義の) インテルのランタイムで使用されるユーザー同期 API をプロファイルしてスレッドの同期を解析します。このオプションを指定すると、高いオーバーヘッドが生じ、結果ファイルのサイズが増加します。 デフォルト値は、[false] です。 |
[Analyze child processes (子プロセスを解析)] チェックボックス |
OpenMP* 領域をインストルメントおよび解析し、インバランス、ロックの競合、またはスケジュール、リダクション、およびアトミック操作におけるオーバーヘッドなど非効率な振る舞いを特定します。 デフォルト値は、[false] です。 |
[Details (詳細)] ボタン |
この解析タイプで使用されるデフォルト設定 (編集不可) のリストを展開/折りたたみます。解析向けの追加設定を修正または有効にする場合、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。この解析タイプ設定の編集可能なコピーが作成され、左ペインの [Custom Analysis (カスタム解析)] に追加されます。 |
下にある [Command Line... (コマンドライン...)] ボタンをクリックして、この設定のコマンドラインを生成できます。
解析を実行するには、[Start (開始)] をクリックします。
並行性解析の結果は、次のビューポイントで表示できます。
ビューポイント |
説明 |
---|---|
Hotspots (ホットスポット) |
多くの CPU 時間を使用しているコード領域 (ホットスポット) を特定するのに役立ちます。 |
Hotspots by CPU Usage (CPU 使用率別ホットスポット) |
多くの CPU 時間を使用しているコード領域 (ホットスポット) を特定するのに役立ちます。CPU 時間は CPU 使用率の状態 (idle、poor、fair、good) に分割されます。 |
Hotspots by Thread Concurrency (スレッドの並行性別ホットスポット) |
多くの CPU 時間を使用しているコード領域 (ホットスポット) を特定するのに役立ちます。CPU 時間はスレッドの並行性の状態 (idle、poor、fair、good、over) に分割されます。 |
Locks and Waits (ロックと待機) |
CPU コアが十分利用されずにスレッドが同期オブジェクト (ロック)、I/O、タイマーで長時間待機しているなど、アプリケーションが利用可能な CPU コアをどのように利用しているかを示して、効率良く活用されていない個所を特定します。CPU 時間は、待機中の CPU 使用率によって色別に表示されます。 |
デフォルトでは、インテル® VTune™ Amplifier は並行性解析の結果を [Hotspots by Thread Concurrency] ビューポイントに表示します。
[Summary (サマリー)] ウィンドウ: CPU 時間とプロセッサー使用率の点からアプリケーションの実行における全体的な統計を表示します。
[Bottom-up (ボトムアップ)] ウィンドウ: ホットスポット関数 (ボトムアップ・ツリー形式)、関数ごとの CPU 時間と CPU 使用率を表示します。
[Top-down Tree (トップダウン・ツリー)] ウィンドウ: ホットスポット関数 (呼び出しツリー形式)、関数のみのパフォーマンス・メトリック (セルフ値)、関数とその子関数のメトリック (合計値) を表示します。
[Caller/Callee (呼び出し元/呼び出し先)] ウィンドウ: 選択された関数の親と子関数を表示します。
[Platform (プラットフォーム)] ウィンドウ: CPU の使用率、フレームレート、メモリー帯域幅、およびユーザータスクの詳細を提供します (対応するメトリックが収集されていれば)。
グリッドで最も時間を消費するシリアル関数を特定し、ダブルクリックしてソース解析を行います。
クリティカルな関数のハイライトされている最もホットなコード行から開始し、ホットスポットのナビゲーション・オプションによってさらにソースを解析を行います。
コードを修正してボトルネックを解消し、アプリケーションのパフォーマンスを改善します。
すべてのコアが使用されていないホットスポットがある場合、並列処理を追加し、競合の不均衡の是正または軽減を考慮します。
解析を再実行して比較モードで最適化を検証します。
プロセッサー使用率が効率的でない原因を特定するには、ロックと待機解析を実行します。