Linux* ターゲット上のパフォーマンス解析向けのコンパイラー・スイッチ

インテル® VTune™ プロファイラーは、Linux* ターゲットシステム上で大部分のネイティブバイナリーを解析できます。次の設定は、パフォーマンス解析をより生産的および簡単に行うために推奨されます。

使用するオプション

説明

-g(強く推奨)

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

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

コンパイラーの最適化機能を最大限に有効にして、コンパイラーが最適化できないパフォーマンス上の問題をインテル® VTune™ プロファイラーで特定します。

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

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

適切なフィルターモードをインテル® VTune™ プロファイラーの収集結果に適用したときに、libm と C ランタイム呼び出しをシステム関数として識別し、ユーザーコードと区別できるようにします。

-debug inline-debug-info

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

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

最適化 (-O2 以降) とデバッグ情報 (-g オプション) を使用してコンパイルする場合、インテル® oneAPI DPC++/C++ コンパイラーの debug inline-debug-info オプションはデフォルトで有効になります。

-D TBB_USE_THREADING_TOOLS

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

TBB_USE_THREADING_TOOLS を設定しないと、インテル® VTune™ プロファイラーは oneTBB 構文に関連する並行性の問題を正しく識別できません。

-qopenmp(強く推奨)

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

インテル® VTune™ プロファイラーで OpenMP* プラグマによる並列領域を識別します。

-qopenmp-link dynamic

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

インテル® コンパイラーがインテル® VTune™ プロファイラー向けにインストルメントされた OpenMP* ランタイム・ライブラリーのダイナミック・バージョンを選択できるようにします。通常、このオプションはインテル® コンパイラーではデフォルトで有効になります。

-parallel-source-info=2

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

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

--info-for-profiling

インテル® oneAPI DPC++ コンパイラー

インテル® Fortran コンパイラー

SYCL* アプリケーションの GPU 解析向けのデバッグ情報の生成を有効にします。

インテル® Fortran コンパイラーによってコンパイルされた OpenMP* オフロード・アプリケーションのデバッグ情報を生成します。

-Xsprofile

インテル® oneAPI DPC++ コンパイラー

FPGA アプリケーション解析向けにパフォーマンス・データのソースレベルのマッピングを有効にします。

これらのオプションの使用は避けるべきです。

次のコンパイラー・オプションは推奨されません。

このスイッチは使用しないでください

理由

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

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

-static

-static-libgcc

インテル® VTune™ プロファイラーが、ユーザーモード・サンプリングとトレース解析タイプを実行するのを妨げます。詳細は、以下を参照してください。

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

-static-intel

ユーザーモード・サンプリングとトレース解析タイプがシステム関数を区別できなくなります。これはインテル® コンパイラーのデフォルトオプションです。

-qopenmp-link static

インテル® コンパイラーの静的バージョンの OpenMP* ランタイム・ライブラリーを選択します。このバージョンの OpenMP* ランタイム・ライブラリーは、インテル® VTune™ プロファイラーの解析で必要なインストルメント・データを含みません。

-qopenmp_stubs

OpenMP コードが並列化されるのを防ぎます。 -msse4a、-m3dnow でインテル® プロセッサーがサポートしない命令を使用するバイナリーを生成すると、インテル® VTune™ プロファイラーのプロファイルは予測できない振る舞いをする可能性があります。

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

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

-coarray

スレッド化解析が、Coarray 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

ユーザーモード・サンプリングとトレース解析は、静的にリンクされたライブラリー/関数では次のような制限があります。

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

これらを容易に行う方法は、上記のオプションを含むファイルを作成して、gcc または ld を指定してコンパイルすることです。次に例を示します。

gcc -static mysource.cpp @Cdefs @Pdefs

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

FPGA デバイス用のインテル® oneAPI DPC++/C++ コンパイラーのサポートには、インテル® oneAPI DPC++/C++ コンパイラー用の FPGA サポートパッケージが必要です。

製品および性能に関する情報

性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。

改訂 #20201201

関連情報