インテル® VTune™ プロファイラー・ユーザーガイド

インテル® TBB コードの解析

インテル® VTune™ プロファイラーを使用して、インテル® スレッディング・ビルディング・ブロック (インテル® TBB) を使用したアプリケーションのパフォーマンス解析を行います。

アプリケーションがインテル® ランタイム・ライブラリーを使用する場合、次を実行できます。

インテル® C++ コンパイラーを使用すると、インテル® VTune™ プロファイラーからさらに包括的な診断情報を得ることができます。

ホットスポット解析でインテル® TBB の並列処理効率の調査を始めます。アプリケーションの並列化レベルを確認するには、 効率良い CPU 利用率の分布図を確認します。分布図は、スレッド化のランタイムで費やされた時間を差し引いた実効時間を基に、アプリケーションの並列化レベルを示すことに注意してください。

アイドルまたは低い CPU 利用率で大部分の経過時間が費やされている場合、 上位のホットスポットの表を調査してください。フラグ付きのインテル® TBB 関数は、スケジュールのオーバーヘッドやインバランスなど非効率な並列処理により、アプリケーションがインテル® TBB のランタイムで CPU 時間を費やしたことを意味します。理由を知るにはフラグにマウスカーソルを移動します。

[ボトムアップ] タブでは、特定のインテル® TBB 構造での同期やオーバーヘッドに関する説明が示されます。特定のインテル® TBB ランライム関数の実行時間が通常よりも長い理由を知るには、グリッドの [スピン時間][オーバーヘッド時間] カラムを展開します。インテル® TBB ランタイム関数が CPU 時間の 5% 以上を消費するとフラグが付けられます。

例えば、高いスケジュール値を持つインテル® TBB ランタイム関数は、アプリケーションがスレッドのワークを細かく分割していることを示す可能性があります。これは、アプリケーションがランタイムを呼び出す際に過度のスケジュール・オーバーヘッドの原因となります。この問題はスレッドのチャンクサイズを増やすことで回避できます。

インテル® TBB ランタイムが同期時に CPU 時間を消費しないアイドル待機時間がある場合、スレッド化解析を実行して効率良い CPU 利用率を妨げる同期のボトルネックを特定します。インテル® VTune™ プロファイラーはすべてのインテル® TBB 同期オブジェクトを認識します。ソースコードで生成するオブジェクトに分りやすい名前を付けると、インテル® VTune™ プロファイラーはそれらを認識して [結果] タブに表示します。パフォーマンス上の理由から、デフォルトではこの機能はインテル® TBB ヘッダーで無効に設定されています。インテル® VTune™ プロファイラーでユーザー定義オブジェクトを表示するには、TBB_USE_THREADING_TOOLS に 1 を設定してアプリケーションを再コンパイルします。

インテル® TBB ライブラリー内部で発生したオーバーヘッドを表示するため、インテル® VTune™ プロファイラーはインテル® TBB ランタイム・ライブラリーからのすべての待機を含む疑似同期オブジェクト TBB Scheduler を作成します。

関連情報