User Guide

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

Build Your Application

Follow these guidelines to build applications that produce the most accurate and complete
Intel Inspector
analysis results:

About Using Optimal Compiler/Linker Settings

You can use the
Intel® Inspector
to analyze memory and threading errors in both debug and release modes of C++ and Fortran binaries; however, applications compiled/linked in debug mode using the following settings produce the most accurate and complete analysis results.
Compiler/Linker Property
Correct C/C++ Setting
Impact If Not Set Correctly
Debug information
Enabled (
/Zi
or
/ZI
)
Missing file/line information
Optimization
Disabled (
/Od
)
Incorrect file/line information
Dynamic runtime library
Selected (
/MD
or
/MDd
)
False positives or missing code locations
Basic runtime error checks
Disabled (do not use
/RTC
;
Default
option in Visual Studio* IDE)
False positives
Compiler/Linker Property
Correct Fortran Setting
Impact If Not Set Correctly
Debug information
Enabled (
/debug:full
)
Missing file/line information
Optimization
Disabled (
/Od
)
Incorrect file/line information
Dynamic runtime library
Selected (
/libs:dll/threads
or
libs:dll/threads/dbglibs
)
False positives or missing code locations
Basic runtime error checks
None (
/check:none
)
False positives
To learn more about options necessary to produce the most accurate and complete analysis results, see the following resources:

About Ensuring Applications Contain More Than One Thread

If you plan to run threading error analyses on systems with only one processor, you may need to take special steps to ensure applications create more than one thread:
Programming Model
Possible Strategies
oneAPI Threading Building Blocks (oneTBB)
When initializing an object of class
tbb::task_scheduler_init
, use the following function to force the creation of two or more threads:
initialize (int)
, where
int
=
2
or higher.
For more information, see http://www.threadingbuildingblocks.org/
Windows* API (Win32)
Use the following function to create as many threads as you need:
CreateThread
- Creates a thread to execute within the virtual address space of the calling process.
For more information, see http://msdn.microsoft.com/en-us/library/
OpenMP* API
Use the following to force the creation of two or more threads:
  • OMP_NUM_THREADS
    runtime environment variable - Sets the maximum number of threads in the parallel region, unless overridden by an
    omp_set_num_threads
    function or
    num_threads
    clause.
  • omp_set_num_threads
    function - Sets the number of threads in subsequent parallel regions, unless overridden by a
    num_threads
    clause.
  • num_threads
    clause - Sets the number of threads in a thread team.
For more information, see http://openmp.org/wp/openmp-specifications/

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.