From d081c19178bfd8fdfb78eaf7643b7179444b16b2 Mon Sep 17 00:00:00 2001 From: Karthik Gururaj Date: Sun, 9 Feb 2014 18:05:35 -0800 Subject: [PATCH] Minor: added support in C++ sandbox to choose implementation and check from command line --- public/c++/VectorPairHMM/pairhmm-1-base.cc | 26 ++++++++++-- public/c++/VectorPairHMM/utils.cc | 49 ++++++++++------------ public/c++/VectorPairHMM/utils.h | 2 +- 3 files changed, 46 insertions(+), 31 deletions(-) diff --git a/public/c++/VectorPairHMM/pairhmm-1-base.cc b/public/c++/VectorPairHMM/pairhmm-1-base.cc index 8b686d5ea..78dbe296d 100644 --- a/public/c++/VectorPairHMM/pairhmm-1-base.cc +++ b/public/c++/VectorPairHMM/pairhmm-1-base.cc @@ -18,10 +18,28 @@ int main(int argc, char** argv) if(argc >= 3 && string(argv[2]) == "1") use_old_read_testcase = true; unsigned chunk_size = 10000; - if(argc >= 4) - chunk_size = strtol(argv[3],0,10); - - do_compute(argv[1], use_old_read_testcase, chunk_size); + bool do_check = true; + uint64_t mask = ~(0ull); + for(int i=3;i; } else - if(is_sse41_supported() && (mask & (1<< SSE41_CUSTOM_IDX))) + if(is_sse41_supported() && (mask & ((1<< SSE41_CUSTOM_IDX) | (1<; @@ -299,10 +299,9 @@ uint64_t diff_time(struct timespec& prev_time) } //#define DUMP_COMPUTE_VALUES 1 -#define CHECK_VALUES 1 #define BATCH_SIZE 10000 #define RUN_HYBRID -void do_compute(char* filename, bool use_old_read_testcase, unsigned chunk_size) +void do_compute(char* filename, bool use_old_read_testcase, unsigned chunk_size, bool do_check) { FILE* fptr = 0; ifstream ifptr; @@ -322,10 +321,7 @@ void do_compute(char* filename, bool use_old_read_testcase, unsigned chunk_size) uint64_t vector_compute_time = 0; uint64_t baseline_compute_time = 0; uint64_t num_double_calls = 0; - bool all_ok = true; -#ifndef CHECK_VALUES - all_ok = false; -#endif + bool all_ok = do_check ? true : false; while(1) { int break_value = use_old_read_testcase ? read_testcase(&tc, fptr) : read_mod_testcase(ifptr,&tc,true); @@ -360,29 +356,30 @@ void do_compute(char* filename, bool use_old_read_testcase, unsigned chunk_size) results_vec[i] = result; } vector_compute_time += diff_time(start_time); -#ifdef CHECK_VALUES - get_time(&start_time); + if(do_check) + { + get_time(&start_time); #pragma omp parallel for schedule(dynamic,chunk_size) - for(unsigned i=0;i(&tc); - baseline_result = log10(baseline_result) - log10(ldexp(1.0, 1020.0)); - baseline_results_vec[i] = baseline_result; - } - baseline_compute_time += diff_time(start_time); - for(unsigned i=0;i 1e-5 && rel_error > 1e-5) + for(unsigned i=0;i(&tc); + baseline_result = log10(baseline_result) - log10(ldexp(1.0, 1020.0)); + baseline_results_vec[i] = baseline_result; + } + baseline_compute_time += diff_time(start_time); + for(unsigned i=0;i 1e-5 && rel_error > 1e-5) + { + cout << std::scientific << baseline_result << " "<