Re: [mpiwg-hybridpm] First draft of Continuations section
There are user-defined function signatures in Fortran for reductions. Look at 6.9.5 in https://www.mpi-forum.org/docs/mpi-4.0/mpi40-report.pdf. Those are callbacks that get invoked internally when reductions are called. Jeff On Wed, Aug 4, 2021 at 9:05 PM Joseph Schuchart via mpiwg-hybridpm < [email protected]> wrote:
Thanks Jeff! I am less worried about the out-of-band update of the status objects but the whole thing with callbacks and function pointers. The only place in the MPI standard using callbacks right now is the tools chapter and that is explicitly C-only. Looking at https://scicomp.stackexchange.com/a/286 it seems to be possible to pass around function pointers in Fortran but the comments suggest that its not compatible with C?
Thanks Joseph
On 8/4/21 1:00 PM, Jeff Hammond wrote:
Regarding Fortran…
In theory, you need ASYNCHRONOUS/VOLATILE attributes on visible state that’s updated out of band.
In practice, MPI implementations have done this with nonblocking send-recv for 25 years and it hasn’t been an issue.
Sent from my iPhone
On Aug 4, 2021, at 7:36 PM, Joseph Schuchart via mpiwg-hybridpm < [email protected]> wrote:
Dear all,
I have written and attached a first draft of the continuations section that I would like to discuss in one of the upcoming meetings. Right now it is embedded at the end Section 3 (Point-to-Point following test and wait etc) where I felt it would fit well, I'm open to other suggestions though.
There are still some open TODOs that I'd like to discuss. In particular, I'm grappling with the handling of statuses. As suggested during previous discussions, I removed the flag argument to MPI_Continue such that the MPI implementation is allowed to invoke the continuations directly (can be controlled through an info key though). That means that after the call to MPI_Continue there is no good reason to inspect the statuses anymore. However, we may still want the user to provide the status object(s) in order to avoid exposing implementation-internal memory in the callback. But then I am worried that this is a source of error, with users providing pointers to stack memory that goes out of scope before the continuation is invoked.
Also, I am unsure whether and how this whole mechanism works with Fortran. The python generator happily generates the interface but I have no idea whether that is correct...
Looking forward to discussing this on the call!
Cheers Joseph <mpi40-report-continuations.pdf> _______________________________________________ mpiwg-hybridpm mailing list [email protected] https://lists.mpi-forum.org/mailman/listinfo/mpiwg-hybridpm
_______________________________________________ mpiwg-hybridpm mailing list [email protected] https://lists.mpi-forum.org/mailman/listinfo/mpiwg-hybridpm
-- Jeff Hammond [email protected] http://jeffhammond.github.io/
participants (1)
-
Jeff Hammond