TRIQS/mpi 1.3.0
C++ interface to MPI
Loading...
Searching...
No Matches
ranges.hpp File Reference
#include "./chunk.hpp"
#include "./communicator.hpp"
#include "./datatypes.hpp"
#include "./environment.hpp"
#include "./generic_communication.hpp"
#include "./macros.hpp"
#include "./utils.hpp"
#include <itertools/itertools.hpp>
#include <mpi.h>
#include <algorithm>
#include <concepts>
#include <limits>
#include <numeric>
#include <ranges>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>

Detailed Description

Provides an MPI broadcast, reduce, scatter and gather for generic ranges.

Definition in file ranges.hpp.

Go to the source code of this file.

Functions

template<std::ranges::sized_range R>
void mpi::broadcast_range (R &&rg, communicator c={}, int root=0)
 Implementation of an MPI broadcast for std::ranges::sized_range objects.
 
template<MPICompatibleRange R1, MPICompatibleRange R2>
requires (std::same_as<std::remove_cvref_t<std::ranges::range_value_t<R1>>, std::remove_cvref_t<std::ranges::range_value_t<R2>>>)
void mpi::gather_range (R1 &&in_rg, R2 &&out_rg, communicator c={}, int root=0, bool all=false)
 Implementation of an MPI gather for mpi::MPICompatibleRange objects.
 
template<std::ranges::sized_range R1, std::ranges::sized_range R2>
void mpi::reduce_range (R1 &&in_rg, R2 &&out_rg, communicator c={}, int root=0, bool all=false, MPI_Op op=MPI_SUM)
 Implementation of an MPI reduce for std::ranges::sized_range objects.
 
template<MPICompatibleRange R1, MPICompatibleRange R2>
requires (std::same_as<std::remove_cvref_t<std::ranges::range_value_t<R1>>, std::remove_cvref_t<std::ranges::range_value_t<R2>>>)
void mpi::scatter_range (R1 &&in_rg, R2 &&out_rg, long scatter_size, communicator c={}, int root=0, long chunk_size=1)
 Implementation of an MPI scatter for mpi::MPICompatibleRange objects.