2

アルマジロを使用して線形システムを解決する質問があります。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 分解を行う方法を使用できますか?

どうもありがとうございました

4

1 に答える 1

1

Armadillo を経由する代わりに、LAPACK を直接使用する必要があります。Armadillo がデータを準備し、基礎となる LAPACK 関数を呼び出して solve() を実装する方法を確認することをお勧めします。これは、include/armadillo_bits/auxlib_meat.hpp ファイルにあります。

編集: Armadillo の開発者は通常、パッチを受け入れます。解決策を思いついたら、パッチまたは修正したファイルを送ってください。

于 2013-08-31T06:45:59.207 に答える