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

Go to the source code of this file.

Modules

module  crystal_router
 Crystal router: scalable all-to-some personalized exchange.
 

Functions/Subroutines

subroutine, public crystal_router::crystal_router_pack (out, dest, body)
 Append one record to a packed crystal-router buffer.
 
subroutine, public crystal_router::crystal_router_transfer (buf, n)
 Route packed records to their destination ranks.
 
subroutine crystal_router::cr_check_dest (buf, n)
 Abort if any record destination falls outside \( [0, P) \).
 
subroutine crystal_router::cr_partition (buf, n, mid, lower, keep, nkeep, snd, nsnd)
 Partition buf into records kept locally and records to be sent. A record is kept when the side of its destination (relative to mid) matches lower, i.e. it already belongs to our half.
 
subroutine crystal_router::cr_exchange (sbuf, sn, dst, rbuf, rn, src)
 Size-negotiated bidirectional exchange with a partner. Either dst or src may be MPI_PROC_NULL to make that direction a no-op.
 
subroutine crystal_router::cr_concat (buf, n, a, na, b, nb)
 Rebuild buf as the concatenation a(1:na) ++ b(1:nb).
 
subroutine crystal_router::cr_append (buf, n, e, ne)
 Append e(1:ne) to buf(1:n) in place.
 

Variables

integer, parameter crystal_router::cr_tag = 0
 Message tag used for all crystal-router exchanges. Stages are fully synchronised (blocking MPI_Sendrecv), so a single tag suffices.