Product Version: Intel® Fortran Compiler 15.0 and a later version
Cause:
This diagnostic message occurs when the parameters of the directive are contradictory. The vectorization report generated using Intel® Fortran Compiler's optimization and vectorization report options states that pragma supersedes previous setting:
Windows* OS: /O2 /Qopt-report:2 /Qopt-report-phase:vec
Linux OS or OS X: -O2 -qopt-report2 -qopt-report-phase=vec
Example:
In the example below, the directive !dir$ loop count has two clauses, avg() and max(). Notice the contradiction in these two clauses: the max() parameter is lesser than the avg() clause value. The following example will generate this remark in optimization report:
subroutine f15340( A, n )
implicit none
real :: A(n)
integer :: n, i
!dir$ loop count avg(30), max(10)
do i=1,n
A(i) = real(i)
end do
end subroutine f15340
ifort -c /O2 /Qopt-report:2 /Qopt-report-phase:vec /Qopt-report-file:stdout f15340.f90
Begin optimization report for: F15340
Report from: Vector optimizations [vec]
LOOP BEGIN at f15340.f90(6,1
remark #15340: pragma supersedes previous setting
remark #15300: LOOP WAS VECTORIZED
LOOP END
Resolution:
Make sure the max() clause is always greater than avg() clause value. Notice that the loop does still vectorize, it simply ignores the avg(30) and uses max(10)
See also:
Requirements for Vectorizable Loops
Vectorization and Optimization Reports