GPU Implementation of the Wavelet Tree
Marco Franzreb, Martin Burtscher, Stephan Rudolph
TL;DR
The paper addresses efficient GPU-based implementation of the wavelet tree to enable high-throughput access, rank, and select queries for compressed text indexing tasks such as fm-index-based genomics pipelines. It introduces GPU-optimized binary rank and select structures built atop bit arrays, paired with a top-down, radix-sort–driven wavelet-tree construction and multiple level-wise optimizations. Empirical results show substantial throughput improvements over CPU baselines and the SDSL library, particularly for large query workloads, while construction remains the main bottleneck due to data transfer overhead. The work outlines concrete future directions, including chunked construction to hide copy latency, a custom radix sort, and extending the approach to wavelet matrix and Huffman variants, underscoring the practical impact for large-scale genomic and text-processing tasks on modern GPUs.
Abstract
I present a new GPU implementation of the wavelet tree data structure. It includes binary rank and select support structures that provide at least 10 times higher throughput of binary rank and select queries than the best publicly available CPU implementations at comparable storage overhead. My work also presents a new parallel tree construction algorithm that, when excluding the time to copy the data from the CPU to the GPU, outperforms the current state of the art. The GPU implementation, given enough parallelism, processes access, rank, and select queries at least 2x faster than the wavelet tree implementation contained in the widely used Succinct Data Structure Library (SDSL), including the time necessary to copy the queries from the CPU to the GPU and the results back to the CPU from the GPU.
