Diagnostic 15340: pragma supersedes previous setting

ID 标签 732956
已更新 6/29/2015
版本 Latest
公共

author-image

作者

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 Essentials

Vectorization and Optimization Reports

Back to the list of vectorization diagnostics for Intel® Fortran