Neko 1.99.5
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
gs_comm Module Reference

Defines a gather-scatter communication method.

Data Types

interface  gs_comm_free
 Abstract interface for deallocating a Gather-scatter communication method. More...
 
interface  gs_comm_init
 Abstract interface for initializing a Gather-scatter communication method. More...
 
type  gs_comm_t
 Gather-scatter communication method. More...
 
interface  gs_nbrecv
 Abstract interface for initiating non-blocking recieve operations Posts non-blocking recieve of values and puts the values into buffers. More...
 
interface  gs_nbsend
 Abstract interface for initiating non-blocking send operations Sends the values in u(send_dof(send_pe(i))) to each rank send_pe(i) for all ranks in send_pe. More...
 
interface  gs_nbwait
 Abstract interface for waiting on non-blocking operations Waits and checks that data is in buffers and unpacks buffers into correct location in u u(recv_dof(recv_pe(i))) = gs_op(recieve_buffers(recv_pe) for this dof) More...
 

Functions/Subroutines

subroutine init_dofs (this)
 
subroutine free_dofs (this)
 
subroutine init_order (this, send_pe, recv_pe)
 Obtains which ranks to send and receive data from.
 
subroutine free_order (this)
 
subroutine gs_nbsend_vec (this, u, n, nc, tag, deps, strm)
 Default fused vector send. Abort unless a backend overrides it.
 
subroutine gs_nbrecv_vec (this, tag, nc)
 Default fused vector receive. Abort unless a backend overrides it.
 
subroutine gs_nbwait_vec (this, u, n, nc, op, strm)
 Default fused vector wait/reduce. Abort unless a backend overrides it.
 

Variables

integer, parameter, public gs_comm_mpi = 1
 
integer, parameter, public gs_comm_mpigpu = 2
 
integer, parameter, public gs_comm_nccl = 3
 
integer, parameter, public gs_comm_nvshmem = 4
 
integer, parameter, public gs_comm_openshmem = 5
 
integer, parameter, public gs_comm_caf = 6
 
integer, parameter, public gs_comm_neighbour = 7
 
integer, parameter, public gs_comm_utofu = 8
 
integer, parameter, public gs_vec_nc = 3
 Maximum number of components handled by the fused vector (multi-component) halo exchange used by gs_op_r3. Sizes the backend vector buffers.
 

Function/Subroutine Documentation

◆ free_dofs()

subroutine gs_comm::free_dofs ( class(gs_comm_t), intent(inout this)
private

Definition at line 179 of file gs_comm.f90.

◆ free_order()

subroutine gs_comm::free_order ( class(gs_comm_t), intent(inout this)
private

Definition at line 225 of file gs_comm.f90.

◆ gs_nbrecv_vec()

subroutine gs_comm::gs_nbrecv_vec ( class(gs_comm_t), intent(inout this,
integer, intent(in tag,
integer, intent(in nc 
)
private

Definition at line 253 of file gs_comm.f90.

◆ gs_nbsend_vec()

subroutine gs_comm::gs_nbsend_vec ( class(gs_comm_t), intent(inout this,
real(kind=rp), dimension(nc*n), intent(inout u,
integer, intent(in n,
integer, intent(in nc,
integer, intent(in tag,
type(c_ptr), intent(inout deps,
type(c_ptr), intent(inout strm 
)
private
Parameters
ucompact shared buffer, component-outer: u((c-1)*n + idx)
nnumber of shared dofs (per component)
ncnumber of components

Definition at line 242 of file gs_comm.f90.

◆ gs_nbwait_vec()

subroutine gs_comm::gs_nbwait_vec ( class(gs_comm_t), intent(inout this,
real(kind=rp), dimension(nc*n), intent(inout u,
integer, intent(in n,
integer, intent(in nc,
integer  op,
type(c_ptr), intent(inout strm 
)
private

Definition at line 260 of file gs_comm.f90.

◆ init_dofs()

subroutine gs_comm::init_dofs ( class(gs_comm_t), intent(inout this)
private

Definition at line 163 of file gs_comm.f90.

◆ init_order()

subroutine gs_comm::init_order ( class(gs_comm_t), intent(inout this,
type(stack_i4_t), intent(inout send_pe,
type(stack_i4_t), intent(inout recv_pe 
)
private
Parameters
send_pe,onlycontains rank ids this porcesss should send to
recv_pe,onlythe ranks this process should receive from

Definition at line 202 of file gs_comm.f90.

Variable Documentation

◆ gs_comm_caf

integer, parameter, public gs_comm::gs_comm_caf = 6

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_mpi

integer, parameter, public gs_comm::gs_comm_mpi = 1

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_mpigpu

integer, parameter, public gs_comm::gs_comm_mpigpu = 2

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_nccl

integer, parameter, public gs_comm::gs_comm_nccl = 3

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_neighbour

integer, parameter, public gs_comm::gs_comm_neighbour = 7

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_nvshmem

integer, parameter, public gs_comm::gs_comm_nvshmem = 4

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_openshmem

integer, parameter, public gs_comm::gs_comm_openshmem = 5

Definition at line 43 of file gs_comm.f90.

◆ gs_comm_utofu

integer, parameter, public gs_comm::gs_comm_utofu = 8

Definition at line 43 of file gs_comm.f90.

◆ gs_vec_nc

integer, parameter, public gs_comm::gs_vec_nc = 3

Definition at line 49 of file gs_comm.f90.