行压缩数据的核外矩阵转置

计算科学 矩阵
2021-12-12 04:31:35

总结:如果单独压缩矩阵的每一行,是否有好的算法可以用于核外密集矩阵转置?

详细信息:未压缩的矩阵约为 1 TB,大致但不完全是正方形。未压缩的行小于 6 MB,因此其中许多可以同时放入 RAM。在磁盘上,我想单独压缩矩阵的每一行(使用特定于域的非随机访问方法),所以我需要一个转置算法,从压缩形式读取,重新压缩每一列,并写出压缩列作为新的转置矩阵。

任何现有的核外转置算法是否与此设置兼容?

2个回答

如果您不需要对单行进行快速随机访问,则可以存储切片而不是存储行。例如,生成500一次行并将它们存储在500×500瓦片(匹配磁盘块大小以获得最佳性能)。这些图块足够大,以不同的顺序(例如按列)从磁盘读取它们仍然可以很好地执行。

我会使用行块来实现它。如果矩阵是A, 写成总和A=b=1BAb每个块在哪里Ab仅由一些行组成A. 您选择每个块以使其适合内存。

然后AT=b=1BAbT: 计​​算转置A1,将其存储到磁盘。A2,计算其转置并添加您从中获得的新列A2T到那些已经计算出来的A1T, 等等等等。只要你能储存AbT以及已经处理过的转置的压缩形式,它应该可以工作。