大矩阵的矩阵运算在有限的内存上进行

4

我需要在我的电脑上进行一些矩阵操作。这些矩阵非常大,1000000x1000000以上,有些操作需要TB的内存。显然,它们不能直接加载到内存中进行计算。那么,在我的电脑上解决这些矩阵问题应该采用什么方法呢?假设这些矩阵已经以紧凑形式存储,并且无法使用矩阵优化进一步减少矩阵的大小。我正在考虑使用一些内存映射方案,但需要一些想法。


你尝试过只使用64位操作系统,让虚拟机子系统来处理重要的工作吗? - Paul R
你把这些存储在哪些磁盘上? - sbi
你正在运行什么操作系统?Win、Linux或符合POSIX标准的基于Unix的系统(如MacOSX)?无论你运行的是什么,它都应该是相关的64位版本,正如保罗指出的那样。 - Robert S. Barnes
是的,我正在运行64位的Linux Gentoo。当我尝试分配这些矩阵时,它会耗尽内存。 - user236215
1个回答

2

两个建议:

  1. 使用mmap2系统调用来映射包含输入和输出数据的文件。这样可以将文件映射到2^44字节,将其视为已经在内存中。也就是说,您只需使用标准指针语法访问数据,操作系统会负责从磁盘读取或写入数据,无需您担心。而且,mmap比手动文件I/O快得多-请参阅此SO帖子

  2. 阅读Ulrich Drepper的“关于内存,每位程序员都应该知道什么”。他所处理的一个例子问题是高度优化的矩阵运算。


这是一个比我的更好的参考答案。向您致敬! - wheaties
1
我会尝试使用 mmap2。谢谢! - user236215

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接