|
| subroutine | gs_mpi_rma::gs_mpi_rma_init (this, send_pe, recv_pe) |
| | Initialise MPI RMA based communication method.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_free (this) |
| | Deallocate MPI RMA based communication method.
|
| |
| integer(kind=i8) function | gs_mpi_rma::gs_mpi_rma_load (s, slot) |
| | Reload a signal counter through a VOLATILE dummy, so the spin in gs_mpi_rma_wait_ge reads memory on every iteration rather than a value the compiler hoisted out of the loop.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_wait_ge (this, slot, val) |
| | Spin until the local signal counter in slot slot has reached val. Called by the master thread only.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_nbsend (this, u, n, tag, deps, strm) |
| | Pack the gathered shared dofs and put them into each neighbour's receive window, then announce the puts. See the type comment for why the puts, the flush and the signals are separate phases.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_nbrecv (this, tag) |
| | No-op: receives are completed by the remote put and its signal.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_nbwait (this, u, n, op, strm) |
| | Wait per neighbour for the signal that its data has landed, reduce the slab into u, and ack the sender so it may overwrite the slab next round.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_nbsend_vec (this, u, n, nc, tag, deps, strm) |
| | Fused nc-component send: pack nc contiguous component blocks per peer slab and put nc*ndofs reals. Buffer indexing and put sizes scale by nc; the signalling is unchanged.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_nbrecv_vec (this, tag, nc) |
| | No-op: receives are completed by the remote put and its signal.
|
| |
| subroutine | gs_mpi_rma::gs_mpi_rma_nbwait_vec (this, u, n, nc, op, strm) |
| | Fused nc-component wait/reduce: per peer, wait on the data signal and reduce nc component blocks into u, then ack the sender.
|
| |