ターゲット・アプリケーションのビルド

このセクションには、インテル® Advisor を使用してアプリケーションで解析を実行する前に行うべき手順が含まれています。以下を行います。

最適な C/C++ 設定

説明

対象

最適な C/C++ 設定

完全なデバッグ情報を生成する (コンパイラーとリンカ―)

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

オフロードのモデル化

スレッド化

Linux* コマンドライン: -g

Windows* コマンドライン:

  • /ZI

  • /DEBUG

Microsoft* Visual Studio* IDE:

  • [C/C++] > [全般] > [デバッグ情報の形式] > [プログラム データベース (/Zi)]

  • [リンカー] > [デバッグ] > [デバッグ情報の生成] > [はい (/DEBUG)]

適度な最適化を適用する。

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

スレッド化

オフロードのモデル化

Linux* コマンドライン: -O2 以上

Windows* コマンドライン:

  • /O2 以上

  • /Ob1 (スレッド化のみ)

Visual Studio* IDE:

  • [C/C++] > [最適化] > [最適化] > [実行速度の最大化 (/O2)] 以上

  • [C/C++] > [最適化] > [インライン関数の展開] > [_inline のみ (/Ob1)] (スレッド化のみ)

インテル® Advisor のパフォーマンス・データ収集を妨げる可能性がある、プロシージャー間の最適化を無効にします

インテル® oneAPI DPC++/C++ コンパイラーのみ

オフロードのモデル化

Linux* コマンドライン: -no-ipo

Windows* コマンドライン: /Qipo-

コンパイラーの診断を生成する (オプション)

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -qopt-report=5

Windows* コマンドライン: /Qopt-report:5

Visual Studio* IDE: [C/C++] > [診断 [Intel C++]] > [最適化診断レベル] > [レベル 5 (/Qopt-report:5)]

ベクトル化を有効にします

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -vec

Windows* コマンドライン: /Qvec

SIMD ディレクティブを有効にします

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -simd

Windows* コマンドライン: /Qsimd

OpenMP* ディレクティブに基づいてマルチスレッド・コードを生成できるようにする

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -qopenmp

Windows* コマンドライン: /Qopenmp

Visual Studio* IDE: [C/C++] > [言語 [Intel C++]] > [OpenMP* サポート] > [並列コードの生成 (/Qopenmp)]

インテル® Advisor のアノテーション定義に関連する追加ディレクトリーを検索する

スレッド化が主ですが、リファインメント解析にも役立ちます

Linux* コマンドライン: - I${ADVISOR_[product_year]_DIR}/include

Windows* コマンドライン: /I"%ADVISOR_[product_year]_DIR%"\include

Visual Studio* IDE: [C/C++] > [全般] > [追加のインクルード・ディレクトリー] > [$(Advisor[product_year]_DIR)\include;%(AdditionalIncludeDirectories)]

マルチスレッド化されたダイナミック・リンク・ライブラリーで未定義の参照を検索します

スレッド化のみ

Linux* コマンドライン: -Bdynamic

Windows* コマンドライン: /MD または /MDd

Visual Studio* IDE: [C/C++] > [コード生成] > [ランタイム・ライブラリー] > [マルチスレッド DLL (/MD)] または [マルチスレッド・デバッグ DLL (/MDd)]

動的ロードを有効にする

スレッド化のみ

Linux* コマンドライン: -ldl

最適な Fortran の設定

説明

対象のツール

最適な Fortran の設定

完全なデバッグ情報 (コンパイラーとリンカー) を生成します

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

スレッド化

Linux* コマンドライン: -g

Windows* コマンドライン:

  • /debug=full

  • /DEBUG

Visual Studio* IDE:

  • [Fortran] > [全般] > [デバッグ情報形式] > [Full (/debug=full)]

  • [リンカー] > [デバッグ] > [デバッグ情報の生成] > [はい (/DEBUG)]

適度な最適化を適用する

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

スレッド化

Linux* コマンドライン: -O2 以上

Windows* コマンドライン:

  • /O2 以上

  • /Ob1 (スレッド化のみ)

Visual Studio* IDE:

  • [Fortran] > [最適化] > [最適化] > [実行速度の最大化 (/O2)] 以上

  • [Fortran] > [最適化] > [インライン関数の展開] > [INLINE ディレクティブのみ (/Ob1)] (スレッド化のみ)

コンパイラーの診断レポートを生成する (インテル® Fortran コンパイラー・クラッシックのバージョン 15.0 で必要です。16.0 以降では必要ありません)

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -qopt-report=5

Windows* コマンドライン: /Qopt-report:5

Visual Studio* IDE: [Fortran] > [診断 [Intel C++]] > [最適化診断レベル] > [レベル 5 (/Qopt-report:5)]

ベクトル化を有効にする

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -vec

Windows* コマンドライン: /Qvec

SIMD ディレクティブを有効にします

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -simd

Windows* コマンドライン: /Qsimd

OpenMP* ディレクティブに基づいてマルチスレッド・コードを生成できるようにする

ベクトル化とコードの調査

CPU / メモリー・ルーフラインの調査

GPU ルーフラインの調査

Linux* コマンドライン: -qopenmp

Visual Studio* IDE: [Fortran] > [言語] > [OpenMP ディレクティブの処理] > [並列コードの生成 (/Qopenmp)]

インテル® Advisor のアノテーション定義に関連する追加ディレクトリーを検索する

スレッド化が主ですが、リファインメント解析にも役立ちます

Linux* コマンドライン:

  • -I${ADVISOR_[product_year]_DIR}/include/ia32 または -I${ADVISOR_[product_year]_DIR}/include/ia64

  • -L${ADVISOR_[product_year]_DIR}/lib32 または -L${ADVISOR_[product_year]_DIR}/lib64

  • -ladvisor

Windows* コマンドライン:

  • /I"%ADVISOR_[product_year]_DIR%"\include\ia32 または /I"%ADVISOR_[product_year]_DIR%"\include\ia64

  • /L"%ADVISOR_[product_year]_DIR%"\lib32 または /L"%ADVISOR_[product_year]_DIR%"\lib64

  • /ladvisor または

Visual Studio* IDE:

  • [Fortran] > [全般] > [追加のインクルード・ディレクトリー] > "$(ADVISOR_[product_year]_DIR)\include\ia32\" または "$(ADVISOR_[product_year]_DIR)\include\ia64\"

  • [リンカー] > [全般] > [追加のライブラリー・ディレクトリー] > "$(ADVISOR_[product_year]_DIR)\lib32" または "$(ADVISOR_[product_year]_DIR)\lib64"

  • [リンカー] > [入力] > [追加の依存ファイル] > [.lib] > [libadvisor]

マルチスレッド化されたダイナミック・リンク・ライブラリーで未定義の参照を検索する

スレッド化のみ

Linux* コマンドライン: -shared-intel

Windows* コマンドライン: /MD または /MDd

Visual Studio* IDE: [Fortran] > [ライブラリー] > [ランタイム・ライブラリー] > [マルチスレッド DLL (/libs:dll /threads)] または [デバッグ用マルチスレッド DLL (/libs:dll /threads /dbglibs)]

動的ロードを有効にする

スレッド化のみ

Linux* コマンドライン: -ldl