Skip to content

Commit

Permalink
utils seed-pos: only create one reader for each genome batch
Browse files Browse the repository at this point in the history
  • Loading branch information
shenwei356 committed May 13, 2024
1 parent 2fc405b commit ae79537
Showing 1 changed file with 36 additions and 35 deletions.
71 changes: 36 additions & 35 deletions lexicmap/cmd/seed-pos.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,45 +159,46 @@ Extra columns:
}

// we can create genome reader pools
n := (maxOpenFiles - info.Chunks) / info.GenomeBatches
if n < 2 {
} else {
n >>= 1
if n > opt.NumCPUs {
n = opt.NumCPUs
}
if opt.Verbose || opt.Log2File {
log.Infof("creating genome reader pools, each batch with %d readers...", n)
}
poolGenomeRdrs = make([]chan *genome.Reader, info.GenomeBatches)
for i := 0; i < info.GenomeBatches; i++ {
poolGenomeRdrs[i] = make(chan *genome.Reader, n)
}
// n := (maxOpenFiles - info.Chunks) / info.GenomeBatches
// if n < 2 {
// } else {
// n >>= 1
// if n > opt.NumCPUs {
// n = opt.NumCPUs
// }
n := 1
if opt.Verbose || opt.Log2File {
log.Infof("creating genome reader pools, each batch with %d readers...", n)
}
poolGenomeRdrs = make([]chan *genome.Reader, info.GenomeBatches)
for i := 0; i < info.GenomeBatches; i++ {
poolGenomeRdrs[i] = make(chan *genome.Reader, n)
}

// parallelize it
var wg sync.WaitGroup
tokens := make(chan int, opt.NumCPUs)
for i := 0; i < info.GenomeBatches; i++ {
for j := 0; j < n; j++ {
tokens <- 1
wg.Add(1)
go func(i int) {
fileGenomes := filepath.Join(dbDir, DirGenomes, batchDir(i), FileGenomes)
rdr, err := genome.NewReader(fileGenomes)
if err != nil {
checkError(fmt.Errorf("failed to create genome reader: %s", err))
}
poolGenomeRdrs[i] <- rdr
// parallelize it
var wg sync.WaitGroup
tokens := make(chan int, opt.NumCPUs)
for i := 0; i < info.GenomeBatches; i++ {
for j := 0; j < n; j++ {
tokens <- 1
wg.Add(1)
go func(i int) {
fileGenomes := filepath.Join(dbDir, DirGenomes, batchDir(i), FileGenomes)
rdr, err := genome.NewReader(fileGenomes)
if err != nil {
checkError(fmt.Errorf("failed to create genome reader: %s", err))
}
poolGenomeRdrs[i] <- rdr

wg.Done()
<-tokens
}(i)
}
wg.Done()
<-tokens
}(i)
}
wg.Wait()

hasGenomeRdrs = true
}
wg.Wait()

hasGenomeRdrs = true
// }
}

// ---------------------------------------------------------------
Expand Down

0 comments on commit ae79537

Please sign in to comment.