15 #ifndef CONEJO_BALANCER_H
16 #define CONEJO_BALANCER_H
36 template<
unsigned int D>
class NDIndex;
96 template<
class T,
unsigned int D>
103 std::vector<double> vnodeWeights;
132 template<
unsigned int D>
150 std::vector<int> vnodeDestinations;
157 std::vector< NDIndex<D> > vnodeDomains;
187 void sendWeights(std::vector<double>& vnodeWeights,
int tag);
189 void setupVnodes(
int localVnodes,
int remoteVnodes);
207 template<
unsigned int D>
213 std::vector< NDIndex<D> > send;
216 for (
int proc = 0; proc <
m_procs; ++proc )
221 for ( ; vp!=vnodeDests.end(); ++vp, ++fp)
226 send.push_back( (*fp).second->getDomain() );
234 msg->
put(send.size());
254 template<
unsigned int D>
259 for (
int proc=0; proc <
m_procs; ++proc)
276 vnodeDomains.resize( vnodeDomains.size() + s );
290 #endif // CONEJO_BALANCER_H
Layout_t & getLayout() const
void sendWeights(std::vector< double > &vnodeWeights, int tag)
void receiveVnodesToSend(std::vector< int > &vnodeDestinations, int tag)
void sendVnodeDomains(std::vector< int > &vnodeDests, FieldLayout< D > &layout, int tag)
void getMessage_iter(Message &m, OutputIterator o)
void receiveWeights(std::vector< double > &vnodeWeights, int tag)
int next_tag(int t, int s=1000)
void Repartition(const NDIndex< Dim > *, const NDIndex< Dim > *)
MultiBalancer * m_balancer
void broadcastVnodesToSend(int tag)
void reduceLocalWeights(BareField< T, D > &weights, std::vector< double > &vnodeWeights, bool dropCompressed)
ac_id_vnodes::iterator iterator_iv
void receiveVnodeDomains(std::vector< NDIndex< D > > &vnodeDomains, int tag)
std::vector< int > m_vnodeCounts
void setupVnodes(int localVnodes, int remoteVnodes)
void recordVnodeCount(int count, int proc)
Message & get(const T &cval)
Message & put(const T &val)
void redistribute(FieldLayout< D > &layout)
ac_id_larray::size_type size_if() const
ac_domain_vnodes::size_type size_rdv(const GuardCellSizes< Dim > &gc=gc0()) const
#define F_CONEJO_BALANCER_TAG
std::string::iterator iterator
void putMessage(Message &m, const T &t)
Message * receive_block(int &node, int &tag)
static Communicate * Comm
bool send(Message *, int node, int tag, bool delmsg=true)
void addMaterial(BareField< T, D > &weights, bool dropCompressed)