On Wed, 07 Jul 2010 17:34:44 -0600, "Price, Brian M (N-KCI)" <brian.m.price_at_[hidden]> wrote:
> 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.