Commit 79330547 authored by Steffen Möller's avatar Steffen Möller
Browse files

New upstream version 2019-05-12

parent 9678b7c6
Loading
Loading
Loading
Loading
+254 −0
Original line number Diff line number Diff line
2019-05-12  twu
    * gmap.c: Adding support for avx512bw
    * gsnap_select.c, gsnapl_select.c: Adding support for avx512bw
    * gsnap.c: Changed default parameter for --max-mismatches for DNA-seq
    * cpuid.c, cpuid.h, gmap_select.c, gmapl_select.c: Adding support for
      avx512bw
    * Makefile.gsnaptoo.am: Adding programs for avx512bw
    * configure.ac: Adding option for AVX512BW SIMD
    * ax_cpuid_intel.m4, ax_cpuid_non_intel.m4: Adding test for AVX512BW support
    * ax_ext.m4: Adding commands for AVX512BW
    * univdiagpool.c: Adding assertions
    * substring.c: Checking against substrings on the wrong chromosome
    * stage1hr.c: Commenting out extended algorithm, which can cause problems
      with repetitive reads
    * output.c: Consider excessive output to be a fail for the purpose of the
      --nofails flag.
    * merge-uint8.c: Fixed SIMD command for AVX512 machines
2019-03-25  twu
    * extension-search.c, extension-search.h: Implemented extension of elt sets
      in the opposite direction
2019-03-19  twu
    * segment-search.c: For alignments straddling a chromosome, recomputing
      querypos and queryend to cover the new chromosome
    * gsnap.c: Using new interface for Path_solve_setup
    * path-solve.h: New interface for Path_solve_setup
    * path-solve.c: Not allowing splices on circular chromosomes
    * concordance.c: Using field sensedir_for_concordance
    * stage3hr.c, stage3hrdef.h: Now using fields sensedir_for_concordance and
      sensedir
    * samprint.c: Removed references to Stage3end_sensedir_distant_guess
2019-03-16  twu
    * Makefile.gsnaptoo.am, VERSION, config.site.rescomp.tst, distant-dna.c,
      distant-dna.h, distant-rna.c, distant-rna.h, gsnap.c, index.html,
      method.c, method.h, output.c, path-solve.c, samprint.c, samprint.h,
      splice.c, splice.h, src, stage1hr.c, stage3hr.c, stage3hr.h,
      stage3hrdef.h, substring.c, substring.h, terminal.c, trunk: Merged
      revisions 218560 through 218674 from branches/2019-03-07-distant-dna to
      implement distant splicing and to fix some bugs in spliced alignments
    * genome128_hr.c: Added comment
2019-03-07  twu
    * distant-dna.h: Initial import
    * distant-dna.c: Initial import
2019-03-05  twu
    * gsnap.c: Added option --use-local-hash
    * VERSION, config.site.rescomp.tst, src, trunk: Updated for latest version
2019-03-04  twu
    * localdb.c, localdb.h, path-solve.c: Merged revisions 218528 and 218529
      from branches/2019-03-04-fix-repetitive to limit recursive procedures
    * stage3hr.c: Fixed debugging statements
    * stage1hr.c: Added debugging statements
    * segment-search.c: Fixed debugging statement
    * kmer-search.c: Added debugging statements
    * gsnap.c: Removed variables relating to stage2 suboptimal alignments
2019-03-02  twu
    * path-solve.c: For compute_qstart_paths and compute_qend_paths, added a
      max_depth criterion, and checking for repetitive positions
    * stage3hr.c: Checking nmismatches when we are checking all assertions
    * path-solve.c: Revising qstart of middle segment if an insertion is
      present.  Revised code for computing ninserts
2019-03-01  twu
    * path-solve.c: Fixed addition of alts substring to best path from
      all_child_paths, rather than to path
2019-02-27  twu
    * VERSION, config.site.rescomp.prd, index.html: Updated for latest version
    * substring.c: In trimming at ends without splicing, extending to the end if
      nmismatches is 0
    * stage3hr.c: For score_within_trims, adding a penalty for long ambiguous
      ends
    * substring.c: Restored previous algorithm for computing trim at ends with
      no splice. For alts with good splice probability, counting substring as
      nmatches rather than amb.  For alts with poor splice probability, counting
      substring as amb.
2019-02-25  twu
    * path-solve.c: Fixed cases in compute_qstart_paths and compute_qend_paths
      where terminalp was not being set
2019-02-22  twu
    * concordance.c, concordance.h, config.site.rescomp.prd,
      config.site.rescomp.tst, distant-rna.c, distant-rna.h, extension-search.c,
      extension-search.h, genome128_hr.c, gsnap.c, kmer-search.c, kmer-search.h,
      ladder.c, path-solve.c, path-solve.h, resulthr.c, segment-search.c,
      segment-search.h, src, stage1hr.c, stage3hr.c, stage3hr.h, stage3hrdef.h,
      substring.c, substring.h, terminal.c, terminal.h, trunk: Merged revisions
      218419 through 218472 from branches/2019-02-19-restore-fusions
    * index.html: Updated for latest version
