We present ATC, a C++ library for advanced Tucker-based compression of multidimensional numerical data, based on the sequentially truncated higher-order singular value decomposition (ST-HOSVD) and bit plane truncation. Several techniques are proposed to improve compression rate, speed, memory usage and error control. First, a hybrid truncation scheme is described which combines Tucker rank truncation and TTHRESH quantization [Ballester-Ripoll et al., IEEE Trans. Visual. Comput. Graph., 2020]. We derive a novel expression to approximate the error of truncated Tucker decompositions in the case of core and factor perturbations. Furthermore, a Householder-reflector-based approach is proposed to compress the orthogonal Tucker factors. Certain key improvements to the quantization procedure are also discussed. Moreover, particular implementation aspects are described, such as ST-HOSVD procedure using only a single transposition. We also discuss several usability features of ATC, including the presence of multiple interfaces, extensive data type support and integrated downsampling of the decompressed data. Numerical results show that ATC maintains state-of-the-art Tucker compression rates, while providing average speed-ups of 2.6-3.6 and halving memory usage. Furthermore, our compressor provides precise error control, only deviating 1.4% from the requested error on average. Finally, ATC often achieves significantly higher compression than non-Tucker-based compressors in the high-error domain.
翻译:我们展示了 ATC, C++ 高级基于塔克压缩多维数字数据的库, 其基础是按顺序排列的较高顺序单值分解( ST- HOSVD) 和比特平面分解。 我们提出了几种提高压缩率、 速度、 内存使用和错误控制的方法。 首先, 描述了一种混合脱轨办法, 将塔克排行和 TTTHRESH 量化( 巴列斯特- 里波尔等人, IEEEE Trans. Computural. graph. graph. 2020) 结合起来。 我们用一种新颖的表达方式, 近似了在核心和因素分解过程中调调的塔克调解位值( ST- HOSVD) 的错误。 此外, 我们用ATC 的多端位( 塔克) 域分解( ) 和因调和因因因因因调而出现的不均值差差差差差差的错误。 此外, 提供了大量基于家反序的内压( 方向) AS勒) 平流数据- 直压( 级( ) 平流压( ) 级( ) ) 级) 和( 直压) 直压( 直压( ) 平流压( ) 的) 直压( ) 的) 平流) 直压( ) 的) 的) 等数据- 直压( 直压( ) 的) 直径流压( 等数据- 的) 的), 直压- 直压- 直压- 直压- 直压( 直压( ) ) ( ) ) ) 等数据- 直压( ) ) 直压(直压(直压(直压( ) ) ) ) 直压(直压(直压(直压(直压( ) ) ) ) ) ) ) ) (直压(直压(直压(直压(直压(直压) ) ) ) ) ) (直压(直压(直压) )