GPU Data Compression with Fast Bit-Boundary Parsing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current data compression methods for image data in graphics processing units (GPUs) face challenges in achieving high compression ratios while maintaining low computational complexity and efficient decoding, particularly due to the complexity of variable length encoding schemes and the need for precise bit boundary determination.
Innovation Solution
The method involves performing spatial decorrelation and entropy encoding on 2x2 sets of data values, where each set includes an indication of the number of bits used for each encoded data value, allowing for simplified decoding by clearly defining bit boundaries within a header section, and using a packing scheme to store the encoded data.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of substance
If variable length encoding schemes are used to compress data, then compression ratio is improved, but decoding complexity increases due to difficulty in determining bit boundaries
Solution Approach 1:
The patent segments the encoded data stream into fixed-size blocks (e.g., 64-bit blocks) and uses block-based encoding where each block contains a predetermined number of encoded coefficients. This segmentation allows the decoder to process data in fixed-size units with known boundaries, eliminating the complexity of determining bit boundaries in variable-length schemes while maintaining compression efficiency through selective precision encoding.
Solution Approach 2:
The patent changes the encoding parameter from variable-length bit representations to fixed-block structures with embedded precision metadata. Each block contains coefficients encoded with varying precision (full precision, half precision, quarter precision) but organized in fixed-size blocks, allowing the decoder to know exactly where each block begins and ends while still achieving compression through precision reduction.
2Loss of substance
If compression processes are made slower to achieve higher compression ratios, then compression efficiency is improved, but processing speed deteriorates
Solution Approach 1:
The patent performs preliminary analysis during the encoding phase to determine the precision requirements of each coefficient block before final encoding. By pre-determining which blocks can use reduced precision (half or quarter precision) versus full precision, the encoder optimizes compression ratio in advance, allowing the decoder to simply apply the predetermined precision levels without complex analysis, thus maintaining high processing speed.
3Loss of substance
If variable length encoding is used to achieve high compression, then compression ratio is improved, but memory bandwidth requirements increase due to complex decoding operations
Solution Approach 1:
The patent segments compressed data into fixed-size blocks with predetermined structures, allowing the GPU to fetch and process fixed amounts of data per operation. This block-based approach enables efficient memory bandwidth utilization by avoiding the need to fetch variable amounts of data for each decoded coefficient, as the block structure provides predictable memory access patterns.
4Loss of substance
If complex encoding schemes are used to improve compression, then compression ratio is improved, but decoding time increases
Solution Approach 1:
The patent changes the decoding approach by embedding precision metadata directly in the fixed-block structure, allowing the decoder to quickly determine the number of valid bits in each block without complex analysis. The decoder simply reads the precision indicator and processes the corresponding number of coefficients at the specified precision level, dramatically reducing decoding time compared to variable-length schemes where boundary detection is required.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
Data compression (and corresponding decompression) is used to compress blocks of data values involving processes including one or more of colour decorrelation, spatial decorrelation, entropy encoding and packing. The entropy encoding generates encoded data values which have variable sizes (in terms of the number of bits). The entropy encoding uses size indications for respective sets of data values to indicate the number of bits used for the encoded data values of the set. The size indications allow the encoded data values to be parsed quickly (e.g. in parallel).