I have to ask "What's so bad about that ?" FORTRAN is still
important. (Note FORTRAN not Fortran, which is also important).
The shared memory vendors seem to be very concerned about the cost of
copying data (and so they should be), however the situation is no
different than for the non-shared memory vendors.
The general implementation on shared memory machine consists of a copy
into a shared region and a copy out. A total of two copies.
On a distributed memory machine there are also two copies. One copy
onto the wire, and another copy off the wire.
MPI_RMA_Alloc saves at most one copy, since the data still has to
If you *really* want to reduce the number of copies, then it seems to
me that the correct solution is to provide some of the "receive with
allocation, send with release" type functions that allow you never to
have to copy the data at all, and which can potentially be implemented
on a shared memory machine as simple transfer of ownership of data
which is already in a shared segment, and which stays there
Such functions are also (of course) implementable and usable on a
distributed memory machine, and can reduce the number of copies
necessary there too (for the case where a [short] message has already
been buffered at the receiver before the recv call was made, where one
can potentially avoid an additional copy by returning a pointer to the
It seems unreasonable to me to expect that MPI will allow you to
perform all of the operations that you can perform on a shared memory
machine as efficiently as you could using an explicitly shared memory
model. After all MPI is the Message Passing Interface, not the SMI
(the Shared Memory Interface).
BBN UK Ltd
Phone : +44 117 9071438