1 #ifndef DIY_PARTNERS_MERGE_HPP
2 #define DIY_PARTNERS_MERGE_HPP
23 template<
class Decomposer>
26 bool contiguous =
true
28 Parent(decomposer, k, contiguous) {}
31 bool contiguous =
true
33 Parent(divs, kvs, contiguous) {}
35 inline bool active(
int round,
int gid,
const Master&)
const;
38 inline void incoming(
int round,
int gid, std::vector<int>& partners,
const Master&)
const { Parent::fill(round - 1, gid, partners); }
40 inline void outgoing(
int round,
int gid, std::vector<int>& partners,
const Master&)
const { std::vector<int> tmp; Parent::fill(round, gid, tmp); partners.push_back(tmp[0]); }
46 diy::RegularMergePartners::
47 active(
int round,
int gid,
const Master&)
const
50 Decomposer::gid_to_coords(gid, coords, divisions());
52 for (
int r = 0; r < round; ++r)
53 if (Parent::group_position(r, coords[kvs()[r].dim], step(r)) != 0)
Partners for merge-reduce.
Definition: merge.hpp:16
Definition: common.hpp:10
RegularMergePartners(const DivisionVector &divs, const KVSVector &kvs, bool contiguous=true)
Definition: merge.hpp:29
Decomposes a regular (discrete or continuous) domain into even blocks; creates Links with Bounds alon...
Definition: decomposition.hpp:75
Definition: master.hpp:35
RegularMergePartners(const Decomposer &decomposer, int k, bool contiguous=true)
Definition: merge.hpp:24