On Sat, Jul 17, 2010 at 07:50:30AM -0400, Jeff Squyres wrote: > On Jul 17, 2010, at 4:22 AM, Anton Shterenlikht wrote: > > > Is loop vectorisation/unrolling safe for MPI logic? > > I presume it is, but are there situations where > > loop vectorisation could e.g. violate the order > > of execution of MPI calls? > > I *assume* that the intel compiler will not unroll loops > that contain MPI function calls. That's obviously an > assumption, but I would think that unless you put some > pragmas in there that tell the compiler that it's safe > to unroll, the compiler will be somewhat conservative > about what it automatically unrolls.
% mpif90 ./p-grains1.f90 ./p-grains1.f90(123): (col. 1) remark: LOOP WAS VECTORIZED. ./p-grains1.f90(250): (col. 35) remark: LOOP WAS VECTORIZED. Looking at the source code: 123 sub_domain=0 250 write(*,*)count(sub_domain .ne. 0) where sub_domain is an array. So, it seems the compiler vectorised only implicit whole array operations. Jeff, many thanks again anton -- Anton Shterenlikht Room 2.6, Queen's Building Mech Eng Dept Bristol University University Walk, Bristol BS8 1TR, UK Tel: +44 (0)117 331 5944 Fax: +44 (0)117 929 4423