1 #ifndef OMEGA_H_DIST_HPP
2 #define OMEGA_H_DIST_HPP
4 #include <Omega_h_comm.hpp>
5 #include <Omega_h_remotes.hpp>
6 #include <Omega_h_graph.hpp>
120 CommPtr parent_comm_;
122 LOs items2content_[2];
123 LOs msgs2content_[2];
130 Dist(CommPtr comm_in,
Remotes fitems2rroots, LO nrroots);
131 void set_parent_comm(CommPtr parent_comm_in);
138 void set_dest_ranks(
Read<I32> items2ranks_in);
147 void set_dest_idxs(
LOs fitems2rroots, LO nrroots);
152 void set_roots2items(
LOs froots2fitems);
161 void set_dest_globals(
GOs fitems2ritem_globals);
163 template <
typename T>
165 template <
typename T>
167 template <
typename T>
168 Read<T> exch_reduce(
Read<T> data, Int width, Omega_h_Op op)
const;
169 CommPtr parent_comm()
const;
170 CommPtr comm()
const;
171 LOs msgs2content()
const;
172 LOs content2msgs()
const;
173 LOs items2content()
const;
174 LOs items2msgs()
const;
175 LOs roots2items()
const;
178 LOs items2dest_idxs()
const;
184 void change_comm(CommPtr new_comm);
188 void copy(
Dist const& other);
201 #define OMEGA_H_EXPL_INST_DECL(T) \
202 extern template Read<T> Dist::exch(Read<T> data, Int width) const; \
203 extern template Future<T> Dist::iexch(Read<T> data, Int width) const; \
204 extern template Read<T> Dist::exch_reduce<T>( \
205 Read<T> data, Int width, Omega_h_Op op) const;
206 OMEGA_H_EXPL_INST_DECL(I8)
207 OMEGA_H_EXPL_INST_DECL(I32)
208 OMEGA_H_EXPL_INST_DECL(I64)
209 OMEGA_H_EXPL_INST_DECL(Real)
210 #undef OMEGA_H_EXPL_INST_DECL
an MPI distributor object which encapsulates the idea of a communication pattern between lots of smal...
Definition: Omega_h_dist.hpp:119
Abstraction for asynchronous communication.
Definition: Omega_h_future.hpp:19
Definition: amr_mpi_test.cpp:6
Dist create_dist_for_variable_sized(Dist copies2owners, LOs copies2data)
Creates a Dist object that can be re-used to synchronize variable-sized data per actor.
Definition: Omega_h_dist.cpp:224
Definition: Omega_h_remotes.hpp:9