Skip to content

Tracking: fork PRs — descriptions, benefits, upstream status #9

Description

@nh13

Living index of the draft PRs carried in this fork (nh13/minibwa). Most began as contributions proposed to upstream lh3/minibwa; this fork keeps them as drafts against its own master for continued development, for use cases the fork cares about, and as a place to refine them before any future upstream discussion. Updated as PRs land or change.

PRs

PR What it does Benefit Upstream Output / validation
#1 feat/single-copy-parser Replaces kseq on the read path with fr_fastq, copying each FASTA/FASTQ field once into mb_bseq1_t instead of twice. I/O perf, conditional: ~10% wall reduction on read-bound 96-thread runs with a slow system zlib; ~0 with zlib-ng (read stage hides under mapping). lh3 issue (discussion) byte-identical SAM/PAF
#2 feat/submem-ablation Exposes --max-sub-occ / --min-sub-occ to ablate Pass-2 sub-SMEM reseeding. Research/measurement knob. No default-behavior change and no perf gain by itself; enables cost/benefit studies of Pass-2. lh3#12 bit-identical at defaults
#3 feat/soft-clip-penalty Adds -L INT[,INT] 5'/3' soft-clip penalty, matching bwa-mem. Compatibility feature. Lets minibwa reproduce bwa-mem clipping decisions; default 0,0 preserves current behavior. lh3#13 default = unchanged
#4 chore/meth-cleanups Adds a --meth bisulfite CI test + documents the conversion-strand flip and b_ts default. Maintainability / regression protection. No runtime change. lh3#19 confirmed still valid post-meth4; merges clean
#5 feat/inline-appenders Replaces per-record sprintf-lite calls in SAM/PAF formatting with inline byte appenders. CPU perf, high-core: ~39% CPU reduction in per-record formatting; matters when formatting is on the critical path (e.g. -t96); ~0 on small machines. lh3#32 byte-identical SAM/PAF
#6 perf/ll-sse-affine-reassoc-arm Reassociates the affine-gap recurrence in ksw2_ll (mate rescue) for arm64/NEON. Kernel perf, arm64-only: 1.13–1.17× on Graviton4, ~1.1–1.2× on Apple NEON; ~2% end-to-end on mate-rescue-heavy runs. lh3#37 identical scores; ⚠ a differential kernel harness gate on further kernel edits
#7 feat/alt-aware-liftgroup ALT-contig awareness via liftover groups (DRAGEN-style), not the bwa-mem .alt/postalt scheme. Correctness/feature for ALT-containing references. Inert without a .alt file. fork-only byte-identical to baseline when ALT off
#8 feat/index-threads-v2 Parallelizes the SA→BWT index build with OpenMP (parallel fill, fused SSA+inversion, byte-packed compaction, parallel rank-dict build). Index-build perf: ~1.8× on DH10B (4.69 Mbp) at 4–8 threads on a 12-core M-series; ~3× at 16 threads on hg38 (original measurement). lh3#8 · rebuilt on current master byte-identical .mbw across -t 1/2/4/8 (chrM, 2 Mbp synthetic, DH10B)
#10 perf/pe-encode-vectorize Splits the paired-end query encode (pe.c) so the nt4 base-translation gather no longer blocks auto-vectorization of the reverse-complement half. CPU perf, marginal: ~1.4× on the isolated PE query-encode at 150 bp; end-to-end neutral — encode is <1% of wall-clock. No intrinsics; just lets -O3 vectorize. fork-only byte-identical SAM on 6k sampled pairs + 1M real WGS-151bp pairs

Benefit legend

  • perf — speed/CPU/memory; note the regime where it applies (core count, I/O backend, arch), since several are conditional.
  • compatibility / feature — new capability or bwa-mem parity; usually inert or behavior-preserving by default.
  • maintainability — tests/docs; no runtime effect.

Notes

  • These are kept for the fork's own priorities — e.g. very high core counts, arm64, ablation studies, ALT-awareness — which may simply differ from upstream's.
  • --meth and the mimalloc gnu11 build fix are intentionally not carried here: both are already available upstream.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions