eyalroz / libgiddy

Giddy - A lightweight GPU decompression library
BSD 3-Clause "New" or "Revised" License
42 stars 9 forks source link

Support segmentation and non-segmentation in more decompression kernels #13

Open eyalroz opened 7 years ago

eyalroz commented 7 years ago

(copied from Issue #163 in the kernel testbench)

At the moment, most of our decompressors can be used with segment anchors or without them - but not both:

Scheme Segmented Unsegmented
BITMAP N/A 🗹
RPE 🗹 🗷
DICT 🗷 🗹
FOR 🗹 🗷
MODEL 🗷 🗹
NS N/A 🗹
NSV 🗹 🗷
RPE 🗹 🗷
RLE 🗹 🗷

First, segment execution is important even as a single option; so MODEL and DICT should definitely have it. Then, it would be nice to support, at least for the sake of completeness, the unsegmented versions of these schemes, especially DELTA for benchmarking purposes, and RPE for cases where the overall support of the column is so small that segmentation is mostly a hassle.

eyalroz commented 7 years ago

For the DICT scheme, we'll need to choose between uniformity and flexibility.

In the uniform extreme of the spectrum, we'll have:

And in the flexible extreme (or close to it) we'll have:

I'm leaning toward the more flexible extreme.