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
|