Skip to content

Commit

Permalink
fixing query sending errors in DPT
Browse files Browse the repository at this point in the history
Problem:
the query lenghts `lengths_to_distribute` were not set, thus it sent 0
length, and on the receiving side, the 0-length queries resulted in no
actual querying

Solution:
Set the `lengths_to_distribute` to the correct binned values

additionally: replaced GlobalIndex with size_t for local variables.
You need GlobalIndex only when sending. Locally for a size `env.size()`
sized array it just makes things slower without resulting in any memory
savings.
  • Loading branch information
patflick committed Apr 4, 2019
1 parent adad6ea commit 90acc77
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions dpt/tree/distributed_patricia_trie.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ class distributed_patricia_trie {
target_pes[i] = -1;
}
}
std::vector<GlobalIndex> displ(env_.size(), 0);
std::vector<GlobalIndex> displ_length(env_.size(), 0);
std::vector<size_t> displ(env_.size(), 0);
std::vector<size_t> displ_length(env_.size(), 0);
for (int32_t i = 1; i < env_.size(); ++i) {
displ[i] = displ[i - 1] + hist[i - 1];
displ_length[i] = displ_length[i - 1] + hist_length[i - 1];
Expand All @@ -89,6 +89,7 @@ class distributed_patricia_trie {
std::copy_n(queries[i].query, queries[i].length,
queries_to_distribute.begin() + displ_length[target_pes[i]]);
displ_length[target_pes[i]] += queries[i].length;
lengths_to_distribute[displ[target_pes[i]]++] = queries[i].length;
}
}
q_list rec_queries = manager_.template distribute_queries<Communication>(
Expand Down Expand Up @@ -117,8 +118,8 @@ class distributed_patricia_trie {
target_pes[i] = std::make_pair(-1, -1);
}
}
std::vector<GlobalIndex> displ(env_.size(), 0);
std::vector<GlobalIndex> displ_length(env_.size(), 0);
std::vector<size_t> displ(env_.size(), 0);
std::vector<size_t> displ_length(env_.size(), 0);
for (int32_t i = 1; i < env_.size(); ++i) {
displ[i] = displ[i - 1] + hist[i - 1];
displ_length[i] = displ_length[i - 1] + hist_length[i - 1];
Expand All @@ -131,10 +132,12 @@ class distributed_patricia_trie {
std::copy_n(queries[i].query, queries[i].length,
queries_to_distribute.begin() + displ_length[target_pes[i].first]);
displ_length[target_pes[i].first] += queries[i].length;
lengths_to_distribute[displ[target_pes[i].first]++] = queries[i].length;
if (target_pes[i].first != target_pes[i].second) {
std::copy_n(queries[i].query, queries[i].length,
queries_to_distribute.begin() + displ_length[target_pes[i].second]);
displ_length[target_pes[i].second] += queries[i].length;
lengths_to_distribute[displ[target_pes[i].second]++] = queries[i].length;
}
}
}
Expand Down Expand Up @@ -164,8 +167,8 @@ class distributed_patricia_trie {
target_pes[i] = std::make_pair(-1, -1);
}
}
std::vector<GlobalIndex> displ(env_.size(), 0);
std::vector<GlobalIndex> displ_length(env_.size(), 0);
std::vector<size_t> displ(env_.size(), 0);
std::vector<size_t> displ_length(env_.size(), 0);
for (int32_t i = 1; i < env_.size(); ++i) {
displ[i] = displ[i - 1] + hist[i - 1];
displ_length[i] = displ_length[i - 1] + hist_length[i - 1];
Expand All @@ -178,10 +181,12 @@ class distributed_patricia_trie {
std::copy_n(queries[i].query, queries[i].length,
queries_to_distribute.begin() + displ_length[target_pes[i].first]);
displ_length[target_pes[i].first] += queries[i].length;
lengths_to_distribute[displ[target_pes[i].first]++] = queries[i].length;
if (target_pes[i].first != target_pes[i].second) {
std::copy_n(queries[i].query, queries[i].length,
queries_to_distribute.begin() + displ_length[target_pes[i].second]);
displ_length[target_pes[i].second] += queries[i].length;
lengths_to_distribute[displ[target_pes[i].second]++] = queries[i].length;
}
}
}
Expand Down

0 comments on commit 90acc77

Please sign in to comment.