User Guide

Contents

Limiting
the Number of Threads Used by Parallel Frameworks

Intel® Advisor
tools are designed to collect data and analyze
serial
programs.
Before
you use the
Intel Advisor
Suitability and Dependencies tools to examine a partially parallel program, modify your program so it runs as a serial program with a single thread within each parallel site.

Run Your Program as a Serial Program

To run the current version of your program as a serial program, you need to limit the number of threads to 1. To run your program with a single thread:
  • With
    Intel® Threading Building Blocks (Intel® TBB)
    , in the main thread create a
    tbb::task_scheduler_init init(1);
    object for the lifetime of the program and run the executable again. For example:
    int main() { tbb::task_scheduler_init init(1); // ...rest of program... return 0; }
    The effect of
    task_scheduler_init
    applies separately to each user-created thread. So if the program creates threads elsewhere, you need to create a
    tbb::task_scheduler_init init(1);
    for that thread's lifetime as well. Use of certain I
    Intel TBB
    features can prevent the program from running serially. For more information, see the
    Intel TBB
    documentation.
  • With OpenMP*, do one of the following:
    • Set the OpenMP* environment variable
      OMP_NUM_THREADS
      to 1 before you run the program.
    • Omit the compiler option that enables recognition of OpenMP pragmas and directives. On Windows* OS, omit
      /Qopenmp
      , and on Linux* OS omit
      -openmp
      .
For more information, see your compiler documentation.
If you cannot remove the parallelism, you should add annotations to mark the parallel code regions and learn how parallel code will impact
Intel Advisor
tool reports.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804