Quantcast
Channel: Intel® Fortran Compiler
Viewing all articles
Browse latest Browse all 3270

Generating a Vectorization Report

$
0
0

A vectorization report shows what loops in your code were vectorized and explains why other loops were not vectorized. To generate a vectorization report, use the Qopt-report and Qopt-report-phase:vec compiler options.

Together with Qopt-report-phase:vec, Qopt-report:1 generates a report with the loops in your code that were vectorized while Qopt-report:2 generates a report with both the loops in your code that were vectorized and the reason that other loops were not vectorized.

To use these options:

  1. In your project's property pages select Configuration Properties> Fortran> Diagnostics.

  2. For Optimization Diagnostics Level, select Level 1 (/Qopt-report:1).

  3. For Optimization Diagnostics Phase, select Vectorization (/Qopt-report-phase:vec).

Because vectorization is turned off with the O1 option, the compiler does not generate a vectorization report. To generate a vectorization report, build your project with the O2 option:

To set the O2 option:

  1. In your project's property pages select Configuration Properties> Fortran> Optimization .

  2. For Optimization, select Maximize Speed.

For the purpose of showing the report, we'll also replace the call to matvec() in Driver.c with the equivalent C code by defining the preprocessor macro NOFUNCCALL. To do this, add NOFUNCCALL with a semicolon to the list of user defined macros at Project> Properties> C/C++> Preprocessor> Preprocessor Definitions.

Rebuild your project and then run the executable (Debug > Start Without Debugging). Record the new execution time. The reduction in time is mostly due to auto-vectorization of the inner loop at line 32 in matvec.f90 noted in the Compiler Optimization Report window, as well as in the *.optrpt files in the object directory.

For example, the following message appears in matvec.optrpt and driver.optrpt:

matvec.f90(32,3):remark #15300: LOOP WAS VECTORIZED

Note

Your line and column numbers may be different.

The Qopt-report:2 option returns a list that also includes loops that were not vectorized, along with the reason why the compiler did not vectorize them. Add the Qopt-report:2 option in the same way you added Qopt-report:1 above, instead selecting Level 2 (/Qopt-report:2).

Rebuild your project.

The vectorization report indicates that the loop at line 33 in matvec.f90 did not vectorize because it is not the innermost loop of the loop nest..

Note

  • Your line and column numbers may be different.

  • For more information on the Qopt-report and Qopt-report-phase compiler options, see the Compiler Options section in the Compiler User and Reference Guide.

Next: Improving Performance by Aligning Data

English

Viewing all articles
Browse latest Browse all 3270

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>