Multithreaded path cover / local haplotypes GBWT construction.
Description
This PR updates GBWTGraph to include unified support for multithreaded GBWT construction (see jltsiren/gbwtgraph#36). The main idea is to partition the graph into GBWT construction jobs using gbwt_construction_jobs(), create the final metadata with MetadataBuilder, pass reference paths with assign_paths() and insert_paths(), build partial GBWTs for the jobs in parallel, merge the GBWTs, and add metadata from MetadataBuilder.
Path cover / local haplotypes GBWT construction uses this now, both in vg gbwt and vg autoindex. As a byproduct, we get parallelization for them.
GBWT/GBZ construction from GFA already used this.
Haplotype sampling in vg haplotypes uses this to the extent possible.
rebuild_gbwt() still uses the old parallelization scheme, as it's built into the interface.
Changelog Entry
To be copied to the draft changelog by merger:
Description
This PR updates GBWTGraph to include unified support for multithreaded GBWT construction (see jltsiren/gbwtgraph#36). The main idea is to partition the graph into GBWT construction jobs using
gbwt_construction_jobs()
, create the final metadata withMetadataBuilder
, pass reference paths withassign_paths()
andinsert_paths()
, build partial GBWTs for the jobs in parallel, merge the GBWTs, and add metadata fromMetadataBuilder
.vg gbwt
andvg autoindex
. As a byproduct, we get parallelization for them.vg haplotypes
uses this to the extent possible.rebuild_gbwt()
still uses the old parallelization scheme, as it's built into the interface.