c++ - 在有限的内存上对大矩阵进行矩阵运算

标签 c++ optimization matrix

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

最佳答案

两个建议:

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

  2. 阅读 Ulrich Drepper 的“What every programmer should know about memory”。他处理的示例问题之一是高度优化矩阵运算。

关于c++ - 在有限的内存上对大矩阵进行矩阵运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751331/

相关文章:

python - Nelder-Mead 优化中的终止容差

matlab - 获取矩阵中最大值的位置

c++ - -Wunused-variable 编译器说错误

c++ - 根据另一个 Sprite SDL2 和 C++11 的旋转更改 Sprite 的位置

tensorflow - 与 tensorflow.keras 相比,使用 keras 在 mnist 上的测试准确度明显更高

python - 带有 numpy 的范围数组

r - 将向量的系数添加到矩阵

python - 如何最有效地存储矩阵的值

c++ - 矩形交点。为空路口打印消息

c++ - 使用 edsdk 加载 cr2 时出错