Simplify naive distribution
This commit is contained in:
parent
7e52480b3b
commit
f514b70b4e
33
atrip.org
33
atrip.org
@ -721,6 +721,7 @@ This section presents some utilities
|
|||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
#include <ctf.hpp>
|
#include <ctf.hpp>
|
||||||
|
#include <atrip/Debug.hpp>
|
||||||
|
|
||||||
namespace atrip {
|
namespace atrip {
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -1510,10 +1511,16 @@ getABCRange(size_t np, size_t rank, ABCTuples const& tuplesList) {
|
|||||||
|
|
||||||
auto const& it = n_tuples_per_rank.begin();
|
auto const& it = n_tuples_per_rank.begin();
|
||||||
|
|
||||||
return
|
std::pair<size_t, size_t> const
|
||||||
{ std::accumulate(it, it + rank , 0)
|
range = { std::accumulate(it, it + rank , 0)
|
||||||
, std::accumulate(it, it + rank + 1, 0)
|
, std::accumulate(it, it + rank + 1, 0) - 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
WITH_RANK << "range = "
|
||||||
|
<< range.first << " -> " << range.second
|
||||||
|
<< std::endl;
|
||||||
|
|
||||||
|
return range;
|
||||||
|
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -1527,12 +1534,23 @@ struct NaiveDistribution : public TuplesDistribution {
|
|||||||
MPI_Comm_rank(universe, &rank);
|
MPI_Comm_rank(universe, &rank);
|
||||||
MPI_Comm_size(universe, &np);
|
MPI_Comm_size(universe, &np);
|
||||||
auto const all = getTuplesList(Nv);
|
auto const all = getTuplesList(Nv);
|
||||||
auto const range = getABCRange((size_t)np, (size_t)rank, all);
|
const size_t
|
||||||
|
tuplesPerRank
|
||||||
|
= all.size() / np
|
||||||
|
+ size_t(all.size() % np != 0)
|
||||||
|
;
|
||||||
|
//auto const range = getABCRange((size_t)np, (size_t)rank, all);
|
||||||
|
|
||||||
|
std::pair<size_t, size_t> const
|
||||||
|
range = { tuplesPerRank * rank
|
||||||
|
, tuplesPerRank * (rank + 1) - 1
|
||||||
|
};
|
||||||
|
|
||||||
std::vector<ABCTuple> result(range.second - range.first, FAKE_TUPLE);
|
std::vector<ABCTuple> result(range.second - range.first, FAKE_TUPLE);
|
||||||
std::copy(all.begin() + range.first,
|
std::copy(all.begin() + range.first,
|
||||||
range.second >= all.size()
|
range.second >= all.size()
|
||||||
? all.end()
|
? all.end()
|
||||||
: all.begin() + range.first + range.second,
|
: all.begin() + range.first + range.second,
|
||||||
result.begin());
|
result.begin());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -1688,7 +1706,6 @@ specialDistribution(Info info, std::vector<ABCTuple> const& allTuples) {
|
|||||||
size_t nNodes(info.nNodes);
|
size_t nNodes(info.nNodes);
|
||||||
size_t np(info.np);
|
size_t np(info.np);
|
||||||
size_t N(allTuples.size());
|
size_t N(allTuples.size());
|
||||||
size_t tuplePerNode( ceil( ((double)N) / nNodes) );
|
|
||||||
|
|
||||||
// nodeid tuple list
|
// nodeid tuple list
|
||||||
std::map<size_t, std::vector<ABCTuple> > container1d;
|
std::map<size_t, std::vector<ABCTuple> > container1d;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user