关于cuda:针对少量数据的良好无损压缩算法?

Good lossless compression algorithm for small amount of data?

我正在寻找一种很好的无损压缩算法,它可以非常快速地压缩/解压缩少量数据,比如0到1之间的256个浮点。我知道RLE,但也许还有更好的。

背景是我正在使用CUDA处理体积数据(例如3843个浮点数),而不是显式存储卷,我希望将其划分为8x8x4大小的块并存储压缩的块。CUDA内核(每个块由8x8x4线程组成)解压缩相应的块,对其进行处理并再次压缩。

我很感谢你的建议!


一个好的无损算法取决于你拥有的float数量的类型。对于介于0和1之间的float,您可能拥有几乎相同的指数子值。你知道,float是一个符号、尾数和指数。如果它们都大于0,则符号总是相同的,不要存储它。

把指数包装在一起是很好的,这样你只需要把尾数放在后面。


您可能能够对数字进行排序,然后将它们存储为位置和差异。你可以根据需要把它们放在一起。在只存储分母的地方,可以将差异编码为一个分数。