Neko 1.99.3
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
gs_mpi::gs_mpi_t Type Referenceabstract

Gather-scatter communication using MPI. More...

Inheritance diagram for gs_mpi::gs_mpi_t:
Collaboration diagram for gs_mpi::gs_mpi_t:

Public Member Functions

procedure, pass(thisinit (this, send_pe, recv_pe)
 Initialise MPI based communication method See gs_comm.f90 for details.
 
procedure, pass(thisfree (this)
 Deallocate MPI based communication method.
 
procedure, pass(thisnbsend (this, u, n, tag, deps, strm)
 See gs_comm.f90 for more details on these routines.
 
procedure, pass(thisnbrecv (this, tag)
 Post non-blocking receive operations.
 
procedure, pass(thisnbwait (this, u, n, op, strm)
 Wait for non-blocking operations.
 
procedure(gs_comm_init), deferred, pass init gs_comm_init
 
procedure(gs_comm_free), deferred, pass free gs_comm_free
 
procedure(gs_nbsend), deferred, pass nbsend gs_nbsend
 
procedure(gs_nbrecv), deferred, pass nbrecv gs_nbrecv
 
procedure(gs_nbwait), deferred, pass nbwait gs_nbwait
 
procedure, pass(thisinit_dofs (this)
 
procedure, pass(thisfree_dofs (this)
 
procedure, pass(thisinit_order (this, send_pe, recv_pe)
 Obtains which ranks to send and receive data from.
 
procedure, pass(thisfree_order (this)
 

Public Attributes

real(kind=rp), dimension(:), allocatable send_buf
 Concatenated send slabs, one per peer.
 
real(kind=rp), dimension(:), allocatable recv_buf
 Concatenated recv slabs, one per peer.
 
integer, dimension(:), allocatable send_len
 Number of dofs to send to / receive from each peer.
 
integer, dimension(:), allocatable recv_len
 
integer, dimension(:), allocatable send_offset
 0-based offsets into send_buf / recv_buf for each peer.
 
integer, dimension(:), allocatable recv_offset
 
type(mpi_request), dimension(:), allocatable send_request
 Per-peer non-blocking MPI requests.
 
type(mpi_request), dimension(:), allocatable recv_request
 
integer, dimension(:), allocatable recv_indices
 Scratch arrays for MPI_Testsome on the recv side: indices of the requests completed by the call and their statuses.
 
type(mpi_status), dimension(:), allocatable recv_statuses
 
integer ncompleted
 
type(stack_i4_t), dimension(:), allocatable send_dof
 A list of stacks of dof indices local to this process to send to rank_i.
 
type(stack_i4_t), dimension(:), allocatable recv_dof
 recv_dof(rank_i) is a stack of dof indices local to this process to receive from rank_i. size(recv_dof) == pe_size
 
integer, dimension(:), allocatable send_pe
 Array of ranks that this process should send to.
 
integer, dimension(:), allocatable recv_pe
 array of ranks that this process will receive messages from
 

Detailed Description

Definition at line 49 of file gs_mpi.f90.

Member Function/Subroutine Documentation

◆ free() [1/2]

procedure, pass(this) gs_mpi::gs_mpi_t::free ( class(gs_mpi_t), intent(inout this)

Definition at line 67 of file gs_mpi.f90.

◆ free() [2/2]

procedure(gs_comm_free), deferred, pass gs_comm::gs_comm_t::free
pure virtualinherited

Definition at line 61 of file gs_comm.f90.

◆ free_dofs()

procedure, pass(this) gs_comm::gs_comm_t::free_dofs ( class(gs_comm_t), intent(inout this)
inherited

Definition at line 66 of file gs_comm.f90.

◆ free_order()

procedure, pass(this) gs_comm::gs_comm_t::free_order ( class(gs_comm_t), intent(inout this)
inherited

Definition at line 68 of file gs_comm.f90.

◆ init() [1/2]

procedure, pass(this) gs_mpi::gs_mpi_t::init ( class(gs_mpi_t), intent(inout this,
type(stack_i4_t), intent(inout send_pe,
type(stack_i4_t), intent(inout recv_pe 
)

Definition at line 66 of file gs_mpi.f90.

◆ init() [2/2]

procedure(gs_comm_init), deferred, pass gs_comm::gs_comm_t::init
pure virtualinherited

Definition at line 60 of file gs_comm.f90.

◆ init_dofs()

procedure, pass(this) gs_comm::gs_comm_t::init_dofs ( class(gs_comm_t), intent(inout this)
inherited

Definition at line 65 of file gs_comm.f90.

◆ init_order()

procedure, pass(this) gs_comm::gs_comm_t::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 
)
inherited
Parameters
send_pe,onlycontains rank ids this porcesss should send to
recv_pe,onlythe ranks this process should receive from

Definition at line 67 of file gs_comm.f90.

◆ nbrecv() [1/2]

procedure, pass(this) gs_mpi::gs_mpi_t::nbrecv ( class(gs_mpi_t), intent(inout this,
integer, intent(in tag 
)

Definition at line 70 of file gs_mpi.f90.

◆ nbrecv() [2/2]

procedure(gs_nbrecv), deferred, pass gs_comm::gs_comm_t::nbrecv
pure virtualinherited

Definition at line 63 of file gs_comm.f90.

◆ nbsend() [1/2]

procedure, pass(this) gs_mpi::gs_mpi_t::nbsend ( class(gs_mpi_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout u,
integer, intent(in n,
integer, intent(in tag,
type(c_ptr), intent(inout deps,
type(c_ptr), intent(inout strm 
)

Definition at line 69 of file gs_mpi.f90.

◆ nbsend() [2/2]

procedure(gs_nbsend), deferred, pass gs_comm::gs_comm_t::nbsend
pure virtualinherited

Definition at line 62 of file gs_comm.f90.

◆ nbwait() [1/2]

procedure, pass(this) gs_mpi::gs_mpi_t::nbwait ( class(gs_mpi_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout u,
integer, intent(in n,
integer  op,
type(c_ptr), intent(inout strm 
)

Definition at line 71 of file gs_mpi.f90.

◆ nbwait() [2/2]

procedure(gs_nbwait), deferred, pass gs_comm::gs_comm_t::nbwait
pure virtualinherited

Definition at line 64 of file gs_comm.f90.

Member Data Documentation

◆ ncompleted

integer gs_mpi::gs_mpi_t::ncompleted

Definition at line 64 of file gs_mpi.f90.

◆ recv_buf

real(kind=rp), dimension(:), allocatable gs_mpi::gs_mpi_t::recv_buf

Definition at line 53 of file gs_mpi.f90.

◆ recv_dof

type(stack_i4_t), dimension(:), allocatable gs_comm::gs_comm_t::recv_dof
inherited

Definition at line 52 of file gs_comm.f90.

◆ recv_indices

integer, dimension(:), allocatable gs_mpi::gs_mpi_t::recv_indices

Definition at line 62 of file gs_mpi.f90.

◆ recv_len

integer, dimension(:), allocatable gs_mpi::gs_mpi_t::recv_len

Definition at line 55 of file gs_mpi.f90.

◆ recv_offset

integer, dimension(:), allocatable gs_mpi::gs_mpi_t::recv_offset

Definition at line 57 of file gs_mpi.f90.

◆ recv_pe

integer, dimension(:), allocatable gs_comm::gs_comm_t::recv_pe
inherited

Definition at line 58 of file gs_comm.f90.

◆ recv_request

type(mpi_request), dimension(:), allocatable gs_mpi::gs_mpi_t::recv_request

Definition at line 59 of file gs_mpi.f90.

◆ recv_statuses

type(mpi_status), dimension(:), allocatable gs_mpi::gs_mpi_t::recv_statuses

Definition at line 63 of file gs_mpi.f90.

◆ send_buf

real(kind=rp), dimension(:), allocatable gs_mpi::gs_mpi_t::send_buf

Definition at line 51 of file gs_mpi.f90.

◆ send_dof

type(stack_i4_t), dimension(:), allocatable gs_comm::gs_comm_t::send_dof
inherited

Definition at line 49 of file gs_comm.f90.

◆ send_len

integer, dimension(:), allocatable gs_mpi::gs_mpi_t::send_len

Definition at line 55 of file gs_mpi.f90.

◆ send_offset

integer, dimension(:), allocatable gs_mpi::gs_mpi_t::send_offset

Definition at line 57 of file gs_mpi.f90.

◆ send_pe

integer, dimension(:), allocatable gs_comm::gs_comm_t::send_pe
inherited
Note
: this will usually be fewer than the total number of ranks size(send_pe) <= pe_size

Definition at line 56 of file gs_comm.f90.

◆ send_request

type(mpi_request), dimension(:), allocatable gs_mpi::gs_mpi_t::send_request

Definition at line 59 of file gs_mpi.f90.


The documentation for this type was generated from the following file: