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

Go to the source code of this file.

Data Types

type  gs_neighbour::gs_neighbour_t
 Gather-scatter communication using an MPI neighbourhood collective. The whole halo exchange is carried out by a single MPI_Ineighbor_alltoallv over a distributed-graph communicator built once from the send/recv peer lists. Compared to the point-to-point gs_mpi_t this trades N Isend/Irecv pairs for one collective call: a single entry into the (serialised, on Fugaku) MPI runtime, leaving the library free to stripe the transfers across all network interfaces internally. More...
 

Modules

module  gs_neighbour
 Defines gather-scatter communication using MPI neighbourhood collectives.
 

Functions/Subroutines

subroutine gs_neighbour::gs_neighbour_init (this, send_pe, recv_pe)
 Initialise the neighbourhood-collective communication method See gs_comm.f90 for details.
 
subroutine gs_neighbour::gs_neighbour_free (this)
 Deallocate the neighbourhood-collective communication method.
 
subroutine gs_neighbour::gs_nbsend_neighbour (this, u, n, tag, deps, strm)
 Pack the send buffer and initiate the neighbourhood collective. The collective covers both directions, so all of the communication is launched here; gs_nbrecv_neighbour is a no-op.
 
subroutine gs_neighbour::gs_nbrecv_neighbour (this, tag)
 No-op: the neighbourhood collective issued in nbsend handles both the send and receive directions, so there is nothing to pre-post here.
 
subroutine gs_neighbour::gs_nbwait_neighbour (this, u, n, op, strm)
 Wait for the neighbourhood collective and reduce the received slabs.
 
subroutine gs_neighbour::gs_nbsend_vec_neighbour (this, u, n, nc, tag, deps, strm)
 Pack the nc components and launch a single neighbourhood collective.
 
subroutine gs_neighbour::gs_nbrecv_vec_neighbour (this, tag, nc)
 No-op: the collective is launched in nbsend_vec.
 
subroutine gs_neighbour::gs_nbwait_vec_neighbour (this, u, n, nc, op, strm)
 Wait for the vector collective and reduce each received slab into u. Peer i's received slab holds nc consecutive blocks of recvcounts(i) values, matching the sender's packing convention.