Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070
Cause:
The vectorization report generated when using Visual Fortran Compiler's optimization options ( -O2 -Qopt-report:2 ) states that loop was not vectorized since the inner loop was vectorized.
Example:
An example below will generate the following remark in optimization report:
subroutine foo(a, n1, n) implicit none integer, intent(in) :: n, n1 real, intent(inout) :: a(n1,n1) integer :: i, j do i=1,n do j=1,n a(j,i) = a(j,i) + 1 end do end do end subroutine foo
Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at f15542.f90(7,9) remark #15542: loop was not vectorized: inner loop was already vectorized LOOP BEGIN at f15542.f90(8,13) Peeled LOOP END LOOP BEGIN at f15542.f90(8,13) remark #15399: vectorization support: unroll factor set to 2 remark #15300: LOOP WAS VECTORIZED LOOP END LOOP END
See also:
Requirements for Vectorizable Loops
Vectorization and Optimization Reports