public void initialize ( PairHMMNativeArguments args ) { if ( args == null ) { args = new PairHMMNativeArguments ( ) ; args . useDoublePrecision = false ; args . maxNumberOfThreads = 1 ; } if ( ! useFpga && gklUtils . isAvx512Supported ( ) ) { logger . info ( "Using CPU-supported AVX-512 instructions" ) ; } if ( args . useDoublePrecision && useFpga ) { logger . warn ( "FPGA PairHMM does not support double precision floating-point. Using AVX PairHMM" ) ; } if ( ! gklUtils . getFlushToZero ( ) ) { logger . info ( "Flush-to-zero (FTZ) is enabled when running PairHMM" ) ; } initNative ( ReadDataHolder . class , HaplotypeDataHolder . class , args . useDoublePrecision , args . maxNumberOfThreads , useFpga ) ; // log information about threads int reqThreads = args . maxNumberOfThreads ; if ( useOmp ) { int availThreads = gklUtils . getAvailableOmpThreads ( ) ; int maxThreads = Math . min ( reqThreads , availThreads ) ; logger . info ( "Available threads: " + availThreads ) ; logger . info ( "Requested threads: " + reqThreads ) ; if ( reqThreads > availThreads ) { logger . warn ( "Using " + maxThreads + " available threads, but " + reqThreads + " were requested" ) ; } } else { if ( reqThreads != 1 ) { logger . warn ( "Ignoring request for " + reqThreads + " threads; not using OpenMP implementation" ) ; } } }
Initialize native PairHMM with the supplied args .