|
Neko 1.99.7
A portable framework for high-order spectral element flow simulations
|
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 | |
| logical, parameter, public | gs_utofu::gs_utofu_avail = .true. |
| Whether uTofu support was built into this Neko (–with-utofu). Lets callers (e.g. the gs comm. autotuner) skip the backend rather than aborting in init on builds without it. | |
| 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. | |