|
| 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.
|
| |