Byte Split & Nibble Split
Byte Split and Nibble Split
The ByteSplit and NibbleSplit transforms deinterleave bytes or nibbles by significance to isolate predictable bit patterns into their own planes.
Byte Split
ByteSplit performs a round-robin deinterleave of a flat byte plane into n separate planes (where n is 2, 4, or 8).
For an input stream splitting into 4 planes, the bytes are routed as follows:
| Input | Element 0 | Element 1 | Element 2 | |||||||||
| Bytes | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 |
| Plane 0 | b0 | b4 | b8 | |||||||||
| Plane 1 | b1 | b5 | b9 | |||||||||
| Plane 2 | b2 | b6 | b10 | |||||||||
| Plane 3 | b3 | b7 | b11 | |||||||||
This transform typically follows a Bit Reorder step. By grouping bytes of the same significance together (e.g., placing all the exponent bytes of a float32 tensor into a single plane), the entropy coder sees highly skewed, compressible distributions rather than interleaved noise.
Nibble Split
NibbleSplit performs the same isolation at a 4-bit granularity. It splits each input byte [HHHH LLLL] into two separate one-nibble-per-byte planes:
- Plane 0 (High): The high nibble
(b >> 4) & 0x0F(often the exponent for FP8 types). - Plane 1 (Low): The low nibble
b & 0x0F(often the sign and mantissa).
This enables dtype-aware plane coding for sub-byte formats like FP8 and FP4.
References
- Martin Burtscher and Paruj Ratanaworabhan, "FPC: A High-Speed Compressor for Double-Precision Floating-Point Data", IEEE Transactions on Computers (2009). Link