On Sun, Aug 27, 2017 at 12:08:16PM -0600, Brent Pedersen wrote:
> hi, it seems that if I call without l hts_set_threads, I get, as
> expected 100% cpu for a process that is reading a BAM or CRAM.
> If I call it with nthreads = 1, I get 100% cpu.
> If I call it with nthreads = 2, I get 300% cpu.
Is this with htslib 1.5? The way the threading works is it spawns
additional threads to main for handling the compression and
decompression. So I'd expect 1 thread to mean up to 200% cpu
permitted.
For BAM files I see in bgzf_mt() this code:
if (n_threads < 1) return -1;
hts_tpool *p = hts_tpool_init(n_threads);
So in theory n_threads of 1 should be enough to be using the thread
pool. CRAM's equivalent is in cram_set_voption in cram/cram_io.c,
although I see that has an error here:
case CRAM_OPT_NTHREADS: {
int nthreads = va_arg(args, int);
if (nthreads > 1) {
if (!(fd->pool = hts_tpool_init(nthreads)))
return -1;
That should probably read "nthreads >= 1" for consistency.
Do you see any difference in BAM vs CRAM at nthreads of 1? Does
changing that line above to >= solve it for you with CRAM?
James
--
James Bonfield ([email protected]) | Hora aderat briligi. Nunc et Slythia Tova
| Plurima gyrabant gymbolitare vabo;
A Staden Package developer: | Et Borogovorum mimzebant undique formae,
https://sf.net/projects/staden/ | Momiferique omnes exgrabure Rathi.
--
The Wellcome Trust Sanger Institute is operated by Genome Research
Limited, a charity registered in England with number 1021457 and a
company registered in England with number 2742969, whose registered
office is 215 Euston Road, London, NW1 2BE.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Samtools-help mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/samtools-help