Parallel frontend that abstracts functionalities needed to spawn processes and handle communication. More...
Namespaces | |
detail | |
Classes | |
struct | Mpi_typemap |
Communication datatype (note: this structure also works without MPI) More... | |
class | Message |
Hold the description and status of communication data. More... | |
struct | ProcessTeam |
Provide functionalities needed to construct a team of processes to perform a particular job. More... | |
struct | Mpi_typemap< GpuComplex< T > > |
struct | Mpi_typemap< ValLocPair< TV, TI > > |
Functions | |
void | StartParallel (int *argc=nullptr, char ***argv=nullptr, MPI_Comm mpi_comm=MPI_COMM_WORLD) |
Perform any needed parallel initialization. This MUST be the first routine in this class called from within a program. More... | |
void | Gather (Real const *sendbuf, int nsend, Real *recvbuf, int root) |
Parallel gather. More... | |
void | EndParallel () |
Perform any needed parallel finalization. This MUST be the last routine in this class called from within a program. More... | |
void | Abort (int errorcode=SIGABRT, bool backtrace=true) |
Abort with specified error code. More... | |
const char * | ErrorString (int errorcode) |
ErrorString return string associated with error internal error condition. More... | |
void | Barrier (const std::string &) |
void | Barrier (const MPI_Comm &, const std::string &) |
Message | Abarrier () |
Message | Abarrier (const MPI_Comm &) |
void | Test (MPI_Request &, int &, MPI_Status &) |
void | Test (Vector< MPI_Request > &, int &, Vector< MPI_Status > &) |
void | IProbe (int, int, int &, MPI_Status &) |
void | IProbe (int, int, MPI_Comm, int &, MPI_Status &) |
void | Comm_dup (MPI_Comm, MPI_Comm &) |
void | ReduceRealSum (Vector< std::reference_wrapper< Real > > const &) |
void | ReduceRealMax (Vector< std::reference_wrapper< Real > > const &) |
void | ReduceRealMin (Vector< std::reference_wrapper< Real > > const &) |
void | ReduceRealSum (Vector< std::reference_wrapper< Real > > const &, int) |
void | ReduceRealMax (Vector< std::reference_wrapper< Real > > const &, int) |
void | ReduceRealMin (Vector< std::reference_wrapper< Real > > const &, int) |
void | ReduceLongAnd (Long &rvar) |
Long and-wise reduction. More... | |
void | ReduceLongSum (Long &rvar) |
Long sum reduction. More... | |
void | ReduceLongMax (Long &rvar) |
Long max reduction. More... | |
void | ReduceLongMin (Long &rvar) |
Long min reduction. More... | |
void | ReduceLongAnd (Long &rvar, int cpu) |
Long and-wise reduction to specified cpu. More... | |
void | ReduceLongSum (Long &rvar, int cpu) |
Long sum reduction to specified cpu. More... | |
void | ReduceLongMax (Long &rvar, int cpu) |
Long max reduction to specified cpu. More... | |
void | ReduceLongMin (Long &rvar, int cpu) |
Long min reduction to specified cpu. More... | |
void | ReduceLongAnd (Long *, int) |
void | ReduceLongSum (Long *, int) |
void | ReduceLongMax (Long *, int) |
void | ReduceLongMin (Long *, int) |
void | ReduceLongAnd (Long *, int, int) |
void | ReduceLongSum (Long *, int, int) |
void | ReduceLongMax (Long *, int, int) |
void | ReduceLongMin (Long *, int, int) |
void | ReduceLongAnd (Vector< std::reference_wrapper< Long > > const &) |
void | ReduceLongSum (Vector< std::reference_wrapper< Long > > const &) |
void | ReduceLongMax (Vector< std::reference_wrapper< Long > > const &) |
void | ReduceLongMin (Vector< std::reference_wrapper< Long > > const &) |
void | ReduceLongAnd (Vector< std::reference_wrapper< Long > > const &, int) |
void | ReduceLongSum (Vector< std::reference_wrapper< Long > > const &, int) |
void | ReduceLongMax (Vector< std::reference_wrapper< Long > > const &, int) |
void | ReduceLongMin (Vector< std::reference_wrapper< Long > > const &, int) |
void | ReduceIntSum (int &rvar) |
Integer sum reduction. More... | |
void | ReduceIntMax (int &rvar) |
Integer max reduction. More... | |
void | ReduceIntMin (int &rvar) |
Integer min reduction. More... | |
void | ReduceIntSum (int &rvar, int cpu) |
Integer sum reduction to specified cpu. More... | |
void | ReduceIntMax (int &rvar, int cpu) |
Integer max reduction to specified cpu. More... | |
void | ReduceIntMin (int &rvar, int cpu) |
Integer min reduction to specified cpu. More... | |
void | ReduceIntSum (int *, int) |
void | ReduceIntMax (int *, int) |
void | ReduceIntMin (int *, int) |
void | ReduceIntSum (int *, int, int) |
void | ReduceIntMax (int *, int, int) |
void | ReduceIntMin (int *, int, int) |
void | ReduceIntSum (Vector< std::reference_wrapper< int > > const &) |
void | ReduceIntMax (Vector< std::reference_wrapper< int > > const &) |
void | ReduceIntMin (Vector< std::reference_wrapper< int > > const &) |
void | ReduceIntSum (Vector< std::reference_wrapper< int > > const &, int) |
void | ReduceIntMax (Vector< std::reference_wrapper< int > > const &, int) |
void | ReduceIntMin (Vector< std::reference_wrapper< int > > const &, int) |
void | ReduceBoolAnd (bool &rvar) |
And-wise boolean reduction. More... | |
void | ReduceBoolOr (bool &rvar) |
Or-wise boolean reduction. More... | |
void | ReduceBoolAnd (bool &rvar, int cpu) |
And-wise boolean reduction to specified cpu. More... | |
void | ReduceBoolOr (bool &rvar, int cpu) |
Or-wise boolean reduction to specified cpu. More... | |
void | Bcast (void *, int, MPI_Datatype, int, MPI_Comm) |
double | second () noexcept |
Returns wall-clock seconds since start of execution. More... | |
void | Wait (MPI_Request &, MPI_Status &) |
void | Waitall (Vector< MPI_Request > &, Vector< MPI_Status > &) |
void | Waitany (Vector< MPI_Request > &, int &, MPI_Status &) |
void | Waitsome (Vector< MPI_Request > &, int &, Vector< int > &, Vector< MPI_Status > &) |
BL_FORT_PROC_DECL (BL_PD_BARRIER, bl_pd_barrier)() | |
BL_FORT_PROC_DECL (BL_PD_COMMUNICATOR, bl_pd_communicator)(void *vcomm) | |
BL_FORT_PROC_DECL (BL_PD_MYPROC, bl_pd_myproc)(int *myproc) | |
BL_FORT_PROC_DECL (BL_PD_NPROCS, bl_pd_nprocs)(int *nprocs) | |
BL_FORT_PROC_DECL (BL_PD_IOPROC, bl_pd_ioproc)(int *ioproc) | |
BL_FORT_PROC_DECL (BL_PD_IS_IOPROC, bl_pd_is_ioproc)(int *ioproc) | |
BL_FORT_PROC_DECL (BL_PD_SECOND, bl_pd_second)(double *r) | |
BL_FORT_PROC_DECL (BL_PD_REDUCE_REAL_MAX_TO_IOPROC, bl_pd_reduce_real_max_to_ioproc)(double *r) | |
BL_FORT_PROC_DECL (BL_PD_REDUCE_REAL_SUM_TO_IOPROC, bl_pd_reduce_real_sum_to_ioproc)(double *r) | |
BL_FORT_PROC_DECL (BL_PD_ABORT, bl_pd_abort)() | |
void | ReadAndBcastFile (const std::string &filename, Vector< char > &charBuf, bool bExitOnError, const MPI_Comm &comm) |
void | Initialize () |
void | Finalize () |
void | StartTeams () |
Split the process pool into teams. More... | |
void | EndTeams () |
std::string | mpi_level_to_string (int mtlev) |
const std::string | Unnamed ("Unnamed") |
Used as default argument to ParallelDescriptor::Barrier(). More... | |
bool | UseGpuAwareMpi () |
int | MyProc () noexcept |
return the rank number local to the current Parallel Context More... | |
int | MyProc (MPI_Comm comm) noexcept |
int | MinTag () noexcept |
int | MaxTag () noexcept |
MPI_Comm | Communicator () noexcept |
int | NProcsPerNode () noexcept |
int | MyRankInNode () noexcept |
int | NProcsPerProcessor () noexcept |
int | MyRankInProcessor () noexcept |
int | NProcs () noexcept |
return the number of MPI ranks local to the current Parallel Context More... | |
int | NProcs (MPI_Comm comm) noexcept |
int | IOProcessorNumber () noexcept |
bool | IOProcessor () noexcept |
Is this CPU the I/O Processor? To get the rank number, call IOProcessorNumber() More... | |
int | IOProcessorNumber (MPI_Comm comm) noexcept |
bool | IOProcessor (MPI_Comm comm) noexcept |
int | TeamSize () noexcept |
int | NTeams () noexcept |
int | MyTeamColor () noexcept |
int | MyTeamLead () noexcept |
int | MyRankInTeam () noexcept |
int | TeamLead (int rank) noexcept |
bool | isTeamLead () noexcept |
bool | sameTeam (int rank) noexcept |
bool | sameTeam (int rankA, int rankB) noexcept |
int | RankInLeadComm (int rank) noexcept |
bool | doTeamReduce () noexcept |
const ProcessTeam & | MyTeam () noexcept |
std::pair< int, int > | team_range (int begin, int end, int rit=-1, int nworkers=0) noexcept |
template<typename F > | |
void | team_for (int begin, int end, const F &f) |
template<typename F > | |
void | team_for (int begin, int end, int rit, const F &f) |
template<typename F > | |
void | team_for (int begin, int end, int rit, int nworkers, const F &f) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealSum (T &rvar) |
Real sum reduction. More... | |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealSum (T *rvar, int cnt) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealSum (Vector< std::reference_wrapper< T > > const &rvar) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealSum (T &rvar, int cpu) |
Real sum reduction to specified cpu. More... | |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealSum (T *rvar, int cnt, int cpu) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealSum (Vector< std::reference_wrapper< T > > const &rvar, int cpu) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMax (T &rvar) |
Real max reduction. More... | |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMax (T *rvar, int cnt) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMax (Vector< std::reference_wrapper< T > > const &rvar) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMax (T &rvar, int cpu) |
Real max reduction to specified cpu. More... | |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMax (T *rvar, int cnt, int cpu) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMax (Vector< std::reference_wrapper< T > > const &rvar, int cpu) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMin (T &rvar) |
Real min reduction. More... | |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMin (T *rvar, int cnt) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMin (Vector< std::reference_wrapper< T > > const &rvar) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMin (T &rvar, int cpu) |
Real min reduction to specified cpu. More... | |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMin (T *rvar, int cnt, int cpu) |
template<typename T > | |
std::enable_if_t< std::is_floating_point_v< T > > | ReduceRealMin (Vector< std::reference_wrapper< T > > const &rvar, int cpu) |
int | SeqNum () noexcept |
Returns sequential message sequence numbers, usually used as tags for send/recv. More... | |
template<class T > | |
Message | Asend (const T *, size_t n, int pid, int tag) |
template<class T > | |
Message | Asend (const T *, size_t n, int pid, int tag, MPI_Comm comm) |
template<class T > | |
Message | Asend (const std::vector< T > &buf, int pid, int tag) |
template<class T > | |
Message | Arecv (T *, size_t n, int pid, int tag) |
template<class T > | |
Message | Arecv (T *, size_t n, int pid, int tag, MPI_Comm comm) |
template<class T > | |
Message | Arecv (std::vector< T > &buf, int pid, int tag) |
template<class T > | |
Message | Send (const T *buf, size_t n, int dst_pid, int tag) |
template<class T > | |
Message | Send (const T *buf, size_t n, int dst_pid, int tag, MPI_Comm comm) |
template<class T > | |
Message | Send (const std::vector< T > &buf, int dst_pid, int tag) |
template<class T > | |
Message | Recv (T *, size_t n, int pid, int tag) |
template<class T > | |
Message | Recv (T *, size_t n, int pid, int tag, MPI_Comm comm) |
template<class T > | |
Message | Recv (std::vector< T > &buf, int pid, int tag) |
template<class T > | |
void | Bcast (T *, size_t n, int root=0) |
template<class T > | |
void | Bcast (T *, size_t n, int root, const MPI_Comm &comm) |
template<class T , class T1 > | |
void | Scatter (T *, size_t n, const T1 *, size_t n1, int root) |
template<class T , class T1 > | |
void | Gather (const T *, size_t n, T1 *, size_t n1, int root) |
template<class T > | |
std::vector< T > | Gather (const T &, int root) |
template<class T > | |
void | Gatherv (const T *send, int sc, T *recv, const std::vector< int > &rc, const std::vector< int > &disp, int root) |
template<class T > | |
void | GatherLayoutDataToVector (const LayoutData< T > &sendbuf, Vector< T > &recvbuf, int root) |
Gather LayoutData values to a vector on root. More... | |
template<typename T , typename F > | |
MPI_Op | Mpi_op () |
template<> | |
void | Bcast (Box *b, size_t n, int root) |
Variables | |
bool | use_gpu_aware_mpi = false |
ProcessTeam | m_Team |
MPI_Comm | m_comm = MPI_COMM_NULL |
int | m_nprocs_per_node = 1 |
int | m_rank_in_node = 0 |
int | m_nprocs_per_processor = 1 |
int | m_rank_in_processor = 0 |
Vector< MPI_Datatype * > | m_mpi_types |
Vector< MPI_Op * > | m_mpi_ops |
int | m_MinTag = 1000 |
int | m_MaxTag = -1 |
const int | ioProcessor = 0 |
The MPI rank number of the I/O Processor (probably rank 0). This rank is usually used to write to stdout. More... | |
Parallel frontend that abstracts functionalities needed to spawn processes and handle communication.
Message amrex::ParallelDescriptor::Abarrier | ( | ) |
void amrex::ParallelDescriptor::Abort | ( | int | errorcode, |
bool | backtrace | ||
) |
Abort with specified error code.
Message amrex::ParallelDescriptor::Arecv | ( | std::vector< T > & | buf, |
int | pid, | ||
int | tag | ||
) |
Message amrex::ParallelDescriptor::Arecv | ( | T * | , |
size_t | n, | ||
int | pid, | ||
int | tag, | ||
MPI_Comm | comm | ||
) |
Message amrex::ParallelDescriptor::Asend | ( | const std::vector< T > & | buf, |
int | pid, | ||
int | tag | ||
) |
Message amrex::ParallelDescriptor::Asend | ( | const T * | , |
size_t | n, | ||
int | pid, | ||
int | tag | ||
) |
Message amrex::ParallelDescriptor::Asend | ( | const T * | , |
size_t | n, | ||
int | pid, | ||
int | tag, | ||
MPI_Comm | comm | ||
) |
void amrex::ParallelDescriptor::Barrier | ( | const MPI_Comm & | , |
const std::string & | |||
) |
void amrex::ParallelDescriptor::Barrier | ( | const std::string & | ) |
void amrex::ParallelDescriptor::Bcast | ( | T * | , |
size_t | n, | ||
int | root, | ||
const MPI_Comm & | comm | ||
) |
void amrex::ParallelDescriptor::Bcast | ( | T * | , |
size_t | n, | ||
int | root = 0 |
||
) |
void amrex::ParallelDescriptor::Bcast | ( | void * | , |
int | , | ||
MPI_Datatype | , | ||
int | , | ||
MPI_Comm | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_ABORT | , |
bl_pd_abort | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_BARRIER | , |
bl_pd_barrier | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_COMMUNICATOR | , |
bl_pd_communicator | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_IOPROC | , |
bl_pd_ioproc | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_IS_IOPROC | , |
bl_pd_is_ioproc | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_MYPROC | , |
bl_pd_myproc | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_NPROCS | , |
bl_pd_nprocs | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_REDUCE_REAL_MAX_TO_IOPROC | , |
bl_pd_reduce_real_max_to_ioproc | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_REDUCE_REAL_SUM_TO_IOPROC | , |
bl_pd_reduce_real_sum_to_ioproc | |||
) |
amrex::ParallelDescriptor::BL_FORT_PROC_DECL | ( | BL_PD_SECOND | , |
bl_pd_second | |||
) |
|
inlinenoexcept |
|
inlinenoexcept |
void amrex::ParallelDescriptor::EndParallel | ( | ) |
Perform any needed parallel finalization. This MUST be the last routine in this class called from within a program.
void amrex::ParallelDescriptor::EndTeams | ( | ) |
const char * amrex::ParallelDescriptor::ErrorString | ( | int | ) |
ErrorString return string associated with error internal error condition.
void amrex::ParallelDescriptor::Finalize | ( | ) |
std::vector< T > amrex::ParallelDescriptor::Gather | ( | const T & | t, |
int | root | ||
) |
void amrex::ParallelDescriptor::Gather | ( | const T * | t, |
size_t | n, | ||
T1 * | t1, | ||
size_t | n1, | ||
int | root | ||
) |
void amrex::ParallelDescriptor::Gather | ( | Real const * | sendbuf, |
int | nsend, | ||
Real * | recvbuf, | ||
int | root | ||
) |
Parallel gather.
void amrex::ParallelDescriptor::GatherLayoutDataToVector | ( | const LayoutData< T > & | sendbuf, |
Vector< T > & | recvbuf, | ||
int | root | ||
) |
Gather LayoutData values to a vector on root.
void amrex::ParallelDescriptor::Gatherv | ( | const T * | send, |
int | sc, | ||
T * | recv, | ||
const std::vector< int > & | rc, | ||
const std::vector< int > & | disp, | ||
int | root | ||
) |
void amrex::ParallelDescriptor::Initialize | ( | ) |
|
inlinenoexcept |
Is this CPU the I/O Processor? To get the rank number, call IOProcessorNumber()
|
inlinenoexcept |
|
inlinenoexcept |
void amrex::ParallelDescriptor::IProbe | ( | int | , |
int | , | ||
int & | , | ||
MPI_Status & | |||
) |
void amrex::ParallelDescriptor::IProbe | ( | int | , |
int | , | ||
MPI_Comm | , | ||
int & | , | ||
MPI_Status & | |||
) |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
std::string amrex::ParallelDescriptor::mpi_level_to_string | ( | int | mtlev | ) |
Convert an MPI_THREAD_<X> level to string
mtlev | MPI_THREAD_<X> level |
MPI_Op amrex::ParallelDescriptor::Mpi_op | ( | ) |
|
inlinenoexcept |
return the rank number local to the current Parallel Context
|
inlinenoexcept |
Return the rank in a node defined by MPI_COMM_TYPE_SHARED. This might be the same or different from MyRankInProcessor based on MPI_Get_processor_name.
|
inlinenoexcept |
Return the rank in a node defined by MPI_Get_processor_name. This might be the same or different from MyRankInNode based on MPI_COMM_TYPE_SHARED.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
return the number of MPI ranks local to the current Parallel Context
|
inlinenoexcept |
Return the number of MPI ranks per node as defined by MPI_COMM_TYPE_SHARED. This might be the same or different from NProcsPerProcessor based on MPI_Get_processor_name.
|
inlinenoexcept |
Return the number of MPI ranks per node as defined by MPI_Get_processor_name. This might be the same or different from NProcsPerNode based on MPI_COMM_TYPE_SHARED.
|
inlinenoexcept |
void amrex::ParallelDescriptor::ReadAndBcastFile | ( | const std::string & | filename, |
Vector< char > & | charBuf, | ||
bool | bExitOnError, | ||
const MPI_Comm & | comm | ||
) |
Message amrex::ParallelDescriptor::Recv | ( | std::vector< T > & | buf, |
int | pid, | ||
int | tag | ||
) |
Message amrex::ParallelDescriptor::Recv | ( | T * | , |
size_t | n, | ||
int | pid, | ||
int | tag, | ||
MPI_Comm | comm | ||
) |
void amrex::ParallelDescriptor::ReduceBoolAnd | ( | bool & | ) |
And-wise boolean reduction.
void amrex::ParallelDescriptor::ReduceBoolAnd | ( | bool & | , |
int | |||
) |
And-wise boolean reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceBoolOr | ( | bool & | ) |
Or-wise boolean reduction.
void amrex::ParallelDescriptor::ReduceBoolOr | ( | bool & | , |
int | |||
) |
Or-wise boolean reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceIntMax | ( | int & | ) |
Integer max reduction.
Integer max reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceIntMax | ( | Vector< std::reference_wrapper< int > > const & | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceIntMin | ( | int & | ) |
Integer min reduction.
Integer min reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceIntMin | ( | Vector< std::reference_wrapper< int > > const & | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceIntSum | ( | int & | ) |
Integer sum reduction.
Integer sum reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceIntSum | ( | Vector< std::reference_wrapper< int > > const & | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongAnd | ( | Long & | ) |
Long and-wise reduction.
void amrex::ParallelDescriptor::ReduceLongAnd | ( | Long & | , |
int | |||
) |
Long and-wise reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceLongAnd | ( | Long * | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongAnd | ( | Vector< std::reference_wrapper< Long > > const & | ) |
void amrex::ParallelDescriptor::ReduceLongAnd | ( | Vector< std::reference_wrapper< Long > > const & | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongMax | ( | Long & | ) |
Long max reduction.
void amrex::ParallelDescriptor::ReduceLongMax | ( | Long & | , |
int | |||
) |
Long max reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceLongMax | ( | Long * | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongMax | ( | Vector< std::reference_wrapper< Long > > const & | ) |
void amrex::ParallelDescriptor::ReduceLongMax | ( | Vector< std::reference_wrapper< Long > > const & | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongMin | ( | Long & | ) |
Long min reduction.
void amrex::ParallelDescriptor::ReduceLongMin | ( | Long & | , |
int | |||
) |
Long min reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceLongMin | ( | Long * | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongMin | ( | Vector< std::reference_wrapper< Long > > const & | ) |
void amrex::ParallelDescriptor::ReduceLongMin | ( | Vector< std::reference_wrapper< Long > > const & | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongSum | ( | Long & | ) |
Long sum reduction.
void amrex::ParallelDescriptor::ReduceLongSum | ( | Long & | , |
int | |||
) |
Long sum reduction to specified cpu.
void amrex::ParallelDescriptor::ReduceLongSum | ( | Long * | , |
int | |||
) |
void amrex::ParallelDescriptor::ReduceLongSum | ( | Vector< std::reference_wrapper< Long > > const & | ) |
void amrex::ParallelDescriptor::ReduceLongSum | ( | Vector< std::reference_wrapper< Long > > const & | , |
int | |||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMax | ( | T & | rvar | ) |
Real max reduction.
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMax | ( | T & | rvar, |
int | cpu | ||
) |
Real max reduction to specified cpu.
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMax | ( | T * | rvar, |
int | cnt | ||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMax | ( | T * | rvar, |
int | cnt, | ||
int | cpu | ||
) |
void amrex::ParallelDescriptor::ReduceRealMax | ( | Vector< std::reference_wrapper< Real > > const & | ) |
void amrex::ParallelDescriptor::ReduceRealMax | ( | Vector< std::reference_wrapper< Real > > const & | , |
int | |||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMax | ( | Vector< std::reference_wrapper< T > > const & | rvar | ) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMax | ( | Vector< std::reference_wrapper< T > > const & | rvar, |
int | cpu | ||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMin | ( | T & | rvar | ) |
Real min reduction.
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMin | ( | T & | rvar, |
int | cpu | ||
) |
Real min reduction to specified cpu.
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMin | ( | T * | rvar, |
int | cnt | ||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMin | ( | T * | rvar, |
int | cnt, | ||
int | cpu | ||
) |
void amrex::ParallelDescriptor::ReduceRealMin | ( | Vector< std::reference_wrapper< Real > > const & | ) |
void amrex::ParallelDescriptor::ReduceRealMin | ( | Vector< std::reference_wrapper< Real > > const & | , |
int | |||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMin | ( | Vector< std::reference_wrapper< T > > const & | rvar | ) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealMin | ( | Vector< std::reference_wrapper< T > > const & | rvar, |
int | cpu | ||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealSum | ( | T & | rvar | ) |
Real sum reduction.
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealSum | ( | T & | rvar, |
int | cpu | ||
) |
Real sum reduction to specified cpu.
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealSum | ( | T * | rvar, |
int | cnt | ||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealSum | ( | T * | rvar, |
int | cnt, | ||
int | cpu | ||
) |
void amrex::ParallelDescriptor::ReduceRealSum | ( | Vector< std::reference_wrapper< Real > > const & | ) |
void amrex::ParallelDescriptor::ReduceRealSum | ( | Vector< std::reference_wrapper< Real > > const & | , |
int | |||
) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealSum | ( | Vector< std::reference_wrapper< T > > const & | rvar | ) |
std::enable_if_t< std::is_floating_point_v< T > > amrex::ParallelDescriptor::ReduceRealSum | ( | Vector< std::reference_wrapper< T > > const & | rvar, |
int | cpu | ||
) |
|
inlinenoexcept |
void amrex::ParallelDescriptor::Scatter | ( | T * | , |
size_t | n, | ||
const T1 * | , | ||
size_t | n1, | ||
int | root | ||
) |
|
noexcept |
Returns wall-clock seconds since start of execution.
Message amrex::ParallelDescriptor::Send | ( | const std::vector< T > & | buf, |
int | dst_pid, | ||
int | tag | ||
) |
Message amrex::ParallelDescriptor::Send | ( | const T * | buf, |
size_t | n, | ||
int | dst_pid, | ||
int | tag | ||
) |
Message amrex::ParallelDescriptor::Send | ( | const T * | buf, |
size_t | n, | ||
int | dst_pid, | ||
int | tag, | ||
MPI_Comm | comm | ||
) |
|
inlinenoexcept |
Returns sequential message sequence numbers, usually used as tags for send/recv.
Perform any needed parallel initialization. This MUST be the first routine in this class called from within a program.
BL_USE_MPI
void amrex::ParallelDescriptor::StartTeams | ( | ) |
Split the process pool into teams.
void amrex::ParallelDescriptor::team_for | ( | int | begin, |
int | end, | ||
int | rit, | ||
const F & | f | ||
) |
void amrex::ParallelDescriptor::team_for | ( | int | begin, |
int | end, | ||
int | rit, | ||
int | nworkers, | ||
const F & | f | ||
) |
|
inlinenoexcept |
|
inlinenoexcept |
void amrex::ParallelDescriptor::Test | ( | MPI_Request & | , |
int & | , | ||
MPI_Status & | |||
) |
void amrex::ParallelDescriptor::Test | ( | Vector< MPI_Request > & | , |
int & | , | ||
Vector< MPI_Status > & | |||
) |
const std::string amrex::ParallelDescriptor::Unnamed | ( | "Unnamed" | ) |
Used as default argument to ParallelDescriptor::Barrier().
|
inline |
void amrex::ParallelDescriptor::Wait | ( | MPI_Request & | , |
MPI_Status & | |||
) |
void amrex::ParallelDescriptor::Waitall | ( | Vector< MPI_Request > & | , |
Vector< MPI_Status > & | |||
) |
void amrex::ParallelDescriptor::Waitany | ( | Vector< MPI_Request > & | , |
int & | , | ||
MPI_Status & | |||
) |
void amrex::ParallelDescriptor::Waitsome | ( | Vector< MPI_Request > & | , |
int & | , | ||
Vector< int > & | , | ||
Vector< MPI_Status > & | |||
) |
AMREX_EXPORT const int amrex::ParallelDescriptor::ioProcessor = 0 |
The MPI rank number of the I/O Processor (probably rank 0). This rank is usually used to write to stdout.
AMREX_EXPORT MPI_Comm amrex::ParallelDescriptor::m_comm = MPI_COMM_NULL |
AMREX_EXPORT int amrex::ParallelDescriptor::m_MaxTag = -1 |
AMREX_EXPORT int amrex::ParallelDescriptor::m_MinTag = 1000 |
Vector< MPI_Datatype * > amrex::ParallelDescriptor::m_mpi_types |
AMREX_EXPORT int amrex::ParallelDescriptor::m_nprocs_per_node = 1 |
AMREX_EXPORT int amrex::ParallelDescriptor::m_nprocs_per_processor = 1 |
AMREX_EXPORT int amrex::ParallelDescriptor::m_rank_in_node = 0 |
AMREX_EXPORT int amrex::ParallelDescriptor::m_rank_in_processor = 0 |
AMREX_EXPORT ProcessTeam amrex::ParallelDescriptor::m_Team |
AMREX_EXPORT bool amrex::ParallelDescriptor::use_gpu_aware_mpi = false |