|
Neko 1.99.9
A portable framework for high-order spectral element flow simulations
|
Defines GPU aware MPI gather-scatter communication.
Data Types | |
| interface | cuda_gs_nvshmem_pack |
| interface | cuda_gs_nvshmem_pack_vec |
| interface | cuda_gs_post_ready |
| interface | cuda_gs_push |
| interface | cuda_gs_push_wait |
| interface | cuda_gs_unpack |
| interface | cuda_gs_unpack_vec |
| interface | cudafree_nvshmem |
| interface | cudamalloc_nvshmem |
| type | gs_device_shmem_buf_t |
| Buffers for non-blocking communication and packing/unpacking. More... | |
| type | gs_device_shmem_t |
| Gather-scatter communication using device SHMEM. The arrays are indexed per PE like send_pe and @ recv_pe. More... | |
Functions/Subroutines | |
| subroutine | gs_device_shmem_buf_init (this, pe_order, dof_stack, mark_dupes, nslabs) |
| subroutine | gs_device_shmem_buf_free (this) |
| subroutine | gs_device_shmem_init (this, send_pe, recv_pe) |
| Initialise MPI based communication method. | |
| subroutine | gs_device_shmem_free (this) |
| Deallocate MPI based communication method. | |
| subroutine | gs_device_shmem_nbsend (this, u, n, tag, deps, strm) |
| Post non-blocking send operations. | |
| subroutine | gs_device_shmem_nbrecv (this, tag) |
| Post non-blocking receive operations. | |
| subroutine | gs_device_shmem_nbwait (this, u, n, op, strm) |
| Wait for non-blocking operations. | |
| subroutine | gs_device_shmem_nbsend_vec (this, u, n, nc, tag, deps, strm) |
| Fused nc-component send. u is the compact shared device buffer (component-outer, per-component stride n = nshared). Bulk-packs the parity slab of the fused vector send buffer; see gs_device_shmem_nbsend for the ordering and parity-slab rationale. | |
| subroutine | gs_device_shmem_nbrecv_vec (this, tag, nc) |
| No-op: everything happens in nbwait_vec. | |
| subroutine | gs_device_shmem_nbwait_vec (this, u, n, nc, op, strm) |
| Fused nc-component push + unpack (the pack happens in nbsend_vec). | |
Variables | |
| logical, parameter, public | gs_device_shmem_avail = .false. |
| Whether NVSHMEM was built into this Neko (–with-nvshmem). Lets callers (e.g. the gs comm. autotuner) skip the backend rather than exchanging nothing on builds without it. | |
|
private |
|
private |
| nslabs | number of parity slabs (2 for send buffers, which are round-parity double-buffered so a slab is never repacked while a previous non-blocking put may still be draining it; 1 for recv buffers, whose overwrite is gated by the ready signal). |
Definition at line 213 of file gs_device_shmem.F90.

|
private |
|
private |
|
private |
Definition at line 498 of file gs_device_shmem.F90.
|
private |
Definition at line 597 of file gs_device_shmem.F90.
Definition at line 57 of file gs_device_shmem.F90.