In the process of trying to create a wrapper for open mpi to another language. Specifically, I am trying to understand how the remote memory access/one-sided communication works in open mpi 1.1, and I am having some trouble.
I have begun by trying to trace the steps in a simple MPI_Get call. It seems that ompi_osc_pt2pt_replyreq_recv in ompi/mca/osc/pt2pt/osc_pt2pt_data_move.c is the function that receives the data for the requesting process, however I have not been able to find the part of the code that receives the request at the other end. It looks like ompi_osc_pt2pt_component_fragment_cb in osc_pt2pt_component.c sends the data back to the requesting process, but I can't see where the data is actually copied.
Can someone please point me in the right direction? Is there any documentation on the one-sided communication implementation that I should be reading?