gpt4 book ai didi

c++ - 使用相同的内存在 Armadillo 中进行 LU 分解

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:26:34 26 4
gpt4 key购买 nike

我有一个问题要用 Armadillo 求解线性系统。 A*x=b。但是我的 A 矩阵很大。它是 arma::cx_mat A(40000,40000)。当我运行 x=arma::solve(A,b) 时,armadillo 会尝试分配一 block 新的内存来存储 A,然后使用新的内存进行 LU 分解,而不会使用存储原始 A 的内存。 solve 的定义可以在 fn_solve.hpp 中找到。但是你已经看到我的 A 很大。分配新内存会很快消耗掉所有内存。对于我的问题,我不再需要原来的 A 了。那我可不可以通过某种方法让 Armadillo 用A的原始内存做LU分解呢?

非常感谢

最佳答案

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

编辑:Armadillo 开发人员通常乐于接受补丁。如果您提出解决方案,请向他们发送补丁或修改后的文件。

关于c++ - 使用相同的内存在 Armadillo 中进行 LU 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com