Skip to content
Snippets Groups Projects
Commit d5d99992 authored by Recolic Keghart's avatar Recolic Keghart
Browse files

DO NOT BUILD: working debug

parent 9ba13700
No related branches found
No related tags found
No related merge requests found
Pipeline #31 failed with stages
in 7 minutes and 5 seconds
......@@ -62,7 +62,9 @@ public:
return std::make_pair(true, *res);
}
else {
rlib::println("start rpc get ->", target_rank);
auto res = upcxx::rpc(target_rank, std::bind(&this_type::do_rpc_get, this, k)).wait();
rlib::println("end rpc get ->", target_rank);
if(not res.success)
throw std::runtime_error("RPC get failed.");
return std::make_pair(res.found, res.val);
......@@ -107,7 +109,9 @@ private:
}
auto do_rpc_get(key_type k) const {
try {
rlib::println("do_get begin");
const auto *res = do_get(k, true);
rlib::println("do_get end");
if(res)
return rpc_get_result{true, true, *res};
else
......@@ -128,6 +132,7 @@ private:
void do_set(const key_type &k, const value_type &v) {
auto &target_ls = get_slot(k);
{
//rlib::println("do_get slot size", target_ls.size());
for(auto &ele : target_ls) {
if(equal_engine_type{}(ele.first, k)) {
ele.second = v;
......@@ -143,6 +148,7 @@ private:
const value_type *do_get(const key_type &k, bool no_throw = false) const {
const auto &target_ls = get_slot(k);
{
//rlib::println("do_get slot size", target_ls.size());
for(const auto &ele : target_ls) {
if(equal_engine_type{}(ele.first, k))
return &ele.second;
......
......@@ -23,9 +23,12 @@ struct HashMap {
}
bool insert(const kmer_pair &kmer) {
++counter;
rlib::println("inserting hash", std::hash<pkmer_t>{}(kmer.kmer));
return real_db.set_if_is_mine(kmer.kmer, kmer);
}
bool find(const pkmer_t &key_kmer, kmer_pair &val_kmer) {
rlib::println("finding hash", std::hash<pkmer_t>{}(key_kmer));
auto res = real_db.get_if_is_mine(key_kmer);
if(res.first)
val_kmer = res.second;
......@@ -35,6 +38,7 @@ struct HashMap {
return real_db._debug_get_owner(key_kmer);
}
size_t counter = 0;
private:
kv_store<pkmer_t, kmer_pair> real_db;
};
......
......@@ -6,6 +6,7 @@
#include <numeric>
#include <cstddef>
#include <chrono>
#include <thread>
#include <upcxx/upcxx.hpp>
#include "kmer_t.hpp"
......@@ -14,6 +15,7 @@
#include "upcxx_dist_vector.hpp"
#include "butil.hpp"
using namespace std::chrono_literals;
int main(int argc, char **argv) {
upcxx::init();
......@@ -100,28 +102,33 @@ int main(int argc, char **argv) {
}
upcxx::barrier();
uint64_t contigs_size = contigs.get_rows();
rlib::println("rank", upcxx::rank_me(), "contigs_size is", contigs_size);
rlib::println("rank", upcxx::rank_me(), "contigs_size is", contigs_size, "hash_table size", hashmap.counter);
if(upcxx::rank_me() == 0)
std::this_thread::sleep_for(1h); // for debug
// the following will be done by every processor
bool all_done = false;
while (all_done == false) {
all_done = true;
rlib::println("rank", upcxx::rank_me(), "enter loop");
for (auto row = 0; row < contigs_size; ++row){
rlib::println("rank", upcxx::rank_me(), "fuckA");
kmer_pair this_contig_end = contigs.back_of_row(row);
if(this_contig_end.forwardExt() == 'F')
continue; // already done.
else
rlib::println("rank", upcxx::rank_me(), "fuckB");
if(this_contig_end.forwardExt() != 'F') {
all_done = false;
kmer_pair next;
rlib::println("debug: owner of next kmer is ", hashmap._debug_get_owner(this_contig_end.next_kmer()));
// TODO FIXME BUG: SHOULD FOUND BUT DOESN"T at rank 1
bool isMine = hashmap.find(this_contig_end.next_kmer(), next);
if (isMine){
contigs.push_to_row(row, next);
kmer_pair next;
rlib::println("rank", upcxx::rank_me(), "debug: owner of next kmer is ", hashmap._debug_get_owner(this_contig_end.next_kmer()));
// TODO FIXME BUG: SHOULD FOUND BUT DOESN"T at rank 1
bool isMine = hashmap.find(this_contig_end.next_kmer(), next);
rlib::println("rank", upcxx::rank_me(), "isMine=", isMine);
if (isMine)
contigs.push_to_row(row, next);
}
}
rlib::println("All contig iterated. next round...");
}
rlib::println("rank", upcxx::rank_me(), "passed main loop");
auto end_read = std::chrono::high_resolution_clock::now();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment