MPI Namespace Reference#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
Functions | |
| bool | available () |
| Whether this build has MPI and MPI_Init has run. Everything below degrades to a single-rank no-op when this is false, so callers never have to branch on the build type. | |
| uint | rank (MPI_Comm comm) |
| uint | size (MPI_Comm comm) |
| void | barrier (MPI_Comm comm) |
| void | sum_reduce (MPI_Comm comm, int *data, int size) |
| void | max_reduce (MPI_Comm comm, int *data, int size) |
| void | min_reduce (MPI_Comm comm, int *data, int size) |
| void | sum_reduce (MPI_Comm comm, double *data, int size) |
| void | max_reduce (MPI_Comm comm, double *data, int size) |
| void | min_reduce (MPI_Comm comm, double *data, int size) |
| int | sum_reduce (MPI_Comm comm, int value) |
| int | max_reduce (MPI_Comm comm, int value) |
| int | min_reduce (MPI_Comm comm, int value) |
| double | sum_reduce (MPI_Comm comm, double value) |
| double | max_reduce (MPI_Comm comm, double value) |
| double | min_reduce (MPI_Comm comm, double value) |
| bool | any_of (MPI_Comm comm, bool value) |
| Collective agreement on a predicate. Used to turn a rank-local decision (an abort, a convergence flag) into one that every rank makes identically – ranks that disagree about control flow enter different numbers of collectives and hang. | |
| bool | all_of (MPI_Comm comm, bool value) |
| bool | agree (MPI_Comm comm, uint64_t token) |
Whether every rank passed the same token. One collective. | |
| void | bcast (MPI_Comm comm, void *data, size_t bytes, uint root=0) |
Broadcast raw bytes from root to all ranks. | |
| void | allgatherv_bytes (MPI_Comm comm, const void *send, size_t send_bytes, void *recv, const std::vector< int > &recv_counts, const std::vector< int > &displs) |
| Concatenating all-gather of byte blocks of differing size. | |
| MPI_Comm | split_shared (MPI_Comm comm) |
| A communicator over the ranks sharing this node's memory, for GPU affinity. | |
| void | free_comm (MPI_Comm &comm) |
| void | abort (MPI_Comm comm, const std::string &message, int code=1) |
| Tear the whole job down with a message on stderr. | |
Function Documentation
◆ abort()
| void DiFfRG::MPI::abort | ( | MPI_Comm | comm, |
| const std::string & | message, | ||
| int | code = 1 ) |
Tear the whole job down with a message on stderr.
Used where a throw would deadlock: an exception unwinds one rank out of a collective the others are still waiting in, so the failure would present as a hang instead of an error.
◆ agree()
| bool DiFfRG::MPI::agree | ( | MPI_Comm | comm, |
| uint64_t | token ) |
Whether every rank passed the same token. One collective.
For checking agreement on something whose disagreement would otherwise show up as a hang (mismatched collective arguments) rather than an error.
◆ all_of()
| bool DiFfRG::MPI::all_of | ( | MPI_Comm | comm, |
| bool | value ) |
◆ allgatherv_bytes()
| void DiFfRG::MPI::allgatherv_bytes | ( | MPI_Comm | comm, |
| const void * | send, | ||
| size_t | send_bytes, | ||
| void * | recv, | ||
| const std::vector< int > & | recv_counts, | ||
| const std::vector< int > & | displs ) |
Concatenating all-gather of byte blocks of differing size.
recv_counts and displs are in bytes and must be identical on every rank; recv must hold sum(recv_counts) bytes. Used by MapScheduler to exchange map() slices. Deliberately not an Allreduce(SUM) over zero-filled buffers: that moves N times more data and is not bit-safe, since (-0.0) + 0.0 == +0.0 destroys a signed zero.
◆ any_of()
| bool DiFfRG::MPI::any_of | ( | MPI_Comm | comm, |
| bool | value ) |
Collective agreement on a predicate. Used to turn a rank-local decision (an abort, a convergence flag) into one that every rank makes identically – ranks that disagree about control flow enter different numbers of collectives and hang.
◆ available()
| bool DiFfRG::MPI::available | ( | ) |
Whether this build has MPI and MPI_Init has run. Everything below degrades to a single-rank no-op when this is false, so callers never have to branch on the build type.
◆ barrier()
| void DiFfRG::MPI::barrier | ( | MPI_Comm | comm | ) |
◆ bcast()
| void DiFfRG::MPI::bcast | ( | MPI_Comm | comm, |
| void * | data, | ||
| size_t | bytes, | ||
| uint | root = 0 ) |
Broadcast raw bytes from root to all ranks.
◆ free_comm()
| void DiFfRG::MPI::free_comm | ( | MPI_Comm & | comm | ) |
◆ max_reduce() [1/4]
| void DiFfRG::MPI::max_reduce | ( | MPI_Comm | comm, |
| double * | data, | ||
| int | size ) |
◆ max_reduce() [2/4]
| double DiFfRG::MPI::max_reduce | ( | MPI_Comm | comm, |
| double | value ) |
◆ max_reduce() [3/4]
| void DiFfRG::MPI::max_reduce | ( | MPI_Comm | comm, |
| int * | data, | ||
| int | size ) |
◆ max_reduce() [4/4]
| int DiFfRG::MPI::max_reduce | ( | MPI_Comm | comm, |
| int | value ) |
◆ min_reduce() [1/4]
| void DiFfRG::MPI::min_reduce | ( | MPI_Comm | comm, |
| double * | data, | ||
| int | size ) |
◆ min_reduce() [2/4]
| double DiFfRG::MPI::min_reduce | ( | MPI_Comm | comm, |
| double | value ) |
◆ min_reduce() [3/4]
| void DiFfRG::MPI::min_reduce | ( | MPI_Comm | comm, |
| int * | data, | ||
| int | size ) |
◆ min_reduce() [4/4]
| int DiFfRG::MPI::min_reduce | ( | MPI_Comm | comm, |
| int | value ) |
◆ rank()
| uint DiFfRG::MPI::rank | ( | MPI_Comm | comm | ) |
◆ size()
| uint DiFfRG::MPI::size | ( | MPI_Comm | comm | ) |
◆ split_shared()
| MPI_Comm DiFfRG::MPI::split_shared | ( | MPI_Comm | comm | ) |
A communicator over the ranks sharing this node's memory, for GPU affinity.
Returns MPI_COMM_SELF-equivalent behaviour (size 1) without MPI. Free it with free_comm().
◆ sum_reduce() [1/4]
| void DiFfRG::MPI::sum_reduce | ( | MPI_Comm | comm, |
| double * | data, | ||
| int | size ) |
◆ sum_reduce() [2/4]
| double DiFfRG::MPI::sum_reduce | ( | MPI_Comm | comm, |
| double | value ) |
◆ sum_reduce() [3/4]
| void DiFfRG::MPI::sum_reduce | ( | MPI_Comm | comm, |
| int * | data, | ||
| int | size ) |
◆ sum_reduce() [4/4]
| int DiFfRG::MPI::sum_reduce | ( | MPI_Comm | comm, |
| int | value ) |
Generated by