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).
In fact, the only thing in my program that isn't a 64-bit INT is the array that I'm trying to transfer values from.
I would post my entire test program, but I don't have direct internet access from the machine that I'm working on. Do you need to see the test program?
Am I still missing something?
From: users-bounces_at_[hidden] [mailto:users-bounces_at_[hidden]] On Behalf Of Jeff Squyres
Sent: Wednesday, July 07, 2010 10:39 AM
To: Open MPI Users
Subject: EXTERNAL: Re: [OMPI users] MPI_GET beyond 2 GB displacement
Sorry for the delay in replying. :-(
It's because for a 32 bit signed int, at 2GB, the value turns negative.
On Jun 29, 2010, at 1:46 PM, Price, Brian M (N-KCI) wrote:
> OpenMPI version: 1.3.3
> Platform: IBM P5
> Built OpenMPI 64-bit (i.e., CFLAGS=-q64, CXXFLAGS=-q64, -FFLAGS=-q64,
> FORTRAN 90 test program:
> - Create a large array (3.6 GB of 32-bit INTs)
> - Initialize MPI
> - Create a large window to encompass large array (3.6 GB)
> - Have PE 0 get 1 32-bit INT from PE1
> o Lock the window
> o MPI_GET
> o Unlock the window
> - Free the window
> - Finalize MPI
> Built FORTRAN 90 test program 64-bit using OpenMPI wrapper compiler (mpif90 -q64).
> Why would this MPI_GET work fine with displacements all the way up to just under 2 GB, and then fail as soon as the displacement hits 2 GB?
> The MPI_GET succeeds with a displacement of 2147483644 (4 bytes less than 2 GB).
> I get a segmentation fault (address not mapped) when the displacement is 2147483648 (2 GB) or larger.
> users mailing list
For corporate legal information go to:
users mailing list