Intel® Fortran Compiler 17.0 Developer Guide and Reference

qopt-report-phase, Qopt-report-phase

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.

Syntax

Linux and macOS:

-qopt-report-phase[=list]

Windows:

/Qopt-report-phase[:list]

Arguments

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:

cg

The phase for code generation

ipo

The phase for Interprocedural Optimization

loop

The phase for loop nest optimization

offload

The phase for Intel® MIC Architecture. This phase has no effect if option -no-qoffload or option /Qoffload- is specified. This phase only applies to Intel® MIC Architecture.

openmp

The phase for OpenMP

par

The phase for auto-parallelization

pgo

The phase for Profile Guided Optimization

tcollect

The phase for trace collection

vec

The phase for vectorization

all

All optimizer phases. This is the default if you do not specify list.

Default

OFF

No optimization report is generated.

Description

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:

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*).

IDE Equivalent

Visual Studio: Diagnostics > Optimization Diagnostic Phase

Eclipse: None

Xcode: Diagnostics > Optimization Diagnostic Phase

Alternate Options

None

Example

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.

See Also