C++ 有限内存上大矩阵的矩阵运算

C++ 有限内存上大矩阵的矩阵运算,c++,optimization,matrix,C++,Optimization,Matrix,我需要在我的电脑上做一些矩阵运算。这些矩阵的大小为1000000000或更多,有些操作需要TB的内存。显然,这些数据不能直接加载到内存中并进行计算。我可以用什么方法在我的计算机上求解这些矩阵?假设矩阵不能使用矩阵优化进一步缩减,并且已经以紧凑形式存储。我正在考虑使用一些内存映射方案,但需要一些想法。两个建议: 使用系统调用映射包含输入和输出数据的文件。这允许您映射最多2^44字节的文件,并将其视为已在内存中。也就是说,您只需使用标准的指针语法来访问数据,操作系统将负责从/向磁盘读取或写入数据,而

我需要在我的电脑上做一些矩阵运算。这些矩阵的大小为1000000000或更多,有些操作需要TB的内存。显然,这些数据不能直接加载到内存中并进行计算。我可以用什么方法在我的计算机上求解这些矩阵?假设矩阵不能使用矩阵优化进一步缩减,并且已经以紧凑形式存储。我正在考虑使用一些内存映射方案,但需要一些想法。

两个建议:

  • 使用系统调用映射包含输入和输出数据的文件。这允许您映射最多2^44字节的文件,并将其视为已在内存中。也就是说,您只需使用标准的指针语法来访问数据,操作系统将负责从/向磁盘读取或写入数据,而无需担心。不仅如此,mmap的速度比手动文件I/O-快很多倍

  • 读一读乌尔里希·德雷珀的作品。他处理的一个示例问题是高度优化矩阵运算


  • 您是否尝试过使用64位操作系统,让VM子系统来完成繁重的工作?您将这些存储在什么磁盘上?您正在运行什么操作系统?Win、Linux还是基于POSIX兼容的Unix系统(如MacOSX)?正如Paul指出的,无论运行什么,它都应该是相关的64位版本。当我试图分配这些矩阵时,它会耗尽内存。这是一个比我更好的参考答案+1对于您,sirI将尝试使用mmap2。谢谢