单机大矩阵乘法

计算科学 matlab Python 矩阵
2021-12-02 18:22:23

例如,我有 2 个无法放入 RAM 的矩阵。我需要可以处理这个的算法或库。最好是 Matlab 或 Python。

我认为它可以是一些块矩阵乘法?另外我觉得有一个类比硬盘<->ram,gpu ram<->cpu ram,cpu ram<->cpu cache,那么我们可以采取一些cpu cache优化技术吗?

似乎在 python 中我可以使用 numpy.memmap 但我不了解这种方法的内存消耗,也许它根本不是最佳解决方案。

2个回答

我认为您应该看看PyTables特别是 PyData 2012 上给出的教程。PyTables 将分层数据集与计算引擎相结合。它使用Blosc压缩器来避免 I/O 瓶颈和表达式的优化评估器tables.Expr(基于Numexpr)。

有关您的矩阵类型的更多信息会有所帮助。处理此类大型矩阵的最简单方法是将它们分布在多台机器上,并使用 ScaLAPACK 并行执行操作。它也会更快。如果您需要在一台机器上执行此操作,那么您提到的核心技术将起作用。mrgloom 提到的 pytables 支持这一点。通常,您希望利用矩阵的性质。