fortran - allocatable function parameters and automatic vectorization -
can sb. explain difference between passing pointer , allocatable subroutine parameters in fortran? not understand why following function not vectorize in gfortran 7.2:
subroutine test0(fsm, im) implicit none real, dimension(:), pointer :: fsm integer, intent(in) :: im integer  = 1,im    fsm(i) = fsm(i)*2 end end subroutine test0 while vectorize (just in c) if use allocatable attribute dummy fsm argument. compile using following command line
gfortran -mavx -o3 -ftree-vectorize -c loops.f90 -fopt-info-vec-note when using pointer gfortran reports higher vectorization cost. there important difference in how arguments passed (e.g., indirection, pointer pointer vs. passing value), or gfortran problem? 
a compiler may able better optimize when object contiguous. vectorization here may, example, limited case object known contiguous @ compilation.
an array allocated allocate statement contiguous.  dummy argument pointer array need not contiguous.  here seems difference observed.
however, array pointer may given contiguous attribute.  such array contiguous.  restriction on pointer may pointer associated contiguous target.
similar experience may had assumed-shape arrays. explicit shape arrays contiguous.
Comments
Post a Comment