在犰狳中使用相同的内存进行LU分解
Posted
技术标签:
【中文标题】在犰狳中使用相同的内存进行LU分解【英文标题】:use the same memory to do LU decomposition in armadillo 【发布时间】:2013-08-30 23:31:39 【问题描述】:我对使用犰狳求解线性系统有疑问。 A*x=b。但是我的 A 矩阵很大。它是 arma::cx_mat A(40000,40000)。当我运行 x=arma::solve(A,b) 时,犰狳会尝试分配一个新的内存来存储 A,然后使用新的内存进行 LU 分解,不会使用存储原始 A 的内存。求解的定义可以在 fn_solve.hpp 中找到。但是你已经看到我的 A 很大了。分配一个新的内存会很快消耗掉所有的内存。对于我的问题,我不再需要原来的 A 了。那我能不能用一些方法让犰狳利用A的原始内存做LU分解呢?
非常感谢
【问题讨论】:
【参考方案1】:您将不得不直接使用 LAPACK,而不是通过犰狳。我建议你看看 Armadillo 如何准备数据并调用底层 LAPACK 函数来实现solve()。这是在文件 include/armadillo_bits/auxlib_meat.hpp
编辑:犰狳开发人员通常接受补丁。如果您想出解决方案,请将补丁或修改后的文件发送给他们。
【讨论】:
以上是关于在犰狳中使用相同的内存进行LU分解的主要内容,如果未能解决你的问题,请参考以下文章