-
- Downloads
Bug fixes to multi-slice containers (mostly threading related).
1) When skipping past slices to find one that overlaps the start of our region, don't free container here (affects non-threading also). Fixes a crash reported by xiaofeng.liu@sentieon.com. 2) Don't cache cram_get_block_by_id values in the codec as multiple slices may be decoding in parallel using the same codec. This also removes the need for the reset function. Instead we use the already existing per-slice lookup array, but improved so it works (mostly without linear scan) on large ID aux blocks too. We could conceivably go the whole hog of using a hash table, but I think it's overkill and this is minimum code. 3) We now distinguish between fd->ctr, c->curr_slice (being consumed by get_seq calls) and fd->ctr_mt, c->curr_slice_mt (the read-ahead for dispatching thread tasks). Similarly for EOF / OOC (out of container) parameters. 4) Cram multi-threaded flush now does the freeing of containers better. 5) Added a larger input file of 1000 reads and a test using multi-slice containers. Also added the ability to debug the test harness with e.g. valgrind Set the TEST_PRECMD first. For example: TEST_PRECMD="valgrind --leak-check=full" make check
Showing
- cram/cram_codecs.c 5 additions, 50 deletionscram/cram_codecs.c
- cram/cram_codecs.h 0 additions, 3 deletionscram/cram_codecs.h
- cram/cram_decode.c 262 additions, 212 deletionscram/cram_decode.c
- cram/cram_index.c 2 additions, 0 deletionscram/cram_index.c
- cram/cram_io.c 47 additions, 11 deletionscram/cram_io.c
- cram/cram_io.h 10 additions, 2 deletionscram/cram_io.h
- cram/cram_structs.h 10 additions, 3 deletionscram/cram_structs.h
- test/ce#1000.sam 1005 additions, 0 deletionstest/ce#1000.sam
- test/test.pl 5 additions, 1 deletiontest/test.pl
Loading
Please register or sign in to comment