使用相同的内存在犰狳中进行LU分解

时间:2013-08-30 23:31:39

标签: c++ armadillo

我有使用犰狳解决线性系统的问题。 A * X = B。但我的A矩阵非常大。它是arma :: cx_mat A(40000,40000)。当我运行x = arma :: solve(A,b)时,armadillo会尝试分配一个新内存来存储A,然后使用新内存进行LU分解,不会使用存储原始A的内存。可以在fn_solve.hpp中找到solve的定义。但你已经看到我的A很大了。分配新内存将快速消耗所有内存。对于我的问题,我不再需要原版A.那么我可以使用一些方法让armadillo使用原始内存进行A进行LU分解吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

你将不得不直接使用LAPACK,而不是通过Armadillo。我建议你看看Armadillo如何准备数据并调用底层的LAPACK函数来实现solve()。这在文件include / armadillo_bits / auxlib_meat.hpp

中 编辑:犰狳开发人员通常会接受补丁。如果您想出一个解决方案,请向他们发送补丁或修改过的文件。