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

Data Types

interface  neko_comm_wrapper_init
 

Functions/Subroutines

pure logical function, public is_mpmd ()
 Whether this is one of several simulations coupled in an MPMD run, that is, whether Neko's communicator is a subset of the global one.
 
subroutine, public comm_init
 
subroutine shmem_check_thread_level (provided)
 Decide whether the thread level an OpenSHMEM library handed back is usable, given how Neko drives it.
 
subroutine, public comm_free
 

Variables

type(mpi_comm), public neko_comm
 MPI communicator.
 
type(mpi_comm), public neko_global_comm
 
type(mpi_datatype), public mpi_real_precision
 MPI type for working precision of REAL types.
 
type(mpi_datatype), public mpi_extra_precision
 
integer, public pe_rank
 MPI rank.
 
integer, public pe_size = 0
 MPI size of communicator.
 
logical, public nio
 I/O node.
 
integer, public global_pe_rank
 Global MPI rank.
 
integer, public global_pe_size = 0
 Global MPI size of communicator.
 
integer, public neko_mpi_thread_provided
 Thread support provided by the MPI library.
 

Function/Subroutine Documentation

◆ comm_free()

subroutine, public comm::comm_free

Definition at line 276 of file comm.F90.

Here is the caller graph for this function:

◆ comm_init()

subroutine, public comm::comm_init

Definition at line 89 of file comm.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_mpmd()

pure logical function, public comm::is_mpmd

Definition at line 82 of file comm.F90.

Here is the caller graph for this function:

◆ shmem_check_thread_level()

subroutine comm::shmem_check_thread_level ( integer, intent(in)  provided)
private

Only the device backends need SHMEM_THREAD_MULTIPLE, where several host threads drive their own streams. On the host, gs_shmem issues every SHMEM call from the OpenMP master thread – which is the initial thread, the one that called shmem_init_thread – and only lets the team drive the puts when the library reports MULTIPLE, so no level is actually unusable. That matters in practice: Cray LIBSMA reports SHMEM_THREAD_SINGLE, and refusing anything below FUNNELED would rule out hybrid MPI+OpenMP runs there altogether.

Parameters
providedthread level reported by shmem_init_thread

Definition at line 265 of file comm.F90.

Here is the caller graph for this function:

Variable Documentation

◆ global_pe_rank

integer, public comm::global_pe_rank

Definition at line 68 of file comm.F90.

◆ global_pe_size

integer, public comm::global_pe_size = 0

Definition at line 71 of file comm.F90.

◆ mpi_extra_precision

type(mpi_datatype), public comm::mpi_extra_precision

Definition at line 55 of file comm.F90.

◆ mpi_real_precision

type(mpi_datatype), public comm::mpi_real_precision

Definition at line 54 of file comm.F90.

◆ neko_comm

type(mpi_comm), public comm::neko_comm

Definition at line 46 of file comm.F90.

◆ neko_global_comm

type(mpi_comm), public comm::neko_global_comm

Definition at line 47 of file comm.F90.

◆ neko_mpi_thread_provided

integer, public comm::neko_mpi_thread_provided

Definition at line 74 of file comm.F90.

◆ nio

logical, public comm::nio

Definition at line 65 of file comm.F90.

◆ pe_rank

integer, public comm::pe_rank

Definition at line 59 of file comm.F90.

◆ pe_size

integer, public comm::pe_size = 0

Definition at line 62 of file comm.F90.