atlas::parallel::GatherScatter class

Constructors, destructors, conversion operators

GatherScatter()
GatherScatter(const std::string& name)
~GatherScatter() virtual

Public functions

auto name() const -> std::string
void setup(const std::string& mpi_comm, const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const idx_t parsize)
Setup.
void setup(const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const idx_t parsize)
Setup.
void setup(const std::string& mpi_comm, const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const int mask[], const idx_t parsize)
Setup.
void setup(const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const int mask[], const idx_t parsize)
Setup.
template<typename DATA_TYPE>
void gather(const DATA_TYPE ldata[], const idx_t lstrides[], const idx_t lshape[], const idx_t lrank, const idx_t lmpl_idxpos[], const idx_t lmpl_rank, DATA_TYPE gdata[], const idx_t gstrides[], const idx_t gshape[], const idx_t grank, const idx_t gmpl_idxpos[], const idx_t gmpl_rank, const idx_t root) const
template<typename DATA_TYPE>
void gather(const DATA_TYPE ldata[], const idx_t lvar_strides[], const idx_t lvar_shape[], const idx_t lvar_rank, DATA_TYPE gdata[], const idx_t gvar_strides[], const idx_t gvar_shape[], const idx_t gvar_rank, const idx_t root = 0) const
template<typename DATA_TYPE>
void gather(parallel::Field<DATA_TYPE const> lfields[], parallel::Field<DATA_TYPE> gfields[], const idx_t nb_fields, const idx_t root = 0) const
template<typename DATA_TYPE, int LRANK, int GRANK>
void gather(const array::ArrayView<DATA_TYPE, LRANK>& ldata, array::ArrayView<DATA_TYPE, GRANK>& gdata, const idx_t root = 0) const
template<typename DATA_TYPE>
void scatter(parallel::Field<DATA_TYPE const> gfields[], parallel::Field<DATA_TYPE> lfields[], const idx_t nb_fields, const idx_t root = 0) const
template<typename DATA_TYPE>
void scatter(const DATA_TYPE gdata[], const idx_t gstrides[], const idx_t gshape[], const idx_t grank, const idx_t gmpl_idxpos[], const idx_t gmpl_rank, DATA_TYPE ldata[], const idx_t lstrides[], const idx_t lshape[], const idx_t lrank, const idx_t lmpl_idxpos[], const idx_t lmpl_rank, const idx_t root) const
template<typename DATA_TYPE>
void scatter(const DATA_TYPE gdata[], const idx_t gvar_strides[], const idx_t gvar_shape[], const idx_t gvar_rank, DATA_TYPE ldata[], const idx_t lvar_strides[], const idx_t lvar_shape[], const idx_t lvar_rank, const idx_t root = 0) const
template<typename DATA_TYPE, int GRANK, int LRANK>
void scatter(const array::ArrayView<DATA_TYPE, GRANK>& gdata, array::ArrayView<DATA_TYPE, LRANK>& ldata, const idx_t root = 0) const
auto glb_dof() const -> gidx_t
auto loc_dof() const -> idx_t
auto comm() const -> const mpi::Comm&

Function documentation

void atlas::parallel::GatherScatter::setup(const std::string& mpi_comm, const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const idx_t parsize)

Setup.

Parameters
mpi_comm in Name of mpi communicator
part in List of partitions
remote_idx in List of local indices on remote partitions
base in values of remote_idx start at "base"
glb_idx in List of global indices
parsize in size of given lists

void atlas::parallel::GatherScatter::setup(const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const idx_t parsize)

Setup.

Parameters
part in List of partitions
remote_idx in List of local indices on remote partitions
base in values of remote_idx start at "base"
glb_idx in List of global indices
parsize in size of given lists

void atlas::parallel::GatherScatter::setup(const std::string& mpi_comm, const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const int mask[], const idx_t parsize)

Setup.

Parameters
mpi_comm in Name of mpi communicator
part in List of partitions
remote_idx in List of local indices on remote partitions
base in values of remote_idx start at "base"
glb_idx in List of global indices
mask in Mask indices not to include in the communication pattern (0=include,1=exclude)
parsize in size of given lists

void atlas::parallel::GatherScatter::setup(const int part[], const idx_t remote_idx[], const int base, const gidx_t glb_idx[], const int mask[], const idx_t parsize)

Setup.

Parameters
part in List of partitions
remote_idx in List of local indices on remote partitions
base in values of remote_idx start at "base"
glb_idx in List of global indices
mask in Mask indices not to include in the communication pattern (0=include,1=exclude)
parsize in size of given lists

template<typename DATA_TYPE>
void atlas::parallel::GatherScatter::gather(parallel::Field<DATA_TYPE const> lfields[], parallel::Field<DATA_TYPE> gfields[], const idx_t nb_fields, const idx_t root = 0) const

Pack

Gather

Unpack

template<typename DATA_TYPE>
void atlas::parallel::GatherScatter::scatter(parallel::Field<DATA_TYPE const> gfields[], parallel::Field<DATA_TYPE> lfields[], const idx_t nb_fields, const idx_t root = 0) const

Pack

Scatter

Unpack