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