我需要在我的电脑上做一些矩阵运算。这些矩阵很大 1000000x1000000 甚至更多,一些操作需要 TB 内存。显然,这些不能直接加载到内存中并进行计算。我可以使用什么方法在计算机上求解这些矩阵?假设矩阵不能使用矩阵优化进一步减少,并且已经以紧凑形式存储。我正在考虑使用一些内存映射方案,但需要一些想法。
最佳答案
两个建议:
使用 mmap2映射包含输入和输出数据的文件的系统调用。这允许您最多映射 2^44 字节的文件并将它们视为已经在内存中。 IE。您只需使用标准的指针语法来访问数据,操作系统会负责从/向磁盘读取或写入数据,而您无需担心。不仅如此,mmap 比手动文件 I/O 快很多倍 - See this SO post .
阅读 Ulrich Drepper 的“What every programmer should know about memory”。他处理的示例问题之一是高度优化矩阵运算。
关于c++ - 在有限的内存上对大矩阵进行矩阵运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751331/