Generating a Vectorization Report

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 -vec-report1 or the -vec-report2 compiler options. These options generate reports that show the loops in your code that were vectorized and the reason why other loops were not vectorized.

The -vect-report1 option generates a report with the loops in your code that were vectorized while the -vec-report2 option generates a report with both the loops in your code that were vectorized and the reason why other loops were not vectorized.

Because vectorization is off with the -O1 option, the compiler does not generate a vectorization report. To generate a vectorization report, compile your project with the -O2 and -vec-report1 options:

ifort -real-size 64 -O2 -vec-report1 matvec.f90 driver.f90 -o MatVector

Recompile the program and then execute MatVector. Record the new execution time. The reduction in time is mostly due to auto-vectorization of the inner loop at line 32 noted in the vectorization report:

matvec.f90(32) (col. 3): remark: LOOP WAS VECTORIZED.
matvec.f90(38) (col. 6): remark: LOOP WAS VECTORIZED.
driver.f90(59) (col. 5): remark: LOOP WAS VECTORIZED.
driver.f90(61) (col. 5): remark: LOOP WAS VECTORIZED.
driver.f90(80) (col. 29): remark: LOOP WAS VECTORIZED.

Note

Your line and column numbers may be different.

The -vec-report2 option returns a list that also includes loops that were not vectorized, along with the reason why the compiler did not vectorize them.

Recompile your project with the -vec-report2 option.

ifort -real-size 64 -O2 -vec-report2 matvec.f90 driver.f90 -o MatVector

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

matvec.f90(32) (col. 3): remark: LOOP WAS VECTORIZED.
matvec.f90(33) (col. 3): remark: loop was not vectorized: not inner loop.
matvec.f90(38) (col. 6): remark: LOOP WAS VECTORIZED.
driver.f90(59) (col. 5): remark: loop was not vectorized: not inner loop.
driver.f90(59) (col. 5): remark: loop was not vectorized: vectorization possible but seems inefficient.
driver.f90(59) (col. 5): remark: loop was not vectorized: not inner loop.
driver.f90(59) (col. 5): remark: loop was not vectorized: subscript too complex.
driver.f90(59) (col. 5): remark: loop was not vectorized: not inner loop.
driver.f90(59) (col. 5): remark: LOOP WAS VECTORIZED.
driver.f90(61) (col. 5): remark: loop was not vectorized: vectorization possible but seems inefficient.
driver.f90(61) (col. 5): remark: LOOP WAS VECTORIZED.
driver.f90(80) (col. 29): remark: LOOP WAS VECTORIZED.
driver.f90(74) (col. 7): remark: loop was not vectorized: nonstandard loop is not a vectorization candidate.

Note

Previous: Establishing a Performance Baseline Next: Improving Performance by Aligning Data


Submit feedback on this help topic