Neko 1.99.5
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
gs_utofu.F90 File Reference

Go to the source code of this file.

Data Types

type  gs_utofu::gs_utofu_t
 Gather-scatter communication using one-sided uTofu puts. More...
 

Modules

module  gs_utofu
 Defines a gather-scatter backend using the native Tofu interconnect (uTofu). Each rank registers its receive buffer once and a send is a single one-sided RDMA put straight into the neighbour's buffer, with the arrival signal fused into the descriptor (edata) instead of a separate atomic/credit message. Injection is non-blocking and thread-parallel: each OpenMP thread owns one injection VCQ (created thread-safe, dealt over the TNIs) and fires the puts for its share of the peers itself. The fused vector (multi-component) exchange of gs_op_r3 is supported through a second, independent context with its own buffers, receive VCQ, and parity. See gs_utofu_aux.c for the transport.
 

Functions/Subroutines

subroutine gs_utofu::gs_utofu_init (this, send_pe, recv_pe)
 Initialise the uTofu communication method. See gs_comm.f90 for details.
 
subroutine gs_utofu::gs_utofu_free (this)
 Deallocate the uTofu communication method.
 
subroutine gs_utofu::gs_nbsend_utofu (this, u, n, tag, deps, strm)
 Pack the send slabs and fire all one-sided puts (non-blocking).
 
subroutine gs_utofu::gs_nbrecv_utofu (this, tag)
 No-op: the one-sided receive buffer is registered once at init, so there is nothing to post per round.
 
subroutine gs_utofu::gs_nbwait_utofu (this, u, n, op, strm)
 Poll for incoming puts, reducing each slab into u as it lands, then wait for our own sends to drain and flip the double-buffer parity.
 
subroutine gs_utofu::gs_nbsend_vec_utofu (this, u, n, nc, tag, deps, strm)
 Pack the fused nc-component send slabs and fire the puts (non-blocking).
 
subroutine gs_utofu::gs_nbrecv_vec_utofu (this, tag, nc)
 No-op: the vector receive buffer is registered once at init, so there is nothing to post per round.
 
subroutine gs_utofu::gs_nbwait_vec_utofu (this, u, n, nc, op, strm)
 Poll for incoming vector puts, reducing each nc-component slab into u as it lands, then flip the vector double-buffer parity. Same protocol as gs_nbwait_utofu, on the vector context and parity.
 

Variables

integer, parameter gs_utofu::gs_utofu_xchg_tag = 8123
 MPI tag used for the one-off neighbour metadata exchange at init.
 
integer, parameter gs_utofu::gs_utofu_xchg_tag_v = 8124
 Ditto for the fused vector path's metadata exchange.