2019-02-19  twu
    * stage1hr.c: Using user_maxlevel_float for final filtering, and not for
      searching
    * concordance.c: Using score_ignore_trim instead of score_posttrim
    * gsnap.c: Added option for --ignore-trim-in-filtering
    * stage3hrdef.h: Changed field score_posttrim to score_ignore_trim
    * stage3hr.c, stage3hr.h: Changed Stage3hr_filter_coverage to
      Stage3hr_filter, which accounts for number of mismatches.  Added parameter
      ignore_trim_p.  Changed score_posttrim to score_ignore_trim, and computing
      this to be lower than score
    * terminal.c: Using Univ_IIT_get_chrnum and new interface to Substring_new
    * substring.c, substring.h: Substring_new now assumes that chrnum was set
      correctly
    * stage3hr.c: Using new interface to Substring_new
    * stage1hr.c: Using new interface to Segment_identify procedures
    * segment-search.c, segment-search.h: Handling alignments straddling more
      than two chromosomes.  Removed plusp as a parameter
    * kmer-search.c: Using Univ_IIT_get_chrnum.  Using new interface to
      Substring_new
    * iit-read-univ.c, iit-read-univ.h: Implemented Univ_IIT_update_chrnum and
      Univ_IIT_get_chrnum
    * extension-search.c: Calling Univ_IIT_update_chrnum to set chrnum
2019-02-18  twu
    * stage3hr.c: If qend <= qstart, do not calculate number of nmismatches,
      which is not defined.  For nmatches, do not penalize for indels
    * substring.c: If trimming changes querystart or queryend, recalculate
      nmismatches
2019-02-16  twu
    * stage1hr.c: Skipping alignment when querylength is less than index1part +
      index1interval - 1
    * segment-search.c: When advancing chrnum for straddled alignments, checking
      that we do not go past the last chromosome
2019-02-15  twu
    * VERSION: Updated version number
    * indexdb-write.c: Added code for comparing counts with compression and
      counts without compression
    * bitpack64-write.c, bitpack64-write.h: For huge genomes, using an array of
      UINT8 for calculations of genome position.  Printing strerror for
      file-related errors.
    * substring.c: For circular chromosomes, checking if the entire substring
      resides in the next chromosome and returning the circularpos at that query
      position
    * segment-search.c: When a straddle calls for advancing to a later
      chromosome, using local data structures instead of mixing them with a call
      to Univ_IIT_get_one
    * path-solve.c: Using subtract_bounded to subtract the local1part amount
    * localdb.c: In Localdb_get_diagonals, checking for low < high, since low ==
      high can occur when a substring is at the beginning or end of a chromosome
    * cigar.c: Checking for an initial M to be printed before printing any indel
      or splice
2019-02-13  twu
    * intersect-large.c, intersect.c: No longer initializing last_diagonal to be
      0, and comparing against it, which fails if a diagonal is 0.  Instead,
      checking explicitly for the first case
2019-01-31  twu
    * gsnap.c, path-solve.c, path-solve.h, segment-search.c, segment-search.h,
      stage1hr.c, stage1hr.h, stage3hr.c, stage3hr.h: Removed GMAP parameters
      from GSNAP code
    * VERSION, archive.html, config.site.rescomp.prd, index.html: Updated for
      latest version
    * intersect-large.c, intersect.c: In Intersect_approx_lower and
      Intersect_approx_higher, ignoring duplicates of diagonals0, in order to
      ensure that the result is in ascending order
    * substring.c: Using plusp in interpreting mandatory_trim_querystart and
      mandatory_trim_queryend
    * path-solve.c: When a mismatch extends a diagonal, computing the number of
      mismatches at that time
    * merge-diagonals-simd-uint4.c: Added code for checking that inputs are in
      ascending order
    * stage3hr.c: Improved tradeoffs between nmatches, nmatches_posttrim, splice
      score, nsegments, insertlength, and outerlength in Stage3end_optimal_score
      and Stage3pair_optimal_score_final
    * extension-search.c, segment-search.c: Handling the case where the middle
      or anchor diagonal straddles two chromosomes
2019-01-23  twu
    * Makefile.gsnaptoo.am, VERSION, changepoint.h, compress.c, concordance.h,
+1 −1
Original line number Diff line number Diff line
2019-01-24
 No newline at end of file
2019-05-12
 No newline at end of file
+10 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ AC_LANG_PUSH([C])
         ax_cv_cpu_has_avx2_ext=yes],
	[AC_MSG_RESULT(no)])

