-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allocating receive and freeing send #32
Comments
For more prior work, the Multicore Communication API |
Jeff, we were doing this in message passing systems in 1980s on sequent symmetry and using the message passing model from the reactive kernel and cosmic environment - when we proposed these semantics in MPI-1, they were rejected as troublesome for Fortran -- one of the standard disqualifiers :-) Zipcode did these semantics too... I know that is much earlier stuff but it should be clear this is 30 year old practice we are belatedly finally considering again for mpi. |
@tonyskjellum MPI-1 lacks Are there Fortran issues that are not addressed by |
When MPI-1 was developed, Fortran 90 was too new (few good compilers) and the POINTER feature too limited at the time. With Fortran 2008, its possible to define standard-conforming routines for these operations, so the Fortran issue is no longer present. |
Feedback from Sept 2017 face-to-face meeting: Torsten: referenced papers talk about irregular applications that pack/unpack data and pass ownership of the packed buffer, not the non-contiguous memory used by the calculation code. Dan: technically possible to define various options, but is there a use-case that we can use to drive/justify the design choices? |
It is my understanding that the Forum decided to cease working on this, which I think is the right decision given that it is impractical/impossible to support noncontiguous datatypes in a manner consistent with the existing features and MPI-3 shared memory provides an acceptable alternative to OP for zero-copy interprocess communication. |
This was https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/464
Motivation
See http://meetings.mpi-forum.org/secretary/2013/09/slides/jsquyres-arecv.pdf for now.
Prior Art
Ownership Passing (OP)
Fine-Grain MPI
MPIX_Z(send,recv)
andMPIX_Iz(send,recv)
, which do zero-copy message passing between processes located in the same address space (as determined byMPIX_Get_collocated_(size,startrank)
). http://www.cs.ubc.ca/~humaira/docs/fgmpi_userguide.pdfFunctions
Note that, like
MPI_Alloc_mem
,outbuf
is actually avoid**
, not avoid*
.There is no count argument for
MPI_(I)ARECV
. One usesMPI_GET_COUNT
to obtain that information. Unlike the previous proposal (by Squyres and Goodell), the function signatures here include the buffer output argument in order to obviate the need for a new function (such asMPI_STATUS_GET_BUFFER
) for this purpose).There are equivalent ready functions.
There are equivalent synchronous functions.
Semantics
The following code ''approximates'' what a naive implementation of
MPI_ARECV
might look like.The following code ''approximates'' what a naive implementation of
MPI_FSEND
might look like.The text was updated successfully, but these errors were encountered: