I am testing the one-sided message passing (mpi_put, mpi_get) that is
now supported in the 1.1 release. It seems to work OK for some simple
test codes, but when I run my big application, it fails. This
application is a large weather model that runs operationally on the SGI
Origin 3000, using the native one-sided message passing that has been
supported on that system for many years. At least on that architecture,
the code always runs correctly for processor numbers up to 480. On the
O3K a requirement for the one-sided communication to work correctly is
to use 'mpi_win_create' to define the RMA 'windows' in symmetric
locations on all processors, i.e. the same 'place' in memory on each
processor. This can be done with static memory, i.e. , in common; or
on the 'symmetric heap', which is defined via environment variables. In
my application the latter method is used. I define several of these
'windows' on the symmetric heap, each with a unique handle.
Before I spend my time trying to diagnose this problem further, I need
as much information about the OpenMPI one-sided implementation as
available. Do you have a similar requirement or criteria for symmetric
memory for the RMA windows? Are there runtime parameters that I should
be using that are unique to one-sided message passing with OpenMPI? Any
other information will certainly be appreciated.
I have attached the logfiles and ompi output for my installation. I am
running with Fedora 4 linux on a 2-processor (each dual-core) Opteron
system, using the Intel 9.1.033 F90 compiler.