Diagnostic 15310: xxxx was not vectorized: operation cannot be vectorized

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

author-image

作者

Product Version: Intel® Fortran Compiler 15.0 and a later version 

Cause:

When the loop contains an assignment to a derived data type which is not directly vectorizable. The vectorization report generated using Intel® Fortran Compiler's optimization and vectorization report options includes non-vectorized loop instance:

Windows* OS:  /O2  /Qopt-report:2  /Qopt-report-phase:vec    

Linux OS or OS X:  -O2 -qopt-report2  -qopt-report-phase=vec

  

Example:

An example below will generate the following  remark in optimization report:

module my_mod
   integer, parameter :: N=1000
   type :: my_type
      integer :: c1
      real(8) :: c2
   end type my_type
   type(my_type), dimension(N) :: my_inst
end module my_mod

subroutine f15310(init_data)
   use my_mod
   implicit none
   integer :: i
   type(my_type), intent(in) :: init_data

   do i=1,N
      my_inst(i) = init_data
   enddo
end subroutine f15310

 ifort -c /O2 /Qopt-report:2 /Qopt-report-phase:vec /Qopt-report-file:stdout f15310.f90

Begin optimization report for: F15310

    Report from: Vector optimizations [vec].

LOOP BEGIN at f15310.f90(16,4)
remark #15310: loop was not vectorized: operation cannot be vectorized
LOOP END

Resolution: 

 The loop may be vectorized if an assignment operator is defined for the derived type.

See also:

Requirements for Vectorizable Loops

Vectorization Essentials

Vectorization and Optimization Reports

Back to the list of vectorization diagnostics for Intel® Fortran