1 Introduction
2 Related work
3 NUMA systems
4 Sequence aligners
5 Allocation strategies and data partitioning
5.1 Analysis of memory allocation
5.2 Data partitioning and replications strategies
Aligner | Version | Index (GB) |
---|---|---|
BOWTIE2 | 2.2.9 | 3.9 |
BWA-MEM | 0.7.12 | 5.1 |
GEM | 3.0 | 15.0 |
SNAP | 1.0.18 | 29.0 |
-
Partitioning (Original) Figure 3a: Memory banks are reserved ahead of the execution using the command membind. NUMA nodes local to Processor 0 and Processor 1 are explicitly selected for Instance 1 and for Instance 2 the NUMA nodes local to Processor 2 and Processor 3. This does not necessarily mean that both memory banks would be used; they are allocated and will be used if needed.
-
Partitioning + Localalloc Figure 3b: The difference between this technique and “Partitioning” is that the reservation of NUMA nodes is performed implicitly, using the command localalloc.
-
Partitioning + Interleave Figure 3c: As in “Partitioning”, when an interleave policy is used, the NUMA nodes are explicitly reserved, but the allocation that takes place is done in a round-robin fashion, guaranteeing that both memories are being used and that the index is equally distributed.
6 Experimental results
-
Synthetic benchmark [10]:
-
Segment extracted from NA12878 [25]:
6.1 Analysis of memory allocation policies
6.2 Data partitioning and replication strategies
Aligner | #Inst \(\times \) Threads | Policy | Name |
---|---|---|---|
2 \(\times \) 32t | Original | 2Inst_Original | |
4 \(\times \) 16t | 4Inst_Original | ||
8 \(\times \) 8t | 8Inst_Original | ||
BOWTIE2 | 2 \(\times \) 32t | Localalloc | 2Inst_Localalloc |
BWA-MEM | 4 \(\times \) 16t | 4Inst_Localalloc | |
2 \(\times \) 32t | Interleave | 2Inst_Interleave | |
4 \(\times \) 16t | 4Inst_Interleave | ||
SNAP | 2 \(\times \) 32t | Original | 2Inst_Original |
GEM | 2 \(\times \) 32t | Localalloc | 2Inst_Localalloc |
2 \(\times \) 32t | Interleave | 2Inst_Interleave |