diff --git a/PairHMM_JNI/LoadTimeInitializer.cc b/PairHMM_JNI/LoadTimeInitializer.cc index 946451952..534043371 100644 --- a/PairHMM_JNI/LoadTimeInitializer.cc +++ b/PairHMM_JNI/LoadTimeInitializer.cc @@ -27,8 +27,8 @@ LoadTimeInitializer::LoadTimeInitializer() //will be called when library is loa void LoadTimeInitializer::print_profiling() { double mean_val; - cout << "Compute time "< m_filename_to_fptr; }; diff --git a/PairHMM_JNI/Makefile b/PairHMM_JNI/Makefile index 7506279ef..9b461a833 100644 --- a/PairHMM_JNI/Makefile +++ b/PairHMM_JNI/Makefile @@ -1,5 +1,5 @@ -OMPCFLAGS=-fopenmp -OMPLFLAGS=-fopenmp #-openmp-link static +#OMPCFLAGS=-fopenmp +#OMPLFLAGS=-fopenmp #-openmp-link static #CFLAGS=-O2 -std=c++11 -W -Wall -march=corei7-avx -Wa,-q -pedantic $(OMPCFLAGS) -Wno-unknown-pragmas #CFLAGS=-O2 -W -Wall -march=corei7 -mfpmath=sse -msse4.2 -pedantic $(OMPCFLAGS) -Wno-unknown-pragmas @@ -11,7 +11,7 @@ COMMON_COMPILATION_FLAGS=$(JNI_COMPILATION_FLAGS) -O3 -W -Wall -pedantic $(OMPCF CC=icc CXX=icc -LDFLAGS=-lm $(OMPLDFLAGS) +LDFLAGS=-lm -lrt $(OMPLDFLAGS) BIN=libJNILoglessPairHMM.so pairhmm-template-main checker #BIN=checker @@ -54,7 +54,7 @@ pairhmm-template-main: pairhmm-template-main.o $(COMMON_OBJECTS) $(CXX) $(OMPLFLAGS) -o $@ $^ $(LDFLAGS) libJNILoglessPairHMM.so: $(LIBOBJECTS) - $(CXX) $(OMPLFLAGS) -shared -o $@ $(LIBOBJECTS) + $(CXX) $(OMPLFLAGS) -shared -o $@ $(LIBOBJECTS) ${LDFLAGS} $(OBJECTS): %.o: %.cc diff --git a/PairHMM_JNI/org_broadinstitute_sting_utils_pairhmm_JNILoglessPairHMM.cc b/PairHMM_JNI/org_broadinstitute_sting_utils_pairhmm_JNILoglessPairHMM.cc index 741957fc0..d575b8271 100644 --- a/PairHMM_JNI/org_broadinstitute_sting_utils_pairhmm_JNILoglessPairHMM.cc +++ b/PairHMM_JNI/org_broadinstitute_sting_utils_pairhmm_JNILoglessPairHMM.cc @@ -208,7 +208,7 @@ JNIEXPORT void JNICALL Java_org_broadinstitute_sting_utils_pairhmm_JNILoglessPai readBasesArrayVector.clear(); readBasesArrayVector.resize(numReads); #ifdef DO_PROFILING - start_time = getCurrClk(); + start_time = get_time(); #endif for(unsigned i=0;iGetArrayLength(likelihoodArray) == numTestCases); #endif #ifdef DO_PROFILING - start_time = getCurrClk(); + start_time = get_time(); #endif #pragma omp parallel for schedule (dynamic,10) private(tc_idx) num_threads(maxNumThreadsToUse) for(tc_idx=0;tc_idx tc_vector; tc_vector.clear(); testcase tc; - double total_time = 0; + uint64_t total_time = 0; while(1) { int break_value = use_old_read_testcase ? read_testcase(&tc, fptr) : read_mod_testcase(ifptr,&tc,true); @@ -55,7 +55,7 @@ int main(int argc, char** argv) vector results_vec; results_vec.clear(); results_vec.resize(tc_vector.size()); - double start_time = getCurrClk(); + get_time(); #pragma omp parallel for schedule(dynamic,chunk_size) num_threads(12) for(unsigned i=0;iihap = (int *) malloc(tc->haplen*sizeof(int)); tc->irs = (int *) malloc(tc->rslen*sizeof(int)); - //tc->q = (int *) malloc(sizeof(int) * tc->rslen); - //tc->i = (int *) malloc(sizeof(int) * tc->rslen); - //tc->d = (int *) malloc(sizeof(int) * tc->rslen); - //tc->c = (int *) malloc(sizeof(int) * tc->rslen); + tc->q = (char *) malloc(sizeof(char) * tc->rslen); + tc->i = (char *) malloc(sizeof(char) * tc->rslen); + tc->d = (char *) malloc(sizeof(char) * tc->rslen); + tc->c = (char *) malloc(sizeof(char) * tc->rslen); for (x = 0; x < tc->rslen; x++) { @@ -199,18 +199,22 @@ int read_mod_testcase(ifstream& fptr, testcase* tc, bool reformat) memcpy(tc->hap, tokens[0].c_str(), tokens[0].size()); tc->rs = new char[tokens[1].size()+2]; tc->rslen = tokens[1].size(); + tc->q = new char[tc->rslen]; + tc->i = new char[tc->rslen]; + tc->d = new char[tc->rslen]; + tc->c = new char[tc->rslen]; //cout << "Lengths "<haplen <<" "<rslen<<"\n"; memcpy(tc->rs, tokens[1].c_str(),tokens[1].size()); assert(tokens.size() == 2 + 4*(tc->rslen)); assert(tc->rslen < MROWS); for(unsigned j=0;jrslen;++j) - tc->q[j] = convToInt(tokens[2+0*tc->rslen+j]); + tc->q[j] = (char)convToInt(tokens[2+0*tc->rslen+j]); for(unsigned j=0;jrslen;++j) - tc->i[j] = convToInt(tokens[2+1*tc->rslen+j]); + tc->i[j] = (char)convToInt(tokens[2+1*tc->rslen+j]); for(unsigned j=0;jrslen;++j) - tc->d[j] = convToInt(tokens[2+2*tc->rslen+j]); + tc->d[j] = (char)convToInt(tokens[2+2*tc->rslen+j]); for(unsigned j=0;jrslen;++j) - tc->c[j] = convToInt(tokens[2+3*tc->rslen+j]); + tc->c[j] = (char)convToInt(tokens[2+3*tc->rslen+j]); if(reformat) { @@ -245,3 +249,14 @@ double getCurrClk() { gettimeofday(&tv, NULL); return (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; } + +uint64_t get_time(struct timespec* store_struct) +{ + static struct timespec start_time; + struct timespec curr_time; + struct timespec* ptr = (store_struct == 0) ? &curr_time : store_struct; + clock_gettime(CLOCK_REALTIME, ptr); + uint64_t diff_time = (ptr->tv_sec-start_time.tv_sec)*1000000000+(ptr->tv_nsec-start_time.tv_nsec); + start_time = *ptr; + return diff_time; +} diff --git a/PairHMM_JNI/utils.h b/PairHMM_JNI/utils.h index 3f7c2ff69..cc020ba40 100644 --- a/PairHMM_JNI/utils.h +++ b/PairHMM_JNI/utils.h @@ -27,4 +27,5 @@ template NUMBER compute_full_prob(testcase *tc, NUMBER *before_last_log=0); void initialize_function_pointers(); double getCurrClk(); +uint64_t get_time(struct timespec* x=0); #endif diff --git a/protected/java/src/org/broadinstitute/sting/utils/pairhmm/JNILoglessPairHMM.java b/protected/java/src/org/broadinstitute/sting/utils/pairhmm/JNILoglessPairHMM.java index f926e4bd6..6cbd3510c 100644 --- a/protected/java/src/org/broadinstitute/sting/utils/pairhmm/JNILoglessPairHMM.java +++ b/protected/java/src/org/broadinstitute/sting/utils/pairhmm/JNILoglessPairHMM.java @@ -68,8 +68,8 @@ import java.util.HashMap; public class JNILoglessPairHMM extends LoglessPairHMM { private static final boolean debug = false; //simulates ifdef - private static final boolean verify = debug || true; //simulates ifdef - private static final boolean debug0_1 = true; //simulates ifdef + private static final boolean verify = debug || false; //simulates ifdef + private static final boolean debug0_1 = false; //simulates ifdef private static final boolean debug1 = false; //simulates ifdef private static final boolean debug2 = false; private static final boolean debug3 = false;