インテル® VTune™ Amplifier 2018 ヘルプ

並行性ビューポイント

アプリケーションのスレッドがどれくらい並列に実行されているか、またアプリケーションが利用可能な CPU コアをどれくらい効率良く使用しているかを解析するには、インテル® VTune™ Amplifier のビューポイントを使用します。

次のビューポイントが利用できます。

これらのビューポイントで示されるパフォーマンス・データを解釈するため、次のステップに従います。

  1. パフォーマンス・ベースラインを定義します。

  2. 並行性が低く、CPU を十分利用していない関数を特定します。

  3. タイムラインを検証します。

  4. アルゴリズムの問題を特定します。

  5. ソースを解析します。

  6. その他の解析タイプを試してみます。

パフォーマンス・ベースラインを定義

この解析結果で提供される [Summary (サマリー)] ウィンドウでアプリケーション・レベルのデータを確認することから開始します。最適化の前後の結果を比較するため、主要な指標およびベースラインとして経過時間を使用します。

経過時間と指定した数の実行スレッドと利用可能な CPU の使用状況を表した [CPU Usage (CPU 使用率)] チャートと [Thread Concurrency (スレッドの並行性)] チャートを確認します。最も長いバーがインテル® VTune™ Amplifier で定義されている OK (許容範囲) または Ideal (理想) 範囲内にあるのが理想的です。

並行性が低く、CPU を十分利用していない Poor な関数を特定

利用可能なプロセッサー時間を効率良く活用していない関数を特定するには、[Bottom-up (ボトムアップ)] ウィンドウを確認します。

CPU 使用率が Poor な関数を特定するには、[Hotspots by CPU Usage] ビューポイントに切り替えます。デフォルトでは、関数は Poor (低) プロセッサー使用率でソートされています。最もクリティカルな関数が最初に表示されます。[CPU Time (CPU 時間)] 列見出しで ボタンをクリックすると、列を展開して使用率タイプごとの時間分布を確認できます。

シリアルで実行され、利用可能なコアを効率良く使用していない関数を特定するには、[Hotspots by Thread Concurrency] ビューポイントに切り替えます。関数は並行性レベルの低い CPU 時間でソートされています。このモードは、[Hotspots by CPU Usage] ビューポイントに似ています。

CPU 使用率で Poor (低) (バー形式の場合は赤いバー ) の時間が最も長い関数の最適化を行います。次に、CPU 使用率で Over (高) (青いバー ) の時間が最も長いものを探します。

目標は、CPU 使用率/並行性が Poor (低) および Over (高) のものを短くし、Ideal (理想) (緑 ) または OK (許容範囲) (オレンジ ) になるように最適化します。

インテル® VTune™ Amplifier はまた、オーバーヘッド時間スピン時間を測定します。これらのメトリックが解析中のインテル® アーキテクチャーのプロセッサー・タイプ向けに定義されているしきい値を超えた場合、インテル® VTune™ Amplifier は [Bottom-up]/[Top-down Tree (トップダウン・ツリー)] ウィンドウでそれらの値をハイトライトして強調します。ハイライトされているセルにマウスをホバーして、パフォーマンス・チューニングのアドバイスを取得します。

並行性: [Bottom-up] ウィンドウ

タイムラインを解析

[Bottom-up]/[Top-down Tree] ウィンドウの下部にある [Timeline (タイムライン)] ペインは、アプリケーションのスレッドの動作、および CPU 使用率とスレッドの並行性の変化を表示します。データを解析するには、問題個所を選択し、コンテキスト・メニュー・オプションを使用してその領域を拡大します。インテル® VTune™ Amplifier は、スレッド領域のスレッドごとの CPU 時間の合計として、総 CPU Usage メトリックを計算します。最大 CPU Usage 値は、[プロセッサーコア数] x 100% に等しく、最大のスレッド並行性は論理 CPU 数と等しくなります。以下に示す例では、4 コアシステムのスレッド並行性 (Concurency) は 2 で、CPU 使用率はおよそ 100% です。これは、この範囲で CPU が効率良く利用されていないことを意味します。

並行性解析での CPU 使用率ビューポイントによるホットスポット

アプリケーションが特定の時間フレームでどのように振る舞うか理解するには、タイムラインでこの領域を選択して右クリックし、[Zoom In and Filter In by Selection (選択を拡大してフィルターイン)] を選択します。インテル® VTune™ Amplifier は、この時間範囲で実行された関数を表示します。高い CPU 時間の関数 (ホットスポット) を特定し、ホットスポットをダブルクリックして問題の原因となるコード行を見つけるためソースを開きます。

[CPU Usage] と [Thread Concurrency] データを関連付けて、潜在的なパフォーマンスの問題を特定します。

条件

潜在的なパフォーマンスの問題

平均 CPU 使用率がターゲットの並行性に近く、平均並行性がターゲットの並行性よりもかなり低い場合

スピンロックで多くの競合がある並列アプリケーション

平均 CPU 使用率と平均並行性が 1 に近い場合

シリアル・アプリケーション

平均 CPU 使用率と平均並行性がほぼ同じであり、値が 1 とターゲットの並行性の間にある場合

通常の同期ベースのロックによる競合をもつ並列アプリケーション

平均 CPU 使用率と平均並行性がターゲットの並行性に近い場合

適切に並列化されたアプリケーション

アルゴリズムの問題を特定

アプリケーションの呼び出しシーケンスの問題を特定し、関数の呼び出し方法を変更することでパフォーマンスを改善できます。潜在的な問題の場所を特定するには次の方法があります。

ソースを解析

クリティカルな関数をダブルクリックすると、[Source (ソース)]/[Assembly (アセンブリー)] ウィンドウが開くのでソースコードを解析します。[Timeline] ペインで遷移している個所をダブルクリックすると、その遷移のコールサイトが表示されます。インテル® VTune™ Amplifier から直接コードエディターを開き、コードを編集 (並列性、競合の不均衡の是正または軽減など) できます。

その他の解析タイプを試してみる

関連情報