Intel® Fortran Compiler 17.0 Developer Guide and Reference
Specifies one or more optimizer phases for which optimization reports are generated. Option -qopt-report-phase is the replacement option for -opt-report-phase, which is deprecated.
Linux and macOS: | -qopt-report-phase[=list] |
Windows: | /Qopt-report-phase[:list] |
list |
(Optional) Specifies one or more phases to generate reports for. If you specify more than one phase, they must be separated with commas. The values you can specify are:
|
OFF |
No optimization report is generated. |
This option specifies one or more optimizer phases for which optimization reports are generated.
Note that phase offload causes the compiler to print a report of the input or output of variables that the host sends to the offload target and variables that the host receives from the target.
For certain phases, you also need to specify other options:
If you specify phase cg, you must also specify option O1, O2 (default), or O3.
If you specify phase ipo, you must also specify option [Q]ipo.
If you specify phase loop, you must also specify option O2 (default) or O3.
If you specify phase openmp, you must also specify option [q or Q]openmp.
If you specify phase par, you must also specify option [Q]parallel.
If you specify phase pgo, you must also specify option [Q]prof-use.
If you specify phase tcollect, you must also specify option [Q]tcollect.
If you specify phase vec, you must also specify option O2 (default) or O3. If you are interested in explicit vectorization by OpenMP* SIMD, you must also specify option [q or Q]openmp.
To find all phase possibilities, specify option [q or Q]opt-report-help.
If you use this option, you do not have to specify option [q or Q]opt-report.
However, if you want to get more details for each phase, specify option [q or Q]opt-report=n along with this option and indicate the level of detail you want by specifying an appropriate value for n. (See also the Example section below.)
When optimization reporting is enabled, the default is -qopt-report-phase=all (Linux* and OS X*) or /Qopt-report-phase:all (Windows*).
Visual Studio: Diagnostics > Optimization Diagnostic Phase
Eclipse: None
Xcode: Diagnostics > Optimization Diagnostic Phase
None
The following shows examples of the details you may receive when you specify one of the optimizer phases and a particular level (n) for option [q or Q]opt-report. Note that details may change in future releases.
Optimizer phase |
The level specified in option[q or Q]opt-report |
Description |
---|---|---|
cg |
1 |
Generates a list of which intrinsics were lowered and which memcall optimizations were performed. |
ipo |
1 |
For each compiled routine, generates a list of the routines that were inlined into the routine, called directly by the routine, and whose calls were deleted. |
2 |
Generates level 1 details, values for important inlining command line options, and a list of the routines that were discovered to be dead and eliminated. |
|
3 |
Generates level 2 details, whole program information, the sizes of inlined routines, and the reasons routines were not inlined. |
|
4 |
Generates level 3 details, detailed footnotes on the reasons why routines are not inlined, and what action the user can take to get them inlined. |
|
loop |
1 |
Reports high-level details about which optimizations have been performed on the loop nests (along with the line number). Most of the loop optimizations (like fusion, unroll, unroll & jam, collapsing, rerolling etc) only support this level of detail. |
2 |
Generates level 1 details, and provides more detail on the metrics and types of references (like prefetch distance, indirect prefetches etc) used in optimizations. Only a few optimizations (like prefetching, loop classification framework etc) support these extra details. |
|
offload |
1 |
Reports the file and line for each CPU offload and offload region. |
2 |
Reports variables sent back and forth between the CPU and offload architecture. |
|
3 |
Reports evaluation of length, alloc_if, free_if, and align clauses and assignments to memory locations. Note that the compiler changes default inout variables to either in or out based on usage. |
|
openmp |
1 |
Reports loops, regions, sections, and tasks successfully parallelized. |
2 |
Generates level 1 details, and messages indicating successful handling of MASTER constructs, SINGLE constructs, CRITICAL constructs, ORDERED constructs, ATOMIC directives, and so forth. |
|
par |
1 |
Reports which loops were parallelized. |
2 |
Generates level 1 details, and reports which loops were not parallelized along with a short reason. |
|
3 |
Generates level 2 details, and prints the memory locations that are categorized as private, shared, reduction, etc.. |
|
4 |
For this phase, this is the same as specifying level 3. |
|
5 |
Generates level 4 details, and dependency edges that inhibit parallelization. |
|
pgo |
1 |
During profile feedback, generates report status of feedback (such as, profile used, no profile available, or unable to use profile) for each routine compiled. |
2 |
Generates level 1 details, and reports which value profile specializations took place for indirect calls and arithmetic operations. |
|
3 |
Generates level 2 details, and reports which indirect calls had profile data, but did not meet the internal threshold limits for the percentage or execution count. |
|
tcollect |
1 |
Generates a list of routines and whether each was selected for trace collection. |
vec |
1 |
Reports which loops were vectorized. |
2 |
Generates level 1 details and reports which loops were not vectorized along with short reason. |
|
3 |
Generates level 2 details, and vectorizer loop summary information. |
|
4 |
Generates level 3 details, and greater detail about vectorized and non-vectorized loops. |
|
5 |
Generates level 4 details, and details about any proven or assumed data dependences. |