code: 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");
              }
          }
      }
docs: Initialize native PairHMM with the supplied args.
  
  @param args the args used to configure native PairHMM