Go to the source code of this file.
|
| module | gs_shmem |
| | Defines OpenSHMEM gather-scatter communication.
|
| |
|
| subroutine | gs_shmem::gs_shmem_buf_init (this, pe_order, dof_stack) |
| | Allocate symmetric memory and per-neighbor bookkeeping for one direction of communication.
|
| |
| subroutine | gs_shmem::gs_shmem_buf_free (this) |
| | Release symmetric memory and bookkeeping.
|
| |
| subroutine | gs_shmem::gs_shmem_init (this, send_pe, recv_pe) |
| | Initialise OpenSHMEM based communication method.
|
| |
| subroutine | gs_shmem::gs_shmem_free (this) |
| | Deallocate OpenSHMEM based communication method.
|
| |
| subroutine | gs_shmem::gs_shmem_nbsend (this, u, n, deps, strm) |
| | Pack the gathered shared dofs into the symmetric send buffer and issue non-blocking puts with signaling to each neighbor's recv buffer. Before each put, wait for the receiver's ack of our previous round so we never overwrite a buffer the receiver hasn't consumed yet.
|
| |
| subroutine | gs_shmem::gs_shmem_nbrecv (this) |
| | No-op: receives are completed via remote put-with-signal.
|
| |
| subroutine | gs_shmem::gs_shmem_nbwait (this, u, n, op, strm) |
| | Wait per-neighbor for the signal indicating that data has landed, apply the gather-scatter operation from the recv buffer into u, and ack the sender so they may overwrite the buffer in the next round.
|
| |