异常 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,您将不得不减小问题大小或改用分布式内存。
我对 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,您将不得不减小问题大小或改用分布式内存。