我正在寻找一种良好的无损压缩算法,可以非常快速地压缩/解压缩少量数据,例如介于0和1之间的256个浮点数。我知道RLE但也许有更好的东西。
背景是我正在使用CUDA处理体积数据(例如384³浮点数)而不是显式存储卷我想将其划分为8x8x4大小的块并存储压缩块。 CUDA内核(每个块由8x8x4线程组成)解压缩相应的块,对其进行处理并再次压缩它。
我很感激任何建议!
答案 0 :(得分:3)
良好的无损算法取决于您拥有的float
数量的类型。
对于介于0和1之间的float
,您可能具有几乎相同的指数子值。
你知道float
是一个标志,一个尾数和一个指数。
如果它们都是> 0,则符号始终相同,不存储它。
将指数装在一起可以很好;这样你只需要存放mantissae。
答案 1 :(得分:0)
您可以对数字进行排序,然后将它们存储为位置和差异。您可以根据需要将它们组合在一起。差异可以编码为只存储分母的分数。