|
Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website |
Process-level communication. More...
#include "comm.h"#include <algorithm>#include <cstdlib>#include <limits>#include <stdexcept>#include <string>Namespaces | |
| namespace | comm |
Functions | |
| int | comm::rank () |
| Rank of this process in the world communicator. | |
| int | comm::size () |
| Number of processes in the world communicator. | |
| void | comm::barrier () |
| Block until all ranks arrive. | |
| void | comm::abort (int code) |
| Ends every rank with the given exit code (MPI_Abort in parallel runs). | |
| template<typename T > | |
| void | comm::allreduce (std::span< T > data, Op op) |
| In-place all-reduce over all ranks of the values in data. | |
| template<typename T > | |
| std::vector< T > | comm::allgatherv (const std::vector< T > &local) |
| Concatenation of every rank's local vector, in rank order. | |
| template<typename T > | |
| std::vector< std::vector< T > > | comm::alltoallv (const std::vector< std::vector< T > > &send) |
| Personalized all-to-all: send[r] goes to rank r; returns what each rank sent to this one, indexed by source rank. | |
| template<typename T > | |
| Received< T > | comm::exchange (std::vector< std::vector< T > > &&send) |
| Personalized all-to-all like alltoallv, for large setup-time messages: frees each send list once packed, and returns what it received in one buffer, in rank order. | |
| template void | comm::allreduce< double > (std::span< double >, Op) |
| template void | comm::allreduce< float > (std::span< float >, Op) |
| template void | comm::allreduce< int32_t > (std::span< int32_t >, Op) |
| template void | comm::allreduce< int64_t > (std::span< int64_t >, Op) |
| template void | comm::allreduce< uint32_t > (std::span< uint32_t >, Op) |
| template void | comm::allreduce< uint64_t > (std::span< uint64_t >, Op) |
| template std::vector< std::vector< uint64_t > > | comm::alltoallv (const std::vector< std::vector< uint64_t > > &) |
| template std::vector< int32_t > | comm::allgatherv (const std::vector< int32_t > &) |
| template std::vector< uint64_t > | comm::allgatherv (const std::vector< uint64_t > &) |
| template std::vector< double > | comm::allgatherv (const std::vector< double > &) |
| template std::vector< float > | comm::allgatherv (const std::vector< float > &) |
| template std::vector< std::vector< double > > | comm::alltoallv (const std::vector< std::vector< double > > &) |
| template std::vector< std::vector< float > > | comm::alltoallv (const std::vector< std::vector< float > > &) |
| template Received< uint64_t > | comm::exchange (std::vector< std::vector< uint64_t > > &&) |
| template Received< double > | comm::exchange (std::vector< std::vector< double > > &&) |
| template Received< float > | comm::exchange (std::vector< std::vector< float > > &&) |
Process-level communication.