-qreport

Category

Listings, messages, and compiler information

Purpose

Produces listing files that show how sections of code have been optimized.

A listing file is generated with a .lst suffix for each source file named on the command line. When used with an option that enables automatic parallelization or vectorization, the listing file shows a pseudo-Fortran code listing and a summary of how program loops are parallelized or optimized. The report also includes diagnostic information to show why specific loops could not be parallelized or vectorized. For instance, when -qreport is used with -qsimd=auto, messages are provided to identify non-stride-one references that can prevent loop vectorization.

The compiler also reports the number of streams created for a given loop, which include both load and store streams. This information is included in the Loop Transformation section of the listing file. You can use this information to understand your application code and to tune your code for better performance. For example, you can distribute a loop which has more streams than the number supported by the underlying architecture.POWER4 and POWER5 processors support load stream prefetch and POWER6® or higher processors support both load and store stream prefetch.

Syntax

Read syntax diagramSkip visual syntax diagram
Option:

        .-noreport---------------------------.   
>>- -q--+-report--+------------------------+-+-----------------><
                  |    .-:---------------. |     
                  |    V   .-hotlist-.   | |     
                  '-=------+-smplist-+---+-'     

@PROCESS:

@PROCESS REPORT[({SMPLIST |HOTLIST}...)] | NOREPORT

Defaults

-qnoreport

Parameters

smplist | hotlist

When -qreport=smplist is in effect, produces a pseudo-Fortran listing that shows how the program is parallelized. This listing is produced before loop and other optimizations are performed. It includes messages that point out places in the program that can be modified to be more efficient. This report is only produced if -qsmp is in effect.

When -qreport=hotlist is in effect, produces a pseudo-Fortran listing that shows how loops are transformed, to assist you in tuning the performance of all loops. This report is only produced if -qhot is in effect.

In addition, if you specify the -qreport=hotlist option when -qsmp is in effect, a pseudo-Fortran listing will be produced that shows the calls to the SMP runtime library and the procedures created for parallel constructs.

Specifying -qreport with no suboptions is equivalent to -qreport=hotlist.

Usage

For -qreport to generate a loop transformation listing, you must also specify one of the following options on the command line:
  • -qsimd=auto
  • -qsmp
  • -qhot=level=2 and -qsmp
  • -O5
  • -qipa=level=2
For -qreport to generate PDF information in the listing, you must specify the following option in the command line:
  • -qpdf2 -qreport
For -qreport to generate a parallel transformation listing or parallel performance messages, you must also specify one of the following options on the command line:
  • -qsmp
  • -O5
  • -qipa=level=2

To generate data reorganization information, specify the optimization level -qipa=level=2 or -O5 together with -qreport. Reorganizations include common block splitting, array splitting, array transposing, memory allocation merging, array interleaving, and array coalescing.

To generate information about data prefetch insertion locations, use the optimization level of -qhot, or any other option that implies -qhot together with -qreport. This information appears in the LOOP TRANSFORMATION SECTION of the listing file. In addition, when you use -qprefetch=assistthread to generate prefetching assist threads, the message: Assist thread for data prefetching was generated also appears in the LOOP TRANSFORMATION SECTION of the listing file.

To generate a list of aggressive loop transformations and parallelization performed on loop nests in the LOOP TRANSFORMATION SECTION of the listing file, use the optimization level of -qhot=level=2 and -qsmp together with -qreport.

The pseudo-Fortran code listing is not intended to be compilable. Do not include any of the pseudo-Fortran code in your program, and do not explicitly call any of the internal routines whose names may appear in the pseudo-Fortran code listing.

Examples

To compile myprogram.f so the compiler listing includes a report showing how loops are optimized, enter:
xlf -qhot -O3 -qreport myprogram.f
To compile myprogram.f so the compiler listing also includes a report showing how parallelized loops are transformed, enter:
xlf_r -qhot -qsmp -qreport=smplist myprogram.f

Related information