Skip to content

Conversation

@jkbonfield
Copy link
Contributor

  1. Use the same two bytes at a time approach (seq2nibble) already used
    in CRAM for sequence.

  2. Ensure the quality c = s+33 statement doesn't trigger any type
    aliasing rules, permitting SIMD usage.

Benchmarks on 10 million NovaSeq records, reading from uncompressed
BAM (bgzf wrapped):

Read only: ./test/test_view -B /tmp/u.bam
        8993715174      cycles                    #    3.541 GHz
       18985281221      instructions              #    2.11  insn per cycle
       2.540721616 seconds time elapsed

Read + write SAM (develop):
       21910087899      cycles                    #    3.566 GHz
       55089448827      instructions              #    2.51  insn per cycle
       6.144628857 seconds time elapsed

Read + write SAM (this commit):
       18882595700      cycles                    #    3.558 GHz
       42301339830      instructions              #    2.24  insn per cycle
       5.308875782 seconds time elapsed

1. Use the same two bytes at a time approach (seq2nibble) already used
   in CRAM for sequence.

2. Ensure the quality c = s+33 statement doesn't trigger any type
   aliasing rules, permitting SIMD usage.

Benchmarks on 10 million NovaSeq records, reading from uncompressed
BAM (bgzf wrapped):

Read only: ./test/test_view -B /tmp/u.bam
        8993715174      cycles                    #    3.541 GHz
       18985281221      instructions              #    2.11  insn per cycle
       2.540721616 seconds time elapsed

Read + write SAM (develop):
       21910087899      cycles                    #    3.566 GHz
       55089448827      instructions              #    2.51  insn per cycle
       6.144628857 seconds time elapsed

Read + write SAM (this commit):
       18882595700      cycles                    #    3.558 GHz
       42301339830      instructions              #    2.24  insn per cycle
       5.308875782 seconds time elapsed
@daviesrob daviesrob merged commit 1bbcd02 into samtools:develop Feb 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants