Neko 1.99.5
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, tag, 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, tag)
 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.
 
subroutine gs_shmem_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 with a single signal. Buffer indexing and put size scale by nc; the per-rank signalling is unchanged.
 
subroutine gs_shmem_nbrecv_vec (this, tag, nc)
 No-op: receives are completed via remote put-with-signal.
 
subroutine gs_shmem_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.
 

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 169 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 124 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 250 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 190 of file gs_shmem.F90.

◆ gs_shmem_nbrecv()

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

Definition at line 337 of file gs_shmem.F90.

◆ gs_shmem_nbrecv_vec()

subroutine gs_shmem::gs_shmem_nbrecv_vec ( class(gs_shmem_t), intent(inout this,
integer, intent(in tag,
integer, intent(in nc 
)
private

Definition at line 463 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,
integer, intent(in tag,
type(c_ptr), intent(inout deps,
type(c_ptr), intent(inout strm 
)
private

Definition at line 282 of file gs_shmem.F90.

◆ gs_shmem_nbsend_vec()

subroutine gs_shmem::gs_shmem_nbsend_vec ( class(gs_shmem_t), intent(inout this,
real(kind=rp), dimension(nc*n), intent(inout u,
integer, intent(in n,
integer, intent(in nc,
integer, intent(in tag,
type(c_ptr), intent(inout deps,
type(c_ptr), intent(inout strm 
)
private
Parameters
ucompact shared buffer, component-outer: u((c-1)*n + idx).

Definition at line 412 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 346 of file gs_shmem.F90.

◆ gs_shmem_nbwait_vec()

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

Definition at line 470 of file gs_shmem.F90.