Skip to main content
Fig. 4 | Algorithms for Molecular Biology

Fig. 4

From: Bitpacking techniques for indexing genomes: I. Hash tables

Fig. 4

Difference schemes for vectorized differential coding. These schemes show the bitstream and the metainformation values for a given block, with \(p_{0}\) and \(p_{1}\) indicating the positions in the bitstream where this block and the next block begin, and \(x_{0}\) and \(x_{64}\) indicating the prefix sum for the two blocks. These schemes show how the original ascending values x in a block can be converted to difference values d. a Unidirectional cyclic differences as used in BP128, except shown here for a block size of 64. The difference \(d_i\) involves the original values \(x_{i+1}\) and \(x_{i-3}\). An exception holds for the first row, where differences are taken relative to \(x_0\), the prefix sum for the block. Dashed boxes indicate the first two processing steps for the vertical layout. b Bidirectional cyclic difference scheme, which matches the unidirectional scheme for the first half of the block, but computes differences relative to \(x_{64}\) for the second half of the block. Dashed boxes indicate the first two processing steps for column 2. In both parts, shaded regions correspond to the values needed to compute the circled values \(x_{43}\), requiring 3 loads for the unidirectional scheme and 2 loads for the bidirectional scheme. The colors correspond to those in Fig. 2c, d. Q1–Q4 indicate quarter blocks, and are annotated with the total number of SIMD loads required

Back to article page