Neko 1.99.3
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
gs_shmem Module Reference

Defines OpenSHMEM gather-scatter communication.

Data Types

type  gs_shmem_buf_t
 Symmetric buffer for one direction of OpenSHMEM communication. More...
 
type  gs_shmem_t
 Gather-scatter communication using OpenSHMEM one-sided puts with per-rank signaling for completion (OpenSHMEM 1.5). More...
 

Functions/Subroutines

subroutine gs_shmem_buf_init (this, pe_order, dof_stack)
 Allocate symmetric memory and per-neighbor bookkeeping for one direction of communication.
 
subroutine gs_shmem_buf_free (this)
 Release symmetric memory and bookkeeping.
 
subroutine gs_shmem_init (this, send_pe, recv_pe)
 Initialise OpenSHMEM based communication method.
 
subroutine gs_shmem_free (this)
 Deallocate OpenSHMEM based communication method.
 
subroutine 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_nbrecv (this)
 No-op: receives are completed via remote put-with-signal.
 
subroutine 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.
 

Function/Subroutine Documentation

◆ gs_shmem_buf_free()

subroutine gs_shmem::gs_shmem_buf_free ( class(gs_shmem_buf_t), intent(inout this)
private

Definition at line 163 of file gs_shmem.F90.

◆ gs_shmem_buf_init()

subroutine gs_shmem::gs_shmem_buf_init ( class(gs_shmem_buf_t), intent(inout this,
integer, dimension(:), intent(in pe_order,
type(stack_i4_t), dimension(0:), intent(inout dof_stack 
)
Parameters
pe_orderranks in send_pe / recv_pe order (1-based)
dof_stackindexed by rank, lower bound = 0 (per init_dofs)

Definition at line 121 of file gs_shmem.F90.

◆ gs_shmem_free()

subroutine gs_shmem::gs_shmem_free ( class(gs_shmem_t), intent(inout this)
private

Definition at line 243 of file gs_shmem.F90.

◆ gs_shmem_init()

subroutine gs_shmem::gs_shmem_init ( class(gs_shmem_t), intent(inout this,
type(stack_i4_t), intent(inout send_pe,
type(stack_i4_t), intent(inout recv_pe 
)
private

Definition at line 184 of file gs_shmem.F90.

◆ gs_shmem_nbrecv()

subroutine gs_shmem::gs_shmem_nbrecv ( class(gs_shmem_t), intent(inout this)
private

Definition at line 329 of file gs_shmem.F90.

◆ gs_shmem_nbsend()

subroutine gs_shmem::gs_shmem_nbsend ( class(gs_shmem_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout u,
integer, intent(in n,
type(c_ptr), intent(inout deps,
type(c_ptr), intent(inout strm 
)
private

Definition at line 275 of file gs_shmem.F90.

◆ gs_shmem_nbwait()

subroutine gs_shmem::gs_shmem_nbwait ( class(gs_shmem_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout u,
integer, intent(in n,
integer  op,
type(c_ptr), intent(inout strm 
)
private

Definition at line 337 of file gs_shmem.F90.