From 0c63d6264f499feadc2beefb46045dfdde5f12d3 Mon Sep 17 00:00:00 2001 From: Karthik Gururaj Date: Mon, 27 Jan 2014 15:34:58 -0800 Subject: [PATCH] 1. Added synchronization block around loadLibrary in VectorLoglessPairHMM 2. Edited Makefile to use static libraries where possible --- .../sting/utils/pairhmm/VectorLoglessPairHMM.java | 14 ++++++++------ public/c++/VectorPairHMM/Makefile | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/protected/java/src/org/broadinstitute/sting/utils/pairhmm/VectorLoglessPairHMM.java b/protected/java/src/org/broadinstitute/sting/utils/pairhmm/VectorLoglessPairHMM.java index 192ebacc1..ef11600f0 100644 --- a/protected/java/src/org/broadinstitute/sting/utils/pairhmm/VectorLoglessPairHMM.java +++ b/protected/java/src/org/broadinstitute/sting/utils/pairhmm/VectorLoglessPairHMM.java @@ -104,15 +104,17 @@ public class VectorLoglessPairHMM extends JNILoglessPairHMM { * */ private native void jniInitializeClassFieldsAndMachineMask(Class readDataHolderClass, Class haplotypeDataHolderClass, long mask); - private static boolean isVectorLoglessPairHMMLibraryLoaded = false; + private static Boolean isVectorLoglessPairHMMLibraryLoaded = false; //The constructor is called only once inside PairHMMLikelihoodCalculationEngine public VectorLoglessPairHMM() { super(); - //Load the library and initialize the FieldIDs - if(!isVectorLoglessPairHMMLibraryLoaded) { - System.loadLibrary("VectorLoglessPairHMM"); - isVectorLoglessPairHMMLibraryLoaded = true; - jniInitializeClassFieldsAndMachineMask(JNIReadDataHolderClass.class, JNIHaplotypeDataHolderClass.class, enableAll); //need to do this only once + synchronized(isVectorLoglessPairHMMLibraryLoaded) { + //Load the library and initialize the FieldIDs + if(!isVectorLoglessPairHMMLibraryLoaded) { + System.loadLibrary("VectorLoglessPairHMM"); + isVectorLoglessPairHMMLibraryLoaded = true; + jniInitializeClassFieldsAndMachineMask(JNIReadDataHolderClass.class, JNIHaplotypeDataHolderClass.class, enableAll); //need to do this only once + } } } diff --git a/public/c++/VectorPairHMM/Makefile b/public/c++/VectorPairHMM/Makefile index e207dd4cc..6eefc3393 100644 --- a/public/c++/VectorPairHMM/Makefile +++ b/public/c++/VectorPairHMM/Makefile @@ -54,7 +54,7 @@ pairhmm-template-main: pairhmm-template-main.o $(COMMON_OBJECTS) $(CXX) $(OMPLFLAGS) -o $@ $^ $(LDFLAGS) libVectorLoglessPairHMM.so: $(LIBOBJECTS) - $(CXX) $(OMPLFLAGS) -shared -o $@ $(LIBOBJECTS) ${LDFLAGS} + $(CXX) $(OMPLFLAGS) -shared -o $@ $(LIBOBJECTS) ${LDFLAGS} -Wl,-Bstatic -limf -lsvml -lirng -Wl,-Bdynamic #-lintlc $(OBJECTS): %.o: %.cc