On Wed, 07 Jul 2010 17:34:44 -0600, "Price, Brian M (N-KCI)" 
<brian.m.pr...@lmco.com> wrote:
> Jed,
> 
> The IBM P5 I'm working on is big endian.

Sorry, that didn't register.  The displ argument is MPI_Aint which is 8
bytes (at least on LP64, probably also on LLP64), so your use of kind=8
for that is certainly correct.  The count argument is a plain int, I
don't see how your code could be correct if you pass in an 8-byte int
there when it expects a 4-byte int (since the upper 4 bytes would be
used on a big-endian system).

> The test program I'm using is written in Fortran 90 (as stated in my 
> question).

Do you "use mpi" or the F77 interface?

> I imagine this is indeed a library issue, but I still don't understand what 
> I've done wrong here.

I can reproduce this in C on x86-64, even with displ much smaller than
2^31 (e.g. by setting displ_unit=4).  Apparently Open MPI multiplies
displ*displ_unit and stuffs the result in an int (somewhere in the
implementation), MPICH2 works correctly for me with large displacements.

  https://svn.open-mpi.org/trac/ompi/ticket/2472

Jed

Reply via email to