Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070
Cause:
When using NOVECTOR directive in code, the vectorization report generated using Visual Fortran Compiler's optimization and vectorization report options ( -O2 -Qopt-report:2) includes non-vectorized loop instance.
Example:
An example below will generate the following remark in optimization report:
subroutine foo(a, b, n) implicit none integer, intent(in) :: n real, intent(inout) :: a(n) real, intent(in) :: b(n) integer :: i !DEC$ NOVECTOR do i=1,n a(i)= b(i)+1 end do end subroutine foo
Report from: Vector & Auto-parallelization optimizations [vec, par]
LOOP BEGIN at f15319.f90(11,8)
remark #15319: loop was not vectorized: novector directive used
LOOP END
Resolution:
There may be cases where you want to explicitly avoid vectorization of a loop; for example, if vectorization would result in a performance regression rather than an improvement. In these cases, you can use the NOVECTOR directive to disable vectorization of the loop.
See also:
Requirements for Vectorizable Loops
Vectorization and Optimization Reports