Intel® Advisor User Guide

ID 766448
Date 7/13/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

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® C++ Compiler Classic / Intel® oneAPI DPC++/C++ Compiler only.

Offload Modeling

Linux* OS command line: -no-ipo

Windows* OS command line: /Qipo-

Produce compiler diagnostics (necessary for version 15.0 of the Intel® C++ 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: 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