2013-08-30 58 views
2

我有問題解決使用犰狳的線性系統。 A * X = B。但是我的矩陣非常大。它是arma :: cx_mat A(40000,40000)。當我運行x = arma :: solve(A,b)時,armadillo將嘗試分配一個新的內存來存儲A,然後使用新的內存來執行LU分解,並且不會使用存儲原始A的內存。解決方案的定義可以在fn_solve.hpp中找到。但是你已經看到我的A很大。分配一個新的內存會快速消耗所有的內存。對於我的問題,我不需要原來的A了。那麼我能用一些方法讓犰狳使用A的原始記憶做LU分​​解嗎?使用相同的內存做armadillo中的LU分解

非常感謝您

回答

1

你將不得不直接使用LAPACK,而不是通過犰狳去。我建議你看看Armadillo如何準備數據並調用底層的LAPACK函數來實現solve()。這是在文件包括/ armadillo_bits/auxlib_meat.hpp

編輯:犰狳開發人員通常接受補丁。如果您想出解決方案,請向他們發送補丁或修改的文件。