diff --git a/public/c++/VectorPairHMM/LoadTimeInitializer.cc b/public/c++/VectorPairHMM/LoadTimeInitializer.cc index a1843141e..d403ff892 100644 --- a/public/c++/VectorPairHMM/LoadTimeInitializer.cc +++ b/public/c++/VectorPairHMM/LoadTimeInitializer.cc @@ -86,11 +86,13 @@ void LoadTimeInitializer::debug_close() m_filename_to_fptr.clear(); } -void LoadTimeInitializer::dump_sandbox(unsigned haplotypeLength, unsigned readLength, char* haplotypeBasesArray, testcase& tc) +void LoadTimeInitializer::dump_sandbox(testcase& tc) { + unsigned haplotypeLength = tc.haplen; + unsigned readLength = tc.rslen; ofstream& dumpFptr = m_sandbox_fptr; for(unsigned k=0;k=0;--i)//note the order - reverse of GET { diff --git a/public/c++/VectorPairHMM/pairhmm-1-base.cc b/public/c++/VectorPairHMM/pairhmm-1-base.cc index 805a46a0a..811a67b8c 100644 --- a/public/c++/VectorPairHMM/pairhmm-1-base.cc +++ b/public/c++/VectorPairHMM/pairhmm-1-base.cc @@ -8,14 +8,13 @@ using namespace std; - -#define BATCH_SIZE 5 #define RUN_HYBRID - - +vector results_vec; +vector tc_vector; int main(int argc, char** argv) { +#define BATCH_SIZE 5 if(argc < 2) { cerr << "Needs path to input file as argument\n"; @@ -41,16 +40,12 @@ int main(int argc, char** argv) assert(ifptr.is_open()); } - vector tc_vector; tc_vector.clear(); tc_vector.resize(BATCH_SIZE+4); - vector results_vec; results_vec.clear(); - results_vec.resize(tc_vector.size()); vector baseline_results; baseline_results.clear(); - baseline_results.resize(tc_vector.size()); - + bool all_ok = true; uint64_t total_time = 0; uint64_t baseline_time = 0; @@ -58,76 +53,92 @@ int main(int argc, char** argv) unsigned num_testcases = 0; //unsigned curr_batch_size = rand()%BATCH_SIZE + 4; //min batch size unsigned curr_batch_size = BATCH_SIZE; + uint64_t product = 0; + + testcase tc_in; + int break_value = 0; + tc_vector.clear(); while(1) { - int break_value = use_old_read_testcase ? read_testcase(&(tc_vector[num_testcases]), fptr) : - read_mod_testcase(ifptr,&(tc_vector[num_testcases]),true); + break_value = use_old_read_testcase ? read_testcase(&tc_in, fptr) : + read_mod_testcase(ifptr, &tc_in, true); + tc_vector.push_back(tc_in); if(break_value >= 0) ++num_testcases; - if(num_testcases == curr_batch_size || (break_value < 0 && num_testcases > 0)) - { - get_time(); -#pragma omp parallel for schedule(dynamic,chunk_size) num_threads(12) - for(unsigned i=0;i(&tc); - double result = 0; - if (result_avxf < MIN_ACCEPTED) { - double result_avxd = compute_full_prob(&tc); - result = log10(result_avxd) - log10(ldexp(1.0, 1020.0)); - } - else - result = (double)(log10f(result_avxf) - log10f(ldexpf(1.f, 120.f))); - baseline_results[i] = result; - } - baseline_time += get_time(); - for(unsigned i=0;i 1e-5 && rel_error > 1e-5) - { - cout << "Line "< 0)) + { + results_vec.resize(tc_vector.size()); + baseline_results.resize(tc_vector.size()); + + get_time(); +#pragma omp parallel for schedule(dynamic,chunk_size) num_threads(12) + for(unsigned i=0;i(&tc); + double result = 0; + if (result_avxf < MIN_ACCEPTED) { + double result_avxd = compute_full_prob(&tc); + result = log10(result_avxd) - log10(ldexp(1.0, 1020.0)); + } + else + result = (double)(log10f(result_avxf) - log10f(ldexpf(1.f, 120.f))); + baseline_results[i] = result; + } + baseline_time += get_time(); + for(unsigned i=0;i 1e-5 && rel_error > 1e-5) + { + cout << "Line "< NUMBER compute_full_prob(testcase *tc, NUMBER *before_last_log=0); double getCurrClk(); uint64_t get_time(struct timespec* x=0); +uint64_t diff_time(struct timespec& prev_time); //bit 0 is sse4.2, bit 1 is AVX enum ProcessorCapabilitiesEnum