atlas::parallel::HaloExchange class

Public types

struct Backdoor

Constructors, destructors, conversion operators

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

Public functions

auto name() const -> const std::string&
void setup(const int part[], const idx_t remote_idx[], const int base, idx_t size)
void setup(const std::string& mpi_comm, const int part[], const idx_t remote_idx[], const int base, idx_t size)
void setup(const int part[], const idx_t remote_idx[], const int base, idx_t size, idx_t halo_begin)
void setup(const std::string& mpi_comm, const int part[], const idx_t remote_idx[], const int base, idx_t size, idx_t halo_begin)
template<typename DATA_TYPE, int RANK, typename ParallelDim = array::FirstDim>
void execute(array::Array& field, bool on_device = false) const
template<typename DATA_TYPE, int RANK, typename ParallelDim = array::FirstDim>
void execute_adjoint(array::Array& field, bool on_device = false) const
template<int ParallelDim, typename DATA_TYPE, int RANK>
void zero_halos(ATLAS_MAYBE_UNUSED const array::ArrayView<DATA_TYPE, RANK>& hfield, array::ArrayView<DATA_TYPE, RANK>& dfield, DATA_TYPE* recv_buffer, int recv_size, ATLAS_MAYBE_UNUSED const bool on_device) const
template<int ParallelDim, typename DATA_TYPE, int RANK>
void pack_send_buffer(ATLAS_MAYBE_UNUSED const array::ArrayView<DATA_TYPE, RANK>& hfield, const array::ArrayView<DATA_TYPE, RANK>& dfield, DATA_TYPE* send_buffer, int send_size, ATLAS_MAYBE_UNUSED const bool on_device) const
template<int ParallelDim, typename DATA_TYPE, int RANK>
void unpack_recv_buffer(const DATA_TYPE* recv_buffer, int recv_size, ATLAS_MAYBE_UNUSED array::ArrayView<DATA_TYPE, RANK>& hfield, array::ArrayView<DATA_TYPE, RANK>& dfield, ATLAS_MAYBE_UNUSED const bool on_device) const
template<int ParallelDim, typename DATA_TYPE, int RANK>
void pack_recv_adjoint_buffer(ATLAS_MAYBE_UNUSED const array::ArrayView<DATA_TYPE, RANK>& hfield, const array::ArrayView<DATA_TYPE, RANK>& dfield, DATA_TYPE* recv_buffer, int recv_size, ATLAS_MAYBE_UNUSED const bool on_device) const
template<int ParallelDim, typename DATA_TYPE, int RANK>
void unpack_send_adjoint_buffer(const DATA_TYPE* send_buffer, int send_size, ATLAS_MAYBE_UNUSED array::ArrayView<DATA_TYPE, RANK>& hfield, array::ArrayView<DATA_TYPE, RANK>& dfield, ATLAS_MAYBE_UNUSED const bool on_device) const

Public variables

struct atlas::parallel::HaloExchange::Backdoor backdoor

Function documentation

template<typename DATA_TYPE, int RANK, typename ParallelDim = array::FirstDim>
void atlas::parallel::HaloExchange::execute(array::Array& field, bool on_device = false) const

Pack

Unpack

template<typename DATA_TYPE, int RANK, typename ParallelDim = array::FirstDim>
void atlas::parallel::HaloExchange::execute_adjoint(array::Array& field, bool on_device = false) const

Pack

Send

Unpack

Wait for sending to finish