Neko 1.99.9
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
gs_device_crystal.F90 File Reference

Go to the source code of this file.

Data Types

type  gs_device_crystal::gs_device_crystal_t
 Gather-scatter communication using a crystal router on the device. More...
 
interface  gs_device_crystal::hip_gs_pack
 
interface  gs_device_crystal::hip_gs_unpack
 
interface  gs_device_crystal::hip_gs_pack_vec
 
interface  gs_device_crystal::hip_gs_unpack_vec
 
interface  gs_device_crystal::device_mpi_init_reqs
 
interface  gs_device_crystal::device_mpi_free_reqs
 
interface  gs_device_crystal::device_mpi_isend
 
interface  gs_device_crystal::device_mpi_irecv
 
interface  gs_device_crystal::device_mpi_waitall
 

Modules

module  gs_device_crystal
 Defines GPU aware crystal router gather-scatter communication.
 

Functions/Subroutines

subroutine gs_device_crystal::gs_device_crystal_init (this, send_pe, recv_pe)
 Initialise crystal router based device communication See gs_comm.f90 for details.
 
subroutine gs_device_crystal::gs_device_crystal_free (this)
 Deallocate crystal router based device communication.
 
subroutine gs_device_crystal::gs_device_crystal_nbrecv (this, tag)
 Post the receives of the first routing stage.
 
subroutine gs_device_crystal::gs_device_crystal_nbsend (this, u, n, tag, deps, strm)
 Pack the shared vector and post the send of the first routing stage.
 
subroutine gs_device_crystal::gs_device_crystal_nbwait (this, u, n, op, strm)
 Drive the remaining routing stages and reduce what is delivered into the shared vector.
 
subroutine gs_device_crystal::gs_device_crystal_nbrecv_vec (this, tag, nc)
 Post the receives of the first routing stage, fused nc-component.
 
subroutine gs_device_crystal::gs_device_crystal_nbsend_vec (this, u, n, nc, tag, deps, strm)
 Pack the shared vector and post the send of the first routing stage, fused nc-component.
 
subroutine gs_device_crystal::gs_device_crystal_nbwait_vec (this, u, n, nc, op, strm)
 Drive the remaining routing stages and reduce what is delivered into the shared vector, fused nc-component.
 
subroutine gs_device_crystal::cr_gather (src_d, dst_d, idx_d, n, strm)
 Gather n words of src into dst through the 1-based index list idx_d, i.e. dst(j) = src(idx(j))
 
subroutine gs_device_crystal::cr_gather_vec (src_d, dst_d, idx_d, n, nc, ns, strm)
 Gather n positions of the component-outer src (stride ns) into the interleaved dst.
 
subroutine gs_device_crystal::cr_scatter (u_d, op, buf_d, idx_d, n, strm)
 Reduce n delivered words into the shared vector under op.
 
subroutine gs_device_crystal::cr_scatter_vec (u_d, op, buf_d, idx_d, n, nc, ns, strm)
 Reduce n delivered positions into the component-outer shared vector.
 
subroutine gs_device_crystal::cr_vec_index (this, nc)
 Build the per-stage index lists of the fused vector exchange, which address the same words as the scalar ones with the components spelled out: position p of a stage becomes nc*(p-1) + 1 .. nc*p.
 
subroutine gs_device_crystal::cr_expand (idx, n, nc, out)
 Spell out the components of the 1-based index list idx over nc.
 
subroutine gs_device_crystal::cr_upload (ptr, idx, n)
 Copy the first n entries of an index list to the device, leaving ptr null when there are none.
 
subroutine gs_device_crystal::cr_free_ptrs (ptrs)
 Release a list of device pointers, leaving them null.
 
subroutine gs_device_crystal::cr_mark_dupes (dof, out, n)
 Copy dof into out, negating every index that appears more than once so that the unpack kernel reduces those atomically.