Developer Guide and Reference

Contents

Guided Auto Parallelism

This feature has been deprecated.
The Guided Auto Parallelism (GAP) feature of the Intel®
C++
Compiler is a tool that offers selective advice to improve the performance of serially-coded applications by suggesting changes that take advantage of the compiler’s ability to automatically vectorize and parallelize code and improve the efficiency of data operations. Despite having the words “auto parallelism” in the name, this tool does not require a threaded code implementation to improve the execution performance of the code, or require that the code is already threaded or parallel.
Advanced optimization techniques, such as inter-procedural analysis or profile-guided feedback, are not needed to use this feature. Using the
[Q]guide
set of options in addition to the compiler options normally used is sufficient to enable the GAP feature, with the requirement that you must compile with
O2
or higher optimization levels. The compiler does not generate any object files or executables during the GAP run.
In debug mode (
/Zi
on Windows*,
-g
on Linux*), the compiler's optimization level defaults to
/Od
(on Windows*) or
-O0
(on Linux* and
macOS*
); thus
O2
(or a higher level optimization) must be specified explicitly on the command-line.
Use the
[Q]diag-disable
option along with the
[Q]guide
option to direct the compiler to suppress specific diagnostic messages.
For example, the options:
//
(Windows*)
/Qguide, /Qdiag-disable:30534
and
//
(Linux* and
macOS*
)
-guide, -diag-disable:30534
tell the compiler not to emit the
30534
diagnostic. The
[Q]diag-disable
mechanism works the same way as it does for compiler-warnings.
If you decide to follow the advice offered by the GAP tool by making the suggested code changes and/or using the suggested compiler options, you must then recompile the program without the
[Q]guide
option.
Any advice generated by the compiler when using the GAP tool is optional; it can be implemented or rejected. The advice typically falls under three broad categories:
  • Advice for source modifications:
    The compiler advises you to make source changes that are localized to a loop-nest or a routine. For example, the tool may recommend that you use a local-variable for the upper-bound of a loop,
    (instead of a class member)
    or that you should initialize a local variable unconditionally at the top of the loop-body,
    or you may be told to add the
    restrict
    keyword to pointer-arguments of a function definition (if appropriate)
    .
  • Advice to apply
    pragmas
    :
    The compiler advises you to apply a new
    pragma
    <