# Test for AVX512 support
# Test for AVX512 (F and CD) support
  AC_MSG_CHECKING(for avx512 support)
  AC_RUN_IFELSE(
	[AC_LANG_PROGRAM([[#include <immintrin.h>]],
@@ -55,6 +55,15 @@ AC_LANG_PUSH([C])
         ax_cv_cpu_has_avx512_ext=yes],
	[AC_MSG_RESULT(no)])

# Test for AVX512BW and VL support (not in Knights Landing or Knights Mill)
  AC_MSG_CHECKING(for avx512bw and avx512vl support)
  AC_RUN_IFELSE(
	[AC_LANG_PROGRAM([[#include <immintrin.h>]],
                         [[return _may_i_use_cpu_feature(_FEATURE_AVX512BW | _FEATURE_AVX512VL) ? 0 : 9;]])],
        [AC_MSG_RESULT(yes)
         ax_cv_cpu_has_avx512bw_ext=yes],
	[AC_MSG_RESULT(no)])

AC_LANG_POP([C])
])
+34 −2
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ static void run_cpuid (uint32_t eax, uint32_t ecx, uint32_t *abcd) {
	[AC_MSG_RESULT(no)])


# Test for AVX512 support
# Test for AVX512 (F and CD) support
  AC_MSG_CHECKING(for avx512 support)
  AC_RUN_IFELSE(
	[AC_LANG_PROGRAM([[#include <stdint.h>
@@ -175,7 +175,7 @@ static int check_xcr0_zmm () {
 } else if (!check_xcr0_zmm()) {
   return 8;
 } else if ((abcd[/*EBX*/1] & avx512_mask) != avx512_mask) {
   return 0; /* Should fail here, but book/Web examples skip */
   return 0; /* Should be false here, but book/Web examples skip this test */
 } else {
   return 0;
 }]])],
@@ -183,5 +183,37 @@ static int check_xcr0_zmm () {
         ax_cv_cpu_has_avx512_ext=yes],
	[AC_MSG_RESULT(no)])


# Test for AVX512BW and VL support
  AC_MSG_CHECKING(for avx512bw and avx512vl support)
  AC_RUN_IFELSE(
	[AC_LANG_PROGRAM([[#include <stdint.h>
static void run_cpuid (uint32_t eax, uint32_t ecx, uint32_t *abcd) {
  uint32_t ebx, edx;
  __asm__ ("cpuid" : "+b" (ebx), "+a" (eax), "+c" (ecx), "=d" (edx));
  abcd[0] = eax; abcd[1] = ebx; abcd[2] = ecx; abcd[3] = edx;}
static int check_xcr0_zmm () {
  uint32_t xcr0;
  uint32_t zmm_ymm_xmm = ((7 << 5) | (1 << 2) | (1 << 1));
  __asm__ ("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx");
  return ((xcr0 & zmm_ymm_xmm) == zmm_ymm_xmm);}]],
[[uint32_t abcd[4];
 uint32_t osxsave_mask = (1 << 27);
 uint32_t avx512bw_vl_mask = (/*512BW*/(1 << 30) | /*512VL*/(1 << 31));
 run_cpuid(1, 0, abcd);
 if ((abcd[/*ECX*/2] & osxsave_mask) != osxsave_mask) {
   return 9;
 } else if (!check_xcr0_zmm()) {
   return 8;
 } else if ((abcd[/*EBX*/1] & avx512bw_vl_mask) != avx512bw_vl_mask) {
   return 9;
 } else {
   return 0;
 }]])],
        [AC_MSG_RESULT(yes)
         ax_cv_cpu_has_avx512bw_ext=yes],
	[AC_MSG_RESULT(no)])


AC_LANG_POP([C])
])
+6 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#
#     HAVE_MMX / HAVE_SSE / HAVE_SSE2 / HAVE_SSE3 / HAVE_SSSE3 / HAVE_SSE4_1 / HAVE_SSE4_2 / HAVE_AVX
#
#
# LICENSE
#
#   Copyright (c) 2007 Christophe Tournayre <turn3r@users.sourceforge.net>
@@ -342,8 +343,10 @@ AC_DEFUN([AX_EXT],
        CFLAGS=
        if test x"$ax_cv_c_compiler_vendor" = xintel; then
          TEST_CFLAGS="-xCOMMON-AVX512"
        elif test x"$ax_cv_cpu_has_avx512bw_ext" != xyes; then
          TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd -mno-avx512bw -mno-avx512vl"
        else
          TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd"
          TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd -mavx512bw -mavx512vl"
        fi
        AX_CHECK_COMPILE_FLAG([$TEST_CFLAGS], [ax_cv_compile_avx512_ext=yes], [ax_cv_ext_compile_problem=yes])
        if test x"$ax_cv_compile_avx512_ext" != xyes; then
@@ -368,6 +371,8 @@ AC_DEFUN([AX_EXT],
	      SIMD_SSE4_2_CFLAGS="$SIMD_SSE4_2_CFLAGS -mno-avx512f -mno-avx512cd"
	      SIMD_AVX2_CFLAGS="$SIMD_AVX2_CFLAGS -mno-avx512f -mno-avx512cd"
            fi
#  	    AC_DEFINE(HAVE_AVX512,1,[Define to 1 if you support AVX512 (Advanced Vector Extensions 512) instructions]) -- Defines run-type
#  	    AC_DEFINE(HAVE_AVX512BW,1,[Define to 1 if you support AVX512BW (Advanced Vector Extensions 512) BW instructions]) -- Defines run-type
          fi
        fi
      fi
Loading