  More and more HPC applications require fast and effective compression
techniques to handle large volumes of data in storage and transmission. Not
only do these applications need to compress the data effectively during
simulation, but they also need to perform decompression efficiently for post
hoc analysis. SZ is an error-bounded lossy compressor for scientific data, and
cuSZ is a version of SZ designed to take advantage of the GPU's power. At
present, cuSZ's compression performance has been optimized significantly while
its decompression still suffers considerably lower performance because of its
sophisticated lossless compression step -- a customized Huffman decoding. In
this work, we aim to significantly improve the Huffman decoding performance for
cuSZ, thus improving the overall decompression performance in turn. To this
end, we first investigate two state-of-the-art GPU Huffman decoders in depth.
Then, we propose a deep architectural optimization for both algorithms.
Specifically, we take full advantage of CUDA GPU architectures by using shared
memory on decoding/writing phases, online tuning the amount of shared memory to
use, improving memory access patterns, and reducing warp divergence. Finally,
we evaluate our optimized decoders on an Nvidia V100 GPU using eight
representative scientific datasets. Our new decoding solution obtains an
average speedup of 3.64X over cuSZ's Huffman decoder and improves its overall
decompression performance by 2.43X on average.
