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

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

インテル® スレッディング・ビルディング・ブロック (インテル® TBB) を使用するアプリケーションを対象としたパフォーマンス解析にインテル® VTune™ Amplifier を使用します。

アプリケーションがインテルのランタイム・ライブラリーを使用する場合、次の解析を行うことができます。

インテル® VTune™ Amplifier でより詳細な診断結果を得るには、インテル® C++ コンパイラーの使用を推奨します。

基本ホットスポットと高度なホットスポットによりインテル® TBB の並列性の効率を調査することから開始します。アプリケーションの並列性レベルを知るには、CPU 使用率のヒストグラムを確認します。ヒストグラムは、実効時間からスレッド化のオーバーヘッドを引いた時間を基にアプリケーションの並列化レベルを示しています。インテル® VTune™ Amplifier で示される上位のホットスポットで、ほとんどのコード領域が費やす経過時間が Idle や Poor CPU 使用率に分類されることがあります。リストの上位に示されるインテル® TBB 関数は、スケジューリングのオーバーヘッドやインバランスなど非効率な並列性が原因で、アプリケーションがインテル® TBB ランタイム内で CPU 時間を費やしていることを意味します。この理由を知るにはリストに示されるフラグマークにマウスをホバーしてください。

[Bottom-up (ボトムアップ)] タブには、特定のインテル® TBB 構造内における同期やオーバーヘッドに関連する詳細が示されます。特定のインテル® TBB ランタイム関数が通常より長い実行時間である原因を知るには、グリッドの [Spin Time (スピン時間)][Overhead Time (オーバーヘッド時間)] 列を調査します。CPU 時間の 5% 以上を消費するインテル® TBB ランタイム関数にはフラグマークが追加されます。

例えば、高いスケジューリング値を持つインテル® TBB のランタイム関数は、アプリケーションのスレッドワークが細切れに分割されていることを示し、アプリケーションがランタイムを呼び出すことで過度のスケジューリングのオーバーヘッドにつながります。これはスレッドチャンクの大きさを増やすことで解決できます。

インテル® TBB ランタイムが同期に CPU 時間を消費していないときにアイドル待機時間がある場合、効率良い CPU の利用を妨げる同期のオーバーヘッドを調査するためロックと待機解析が有効です。インテル® VTune™ Amplifier は、インテル® TBB のすべての同期オブジェクトを識別します。ソースコードで作成するオブジェクトに任意の名前を付けると、インテル® VTune™ Amplifier はそれらを認識して、結果タブに表示します。パフォーマンス上の理由から、この機能はインテル® TBB のヘッダーではデフォルトで有効にされていません。インテル® VTune™ Amplifier がユーザー定義のオブジェクトを参照できるようにするには、TBB_USE_THREADING_TOOLS 環境変数を 1 に設定してからアプリケーションを再コンパイルしてください。

インテル® TBB ライブラリーの内部処理に関連するオーバーヘッドを表示するため、インテル® VTune™ Amplifier は擬似同期オブジェクト TBB scheduler を作成します。このオブジェクトには、インテル® TBB ランタイム・ライブラリーのすべての待機が含まれます。

関連情報