The IBM P5 I'm working on is big endian.
The test program I'm using is written in Fortran 90 (as stated in my question).
I imagine this is indeed a library issue, but I still don't understand what I've done wrong here.
Can anyone tell me how I should be building my OpenMPI libraries and my test program so that this test would work correctly?
From: Jed Brown [mailto:five9a2_at_[hidden]] On Behalf Of Jed Brown
Sent: Wednesday, July 07, 2010 3:08 PM
To: Price, Brian M (N-KCI); Open MPI Users
Subject: Re: [OMPI users] EXTERNAL: Re: MPI_GET beyond 2 GB displacement
On Wed, 07 Jul 2010 15:51:41 -0600, "Price, Brian M (N-KCI)" <brian.m.price_at_[hidden]> wrote:
> I understand what you've said about 32-bit signed INTs, but in my program, the displacement variable that I use for the MPI_GET call is a 64-bit INT (KIND = 8).
The MPI Fortran bindings expect a standard int, your program is only working because your system is little endian so the first 4 bytes are the low bytes (correct for numbers less than 2^31), it would be completely broken on a big endian system. This is a library issue, you can't fix it by using different sized ints in your program and you would see compiler errors due to the type mismatch if you were using Fortran 90 (which is capable of some type checking).