The guided auto-parallelization feature of the Intel® compiler is a tool that offers selective advice resulting in better performance of serially coded applications.
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 on top of your normally used compiler options is sufficient to enable the guided auto-parallelization feature, with the requirement that you must use -O2 (Linux*) or /O2 (Windows*) or higher optimization. The compiler does not generate any object files or executables during the guided auto-parallelization run.
In the debug mode (/Zi on Windows, -g on Linux), the optimization level defaults to /Od (on Windows*) or –Od (on Linux*) unless /O2 or -O2 (or a higher level optimization) is specified explicitly in the command-line. Therefore, in the debug-mode, /Qguide or –guide is non-operational (a no-op) unless /O2 or -O2 (or higher level optimization) is specified explicitly.
You can use the -diag-disable or /Qdiag-disable option along with the -guide or /Qguide option to tell the compiler not to emit a particular diagnostic; for example, using 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 take the advice suggested by the guided auto-parallelization compilation run, you make the suggested code changes or use the suggested compiler options and recompile the program, this time without using the -guide or /Qguide options. The performance of your program should improve.
The advice generated by the compiler is specific but optional; you can either implement it or reject it. The advice typically falls under three broad categories:
These new options apply to the entire file. It is your responsibility to check that the properties asserted by the new options are verified for the entire file, and not just for the loop in question.
If you use guided auto-parallelization options along with –parallel (Linux*) or /Qparallel (Windows*), the compiler may suggest advice on further parallelizing opportunities in your application. The compiler may also suggest advice on enabling optimizations, such as vectorization, in your application.
If you use guided auto-parallelization options without enabling auto-parallelization (that is, without using –parallel or /Qparallel options) then the compiler may only suggest advice on enabling optimizations such as vectorization in your application. This is recommended when you are interested in improving the performance of your single-threaded code or when you want to improve the performance of your explicitly threaded applications where you do not rely on the compiler for auto-parallelization.
Copyright © 1996-2011, Intel Corporation. All rights reserved.