Intel® Advisor User Guide

ID 766448
Date 3/22/2024
Public
Document Table of Contents

Build Target Application

This section contains steps you should do before you begin running analyses on your application with Intel® Advisor. Do the following:

  • Build an optimized binary of your application in release mode using settings designed to produce the most accurate and complete analysis results.

  • Verify the resulting executable runs before trying to analyze it with the Intel® Advisor.

    IMPORTANT:
    To analyze an application with the Intel® Advisor, the application should take longer than 500 milliseconds to execute on CPU or GPU. If your application execution time is lower, it might cause inaccurate data sampling or a No data is collected error.

Optimal C/C++ Settings

To Do This

For This

Optimal C/C++ Settings

Request full debug information (compiler and linker).

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Offload Modeling

Threading

Linux* OS command line: -g

Windows* OS command line:

  • /ZI

  • /DEBUG

Microsoft Visual Studio* IDE:

  • C/C++ > General > Debug Information Format > Program Database (/Zi)

  • Linker > Debugging > Generate Debug Info > Yes (/DEBUG)

Request moderate optimization.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Threading

Offload Modeling

Linux* OS command line: -O2 or higher

Windows* OS command line:

  • /O2 or higher

  • /Ob1 (Threading only)

Visual Studio* IDE:

  • C/C++ > Optimization > Optimization > Maximum Optimization (Favor Speed) (/O2) or higher

  • C/C++ > Optimization > Inline Function Expansion > Only_inline (/Ob1) (Threading only)

Disable interprocedural optimizations that may inhibit the ability of Intel® Advisor to collect performance data.

For Intel® oneAPI DPC++/C++ Compiler only.

Offload Modeling

Linux* OS command line: -no-ipo

Windows* OS command line: /Qipo-

Produce compiler diagnostics (optional)

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -qopt-report=5

Windows* OS command line: /Qopt-report:5

Visual Studio* IDE: C/C++ > Diagnostics [Intel C++] > Optimization Diagnostic Level > Level 5 (/Qopt-report:5)

Enable vectorization.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -vec

Windows* OS command line: /Qvec

Enable SIMD directives.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux command line: -simd

Windows* OS command line: /Qsimd

Enable generation of multi-threaded code based on OpenMP* directives.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -qopenmp

Windows* OS command line: /Qopenmp

Visual Studio* IDE: C/C++ > Language [Intel C++] > OpenMP Support > Generate Parallel Code (/Qopenmp)

Search additional directory related to Intel Advisor annotation definitions.

Primarily Threading, but could also be useful for refinement analyses

Linux* OS command line: - I${ADVISOR_[product_year]_DIR}/include

Windows* OS command line: /I"%ADVISOR_[product_year]_DIR%"\include

Visual Studio* IDE: C/C++ > General > Additional Include Directories > $(ADVISOR_[product_year]_DIR)\include;%(AdditionalIncludeDirectories)

Search for unresolved references in multithreaded, dynamically linked libraries.

Threading only

Linux* OS command line: -Bdynamic

Windows* OS command line: /MD or /MDd

Visual Studio* IDE: C/C++ > Code Generation > Runtime Library > Mutithread

Enable dynamic loading.

Threading only

Linux* OS command line: -ldl

Optimal Fortran Settings

To Do This

For This Tool

Optimal Fortran Settings

Request full debug information (compiler and linker).

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Threading

Linux* OS command line: -g

Windows* OS command line:

  • /debug=full

  • /DEBUG

Visual Studio* IDE:

  • Fortran > General > Debug Information Format > Full (/debug=full)

  • Linker > Debugging > Generate Debug Info > Yes (/DEBUG)

Request moderate optimization.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Threading

Linux* OS command line: -O2 or higher

Windows* OS command line:

  • /O2 or higher

  • /Ob1 (Threading only)

Visual Studio* IDE:

  • Fortran > Optimization > Optimization > Maximize Speed or higher

  • Fortran > Optimization > Inline Function Expansion > Only INLINE directive (/Ob1) (Threading only)

Produce compiler diagnostics (necessary for version 15.0 of the Intel® Fortran Compiler Classic; unnecessary for version 16.0 and higher).

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -qopt-report=5

Windows* OS command line: /Qopt-report:5

Visual Studio* IDE: Fortran > Diagnostics > Optimization Diagnostic Level > Level 5 (/Qopt-report:5)

Enable vectorization.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -vec

Windows* OS command line: /Qvec

Enable SIMD directives.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -simd

Windows* OS command line: /Qsimd

Enable generation of multi-threaded code based on OpenMP* directives.

Vectorization and Code Insights

CPU / Memory Roofline Insights

GPU Roofline Insights

Linux* OS command line: -qopenmp

Visual Studio* IDE: Fortran > Language > Process OpenMP Directives > Generate Parallel Code (/Qopenmp)

Search additional directory related to Intel Advisor annotation definitions.

Primarily Threading, but could also be useful for refinement analyses

Linux* OS command line:

  • -I${ADVISOR_[product_year]_DIR}/include/ia32 or -I${ADVISOR_[product_year]_DIR}/include/ia64

  • -L${ADVISOR_[product_year]_DIR}/lib32 or -L${ADVISOR_[product_year]_DIR}/lib64

  • -ladvisor

Windows* OS command line:

  • /I"%ADVISOR_[product_year]_DIR%"\include\ia32 or /I"%ADVISOR_[product_year]_DIR%"\include\ia64

  • /L"%ADVISOR_[product_year]_DIR%"\lib32 or /L"%ADVISOR_[product_year]_DIR%"\lib64

  • /ladvisor or

Visual Studio* IDE:

  • Fortran > General > Additional Include Directories > "$(ADVISOR_[product_year]_DIR)\include\ia32\" or "$(ADVISOR_[product_year]_DIR)\include\ia64\"

  • Linker > General > Additional Library Directories > "$(ADVISOR_[product_year]_DIR)\lib32" or "$(ADVISOR_[product_year]_DIR)\lib64"

  • Linker > Input > Additional Dependencies > .lib > libadvisor

Search for unresolved references in multithreaded, dynamically linked libraries.

Threading only

Linux* OS command line: -shared-intel

Windows* OS command line: /MD or /MDd

Visual Studio* IDE: Fortran > Libraries > Runtime Librarary > Multithread DLL (/libs:dll /threads) or Debug Multithread DLL (/libs:dll /threads /dbglibs)

Enable dynamic loading.

Threading only

Linux* OS command line: -ldl