异常 System.OutOfMemoryException 是 thrown.in linesolve ilnumerics

Exception System.OutOfMemoryException was thrown.in linesolve ilnumerics

我对 ilnumerics 中的 linesolve 有疑问。这是代码:

A = A_damped; // (6691x3000) array
D = d_damped; // array size 6691

ILArray<double> AA = A; // AA matrix (3000x6691) so should be transposed
 AA = AA.T;
ILArray<double> BB = D; // matrix (6691 x 1) 
ILArray<double> CC = ILMath.linsolve(AA, BB);

我收到了以下通知:

Exception of type 'System.OutOfMemoryException' was thrown.

这里有人知道吗?

在@Luaan 的建议旁边确保您的问题大小在合理范围内。您的矩阵消耗 ~153MB。 Linsolve 也需要一些临时内存。在一般计算期间,临时数组需要更多。作为一个非常粗略的经验法则,您的问题大小不应超过应用程序可用 RAM 的三分之一。这很难可靠地确定,因为系统上总是有其他进程 运行,也在消耗内存...

  • 遇到OOM问题的第一件事就是针对64位。
  • 确保使用 the latest version 的 ILNumerics。截至今天,这是 4.10。
  • 如果这不能可靠地消除 OOM,您将不得不减小问题大小或改用分布式内存。