TRIQS/nda 1.3.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
mpi::lazy< mpi::tag::reduce, A >

#include <nda/mpi/reduce.hpp>

Detailed Description

template<nda::Array A>
struct mpi::lazy< mpi::tag::reduce, A >

Specialization of the mpi::lazy class for nda::Array types and the mpi::tag::reduce tag.

An object of this class is returned when reducing nda::Array objects across multiple MPI processes.

It models an nda::ArrayInitializer, that means it can be used to initialize and assign to nda::basic_array and nda::basic_array_view objects. The target array will have the same shape as the input arrays.

See nda::mpi_reduce for an example.

Template Parameters
Anda::Array type to be reduced.

Definition at line 50 of file reduce.hpp.

Public Types

using const_view_type = decltype(std::declval<const A>()())
 Const view type of the array/view stored in the lazy object.
 
using value_type = typename std::decay_t<A>::value_type
 Value type of the array/view.
 

Public Member Functions

template<nda::Array T>
void invoke (T &&target) const
 Execute the lazy MPI operation and write the result to a target array/view.
 
auto shape () const
 Compute the shape of the target array.
 

Public Attributes

const bool all {false}
 Should all processes receive the result.
 
mpi::communicator comm
 MPI communicator.
 
const MPI_Op op {MPI_SUM}
 MPI reduction operation.
 
const_view_type rhs
 View of the array/view to be reduced.
 
const int root {0}
 MPI root process.
 

Member Function Documentation

◆ invoke()

template<nda::Array A>
template<nda::Array T>
void mpi::lazy< mpi::tag::reduce, A >::invoke ( T && target) const
inline

Execute the lazy MPI operation and write the result to a target array/view.

If the target array/view is the same as the input array/view, i.e. if their data pointers are the same, the reduction is performed in-place.

Template Parameters
Tnda::Array type of the target array/view.
Parameters
targetTarget array/view.

Definition at line 89 of file reduce.hpp.

◆ shape()

template<nda::Array A>
auto mpi::lazy< mpi::tag::reduce, A >::shape ( ) const
inlinenodiscard

Compute the shape of the target array.

Note
It is assumed that the shape of the input array is the same for all MPI processes.
Returns
Shape of the input array.

Definition at line 77 of file reduce.hpp.


The documentation for this struct was generated from the following file: