文件名称:middle-out:时间序列数据的快速中间输出压缩
文件大小:2.4MB
文件格式:ZIP
更新时间:2024-05-19 03:39:21
C++
时间序列数据的中间输出压缩 众所周知,HBO节目中的中间输出压缩是如何工作的[1],但是我们如何将其实际应用于时间序列数据呢? 看一下以下架构。 有数据的输入向量。 该向量被分为中间段。 为了简单起见,在图像中只有一个片段有四个,但是压缩实际上使用了八个。 这是因为AVX-512矢量指令一次最多可以处理8个双精度字。 如果我们使用单个精度数字,那么我们将有16个中间输出段,并且一次处理16个元素。 每个段的第一元素(用蓝色表示)是参考值。 这些值按原样存储在压缩数据的前面。 只要我们有多个参考点,我们就可以并行计算以下值之间的差异。 这使我们可以在SIMD指令的同一块中同时遍历所有中间输出段。 在每次迭代中,将当前值与先前的值进行XOR运算,并将此操作的结果存储在一个数据块中。 如果提示输入向量的长度除以中间输出块的数量,则来自该提示的值将以未压缩的方式存储在压缩数据的末尾。 当然,未压
【文件预览】:
middle-out-master
----.clang-format(2KB)
----.gitignore(299B)
----gbench()
--------perf.cpp(9KB)
----images()
--------middle-out-data-block.svg(93KB)
--------middle-out-overview.svg(60KB)
----Makefile(2KB)
----data()
--------ibm.data(10.4MB)
--------redis_memory.data(93KB)
--------used.data(253KB)
--------usages.data(42KB)
--------README.md(135B)
--------writes.data(47KB)
----scalar.hpp(1KB)
----LICENSE.md(473B)
----ansible-playbook.yaml(667B)
----gtest()
--------test.cpp(12KB)
----README.md(5KB)
----example()
--------Makefile(358B)
--------example.cpp(7KB)
----helpers.hpp(2KB)
----middleout.hpp(855B)
----avx512.hpp(1KB)
----scalar.cpp(11KB)
----avx512.cpp(11KB)
----middleout.cpp(1KB)