Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website
Loading...
Searching...
No Matches
comm.cpp File Reference

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 > > &&)
 

Detailed Description

Process-level communication.

Author
Matthew Bonanni (mbona.nosp@m.nni0.nosp@m.01@gm.nosp@m.ail..nosp@m.com)
Version
0.3
Date
2026-10-02