Intel® C++ Compiler XE 13.1 User and Reference Guides
The guided auto parallelism feature of the Intel® compiler is a tool that offers selective advice to improve the performance of serially coded applications by suggesting changes that will take advantage of the compiler’s ability to automatically vectorize and parallelize your code as well as improve the efficiency of data operations. Despite having the words “auto parallelism” in its name, this tool does not require you to implement threaded code in order to improve the execution performance of your code nor does it require that your code is already threaded or parallel code.
You need not use any advanced optimization techniques such as inter-procedural analysis or profile-guided feedback to use this feature. Using the -guide (Linux*) or /Qguide (Windows*) set of options in addition to the compiler options you normally use is sufficient to enable the guided auto parallelism feature, with the requirement that you must compile with -O2 (Linux*) or /O2 (Windows*) or higher optimization levels. The compiler does not generate any object files or executables during the guided auto parallelism run.
In debug mode (/Zi on Windows, -g on Linux), the compiler's optimization level defaults to /Od (on Windows*) or –Od (on Linux*); thus /O2 or -O2 (or a higher level optimization) must be specified explicitly on the command-line.
You can use the -diag-disable or /Qdiag-disable option along with the -guide or /Qguide option to direct the compiler to suppress specific diagnostic messages; for example, the options: /Qguide, /Qdiag-disable:30534 tells the compiler not to emit the 30534 diagnostic. The -diag-disable or /Qdiag-disable mechanism works the same way as it does for compiler-warnings.
If you decide to follow the advice offered by the guided auto parallelism tool by making the suggested code changes and/or using the suggested compiler options, you must then recompile the program without the -guide or /Qguide options.
Any advice generated by the compiler when using the guided auto parallelism tool is optional; you can either implement it or reject it. The advice typically falls under three broad categories:
These suggested compiler options apply to the entire file. It is your responsibility to check that the properties asserted by these options are valid for the entire file, and not just the loop in question.
If you use guided auto parallelism options along with –parallel (Linux*) or /Qparallel (Windows*), the compiler may suggest options to further parallelize your application. The compiler may also offer advice on enabling other optimizations, such as vectorization of your application.
If you use the guided auto parallelism options without enabling auto parallelism (that is, without using –parallel or /Qparallel options) then the compiler may only suggest enabling optimizations such as vectorization for your application. This approach is recommended when you wish to improve the performance of a single-threaded code without the use of parallelization or when you want to improve the performance of threaded applications that do not rely on the compiler for auto parallelism.