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.

Reply via email to