Hi Arun,
The strength of RMA (low synchronization overhead) is also its main
weakness (lack of synchronization). It's easy to move data between
processes but hard to get the synchronization right so that processes
read the right data. RMA has yet to find a good solution to the
synchronization problem (and in my book bulk synchronization is not
"good"). P2P does a pretty fine job at that, supported by hardware, and
most classes of applications simply don't need the flexibility in
communication pattern RMA would provide.
Collective operations can be fairly well optimized and almost certainly
perform better at scale than an equivalent written out in RMA (e.g.,
Broadcast can be implemented in log(N) steps vs every issuing a GET from
the root process).
Add to that the fact that MPI RMA was for the longest time not well
supported by implementations (buggy & bad performance) so those who
tried probably threw in the towel at some point. The UCX backend in OMPI
has seen quite some improvements in the last year or two but people are
hesitant to invest resources porting applications.
The MPI RMA-WG started gathering some application examples a while back
and we are definitely interested in more. Here are two examples that we
know of:
- NWCHEM via ARMCI (https://github.com/pmodels/armci-mpi/)
- MURPHY (https://www.murphy-code.dev/)
UPC++ can run over MPI RMA but certainly favors GASnet. You can also
look at use cases for OpenSHMEM and NvSHMEM, which have somewhat
different synchronization models but are similar at heart.
Hope that helps,
Joseph
On 1/17/25 07:24, 'Chandran, Arun' via Open MPI users wrote:
[Public]
Hi Experts,
I am trying to understand the usage of MPI’s one-sided communication
in HPC applications.
This research paper (
https://icl.utk.edu/publications/international-survey-mpi-users ) said
it’s popularity is behind collectives, and point-to-point APIs.
Given the advantages over the two-sided communication, one-sided
communication should have gained popularity, right?
I tried to search the codebase of:
1. NWCHEM (https://github.com/nwchemgit/nwchem)
2. WRF(https://github.com/wrf-model/WRF)
3. Quantum Espresso(https://github.com/QEF/q-e)
4. GROMACS (https://github.com/gromacs/gromacs)
But did not hit any result for the search string ‘MPI_Win’. Do these
applications use one-sided MPI_Get() and MPI_Put() via some other
mechanism?
Can someone please comment about the usage of one-sided communication
in HPC applications? Are there any real-world applications using it?
--Arun
To unsubscribe from this group and stop receiving emails from it, send
an email to users+unsubscr...@lists.open-mpi.org.
To unsubscribe from this group and stop receiving emails from it, send an email
to users+unsubscr...@lists.open-mpi.org.