总结:如果单独压缩矩阵的每一行,是否有好的算法可以用于核外密集矩阵转置?
详细信息:未压缩的矩阵约为 1 TB,大致但不完全是正方形。未压缩的行小于 6 MB,因此其中许多可以同时放入 RAM。在磁盘上,我想单独压缩矩阵的每一行(使用特定于域的非随机访问方法),所以我需要一个转置算法,从压缩形式读取,重新压缩每一列,并写出压缩列作为新的转置矩阵。
任何现有的核外转置算法是否与此设置兼容?
总结:如果单独压缩矩阵的每一行,是否有好的算法可以用于核外密集矩阵转置?
详细信息:未压缩的矩阵约为 1 TB,大致但不完全是正方形。未压缩的行小于 6 MB,因此其中许多可以同时放入 RAM。在磁盘上,我想单独压缩矩阵的每一行(使用特定于域的非随机访问方法),所以我需要一个转置算法,从压缩形式读取,重新压缩每一列,并写出压缩列作为新的转置矩阵。
任何现有的核外转置算法是否与此设置兼容?
如果您不需要对单行进行快速随机访问,则可以存储切片而不是存储行。例如,生成一次行并将它们存储在瓦片(匹配磁盘块大小以获得最佳性能)。这些图块足够大,以不同的顺序(例如按列)从磁盘读取它们仍然可以很好地执行。
我会使用行块来实现它。如果矩阵是, 写成总和每个块在哪里仅由一些行组成. 您选择每个块以使其适合内存。
然后: 计算转置,将其存储到磁盘。读,计算其转置并添加您从中获得的新列到那些已经计算出来的, 等等等等。只要你能储存以及已经处理过的转置的压缩形式,它应该可以工作。