Speed up short reads filtering by processing multiple records together#32
Speed up short reads filtering by processing multiple records together#32imartayan wants to merge 2 commits into
Conversation
|
Many thanks @imartayan! |
|
Hi Igor, Thanks, |
08ec7de to
97868a0
Compare
|
Igor, apologies for sitting on this. Since Ragnar's perf PRs do you still think this is worthwhile? I wonder if I should attempt a rebase to test. |
Hey @bede!
This PR aims to speed up short reads filtering by packing multiple records until we reach a length threshold (currently 8000 bp) and processing this batch with a single call to
simd_minimizers. It introduces aRecordBuffertype that packs multiples sequences and headers in a singleVec<u8>, and uses this type internally inFilterProcessorto batch the operations. Currently, it is only implemented for theParallelProcessortrait and isn't used for paired reads yet.This might use a bit more copy than before since we have to keep some records longer (thus slightly slowing down long reads processing) but should bring a significant speedup for short reads.
Let me know if you're happy with the new performances and if you get consistent results with the previous implementation. If so, I can adapt the code to support paired reads as well.
Best,
Igor