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

パフォーマンス解析向けのコンパイラー・オプション (Linux* ターゲット)

インテル® VTune™ Amplifier は、リモート Linux* ターゲットシステム上のほとんどのネイティブバイナリーを解析できます。パフォーマンス解析の生産性の向上と容易性の観点から、次の設定が推奨されます。

使用するオプション

説明

-g (強く推奨)

アドレスとソースコード行を関連付けて、ユーザーモードのサンプリングとトレース収集タイプ (基本ホットスポット、並行性、およびロックと待機) でコールスタックを適切に追跡するには、シンボル情報の生成を有効にする必要があります。

リリースビルド、または -O2 (強く推奨)

コンパイラーによる最大限の最適化設定で、最適化できない実際のパフォーマンスの問題に焦点を当てることを可能にします。

-shared-intel (インテル® C++ コンパイラー)

-shared-libgcc (GCC コンパイラー)

適切なフィルターモードがインテル® VTune™ Amplifier の収集結果に適用された場合、libm と C ランタイム呼び出しをシステム関数として識別し、ユーザーコードと区別します。

-debug inline-debug-info (インテル® C++ コンパイラー)

インテル® VTune™ Amplifier がインライン展開された関数を特定し、選択されたインラインモードに応じてインライン展開された関数自身、または呼び出し元にインライン展開された関数のシンボルを関連付けることを可能にします。これは、GCC 4.1 以降ではデフォルトのモードです。

-D TBB_USE_THREADING_TOOLS

インテル® VTune™ Amplifier によるインテル® スレッディング・ビルディング・ブロック (インテル® TBB) 解析を有効にします。このマクロは、-D_DEBUG または -DTBB_USE_DEBUG を使用してコンパイルすると自動的に設定されます。

環境変数 TBB_USE_THREADING_TOOLS を設定しないと、インテル® VTune™ Amplifier はインテル® TBB 構文に関連する並行性 (コンカレンシー) の問題を正しく識別できません。

-qopenmp (強く推奨)
(インテル® C++ コンパイラー)

インテル® VTune™ Amplifier による OpenMP* プログラムの並列領域の検出を有効にします。

-qopenmp-link dynamic (インテル® C++ コンパイラー)

コンパイラーがインテル® VTune™ Amplifier 向けにインストルメントされている OpenMP* ランタイム・ライブラリーのダイナミック・バージョンを選択することを許可します。このオプションは、インテル® コンパイラーのデフォルト設定で有効になります。

-parallel-source-info=2 (インテル® C++ コンパイラー)

OpenMP* または自動並列化コードの生成時にソースの位置情報の出力を有効または無効にします。2 はソース位置の規制レベルを示し、コンパイラーにパス、ファイル、ルーチン名、および行情報を出力するように指示します。

次のコンパイラー設定は推奨されません。

使用しないオプション

理由

デバッグビルドまたは、-O0

リリースビルドでコンパイルした場合とアプリケーションのパフォーマンスが異なります。パフォーマンス・プロファイルに大きく影響することがあり、リリースビルドではパフォーマンス上問題にならないコード領域に対して解析や最適化を行うことになる可能性があります。

-static

-static-libgcc

インテル® VTune™ Amplifier が、ユーザーモード・サンプリングとトレース収集タイプを実行するのを妨げます。詳細は、以下をご覧ください。

インテル® コンパイラーに -fast オプションを指定すると、自動的に -static が有効になります。

-static-intel

ユーザーモード・サンプリングとトレース収集タイプがシステム関数を適切に区別するのを妨げます。インテル® コンパイラーではデフォルトのオプションです。

-qopenmp-link static

インテル® コンパイラーは、スタティック・バージョンの OpenMP* ランタイム・ライブラリーを選択します。このバージョンの OpenMP* ランタイム・ライブラリーには、インテル® VTune™ Amplifier の解析に必要なインストルメンテーション・データが含まれません。

-qopenmp_stubs

OpenMP* コードの並列実行を妨げます。

-msse4a-m3dnow

インテル® プロセッサーがサポートしない命令を使用するバイナリーを生成すると、インテル® VTune™ Amplifier のプロファイルは予測できない振る舞いをする可能性があります。

-debug [parallel | extended | emit-column | expr-source-pos | semantic-stepping | variable-locations]

インテル® VTune™ Amplifier に最適なオプションは -debug full (-g を使用する際のデフォルト) です。その他のオプション parallelextendedemit-columnexpr-source-possemantic-stepping および variable-locations は、インテル® VTune™ Amplifier でサポートされません。詳細は、-debug inline-debug-info をご覧ください。

-coarray

並行性解析、ロックと待機解析が、Co-Array Fortran でスケーリングを無効するロックを識別するのを妨げます。

ユーザーモード・サンプリングとトレース収集向けのコンパイル

実行コードとすべての共有ライブラリーのユーザーモード・サンプリングとトレース収集 (基本ホットスポット、並行性、ロックと待機) を成功させるには、次のオプションを使用してコールスタックを適切に監視できるようにします。

ユーザーモード・サンプリングとトレース収集タイプは、次のダイナミック・バージョンのライブラリーで上手く動作します。

ライブラリー

ダイナミック・バージョン (推奨)

スタティック・バージョン (非推奨)

OpenMP* ランタイム (インテル® コンパイラーが提供)

libiomp5.so または libguide40.so

libiomp5.a または libguide4.a

POSIX* スレッド

libpthread.so

libpthread.a

C ランタイム

libc.so

libc.a

C++ ランタイム

libstdc++.so

libstdc++.a

インテルの Libm

libm.so

libm.a

ユーザーモード・サンプリングとトレース収集には、スタティックにリンクされたライブラリー/関数の解析において、次のような制限があります。

アプリケーションが POSIX* スレッドを生成する (明示的にまたは、OpenMP* ライブラリーやほかのスタティック・ライブラリーを介して) 場合、次の関数を定義する必要があります。

これらを容易にする方法は、上記のオプションを含むファイルを作成して、gccld に渡すことです。例えば次のように設定します。

$ gcc -static mysource.cpp @Cdefs @Pdefs

ここで、Cdefs は C 関数で必要なオプションを含むファイルで、Pdefs は POSIX* 関数で必要なオプションのファイルです。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804

関連情報