|
Neko 1.99.9
A portable framework for high-order spectral element flow simulations
|
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. | |
| subroutine, public comm::comm_free |
| subroutine, public comm::comm_init |
|
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.
| provided | thread level reported by shmem_init_thread |
Definition at line 265 of file comm.F90.
