diff --git a/PairHMM_JNI/Makefile b/PairHMM_JNI/Makefile index b86958a6c..e966caa90 100644 --- a/PairHMM_JNI/Makefile +++ b/PairHMM_JNI/Makefile @@ -1,4 +1,4 @@ -#OMPCFLAGS=-fopenmp +OMPCFLAGS=-fopenmp #OMPLDFLAGS=-lgomp #CFLAGS=-O2 -std=c++11 -W -Wall -march=corei7-avx -Wa,-q -pedantic $(OMPCFLAGS) -Wno-unknown-pragmas diff --git a/PairHMM_JNI/libJNILoglessPairHMM.so b/PairHMM_JNI/libJNILoglessPairHMM.so new file mode 100755 index 000000000..7a771922f Binary files /dev/null and b/PairHMM_JNI/libJNILoglessPairHMM.so differ diff --git a/PairHMM_JNI/pairhmm-1-base.cc b/PairHMM_JNI/pairhmm-1-base.cc index 3030b640e..3941c92de 100644 --- a/PairHMM_JNI/pairhmm-1-base.cc +++ b/PairHMM_JNI/pairhmm-1-base.cc @@ -19,6 +19,12 @@ LoadTimeInitializer g_load_time_initializer; #define BATCH_SIZE 10000 #define RUN_HYBRID +double getCurrClk() { + struct timeval tv ; + gettimeofday(&tv, NULL); + return (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; +} + int main(int argc, char** argv) { if(argc < 2) @@ -29,6 +35,10 @@ int main(int argc, char** argv) bool use_old_read_testcase = false; if(argc >= 3 && string(argv[2]) == "1") use_old_read_testcase = true; + unsigned chunk_size = 100; + if(argc >= 4) + chunk_size = strtol(argv[3],0,10); + initialize_function_pointers(); @@ -45,12 +55,24 @@ int main(int argc, char** argv) assert(ifptr.is_open()); } + vector tc_vector; + tc_vector.clear(); testcase tc; while(1) { int break_value = use_old_read_testcase ? read_testcase(&tc, fptr) : read_mod_testcase(ifptr,&tc,true); if(break_value < 0) break; + tc_vector.push_back(tc); + } + vector results_vec; + results_vec.clear(); + results_vec.resize(tc_vector.size()); + double start_time = getCurrClk(); +#pragma omp parallel for schedule(dynamic,chunk_size) num_threads(12) + for(unsigned i=0;i(&tc); baseline_result = log10(baseline_result) - log10(ldexp(1.0, 1020.0)); - cout << std::scientific << baseline_result << " "< 1e-5 && rel_error > 1e-5) + cout << std::scientific << baseline_result << " "<;