использовать ту же память для разложения LU в броненосце

У меня есть вопрос, как решить линейную систему с помощью броненосца. А*х=б. Но моя матрица А довольно большая. Это arma::cx_mat A(40000,40000). Когда я запускаю x=arma::solve(A,b), броненосец попытается выделить новую память для хранения A, а затем использовать новую память для декомпозиции LU и не будет использовать память, в которой хранится исходный A. определение решения можно найти в файле fn_solve.hpp. Но вы уже видите, что моя пятерка довольно большая. Выделение новой памяти быстро израсходует всю память. Для моей проблемы мне больше не нужен оригинальный A. Итак, могу ли я использовать какой-либо метод, чтобы позволить броненосцу использовать исходную память для A для декомпозиции LU?

Большое тебе спасибо


person ken    schedule 30.08.2013    source источник


Ответы (1)


Вам придется использовать LAPACK напрямую, а не через Armadillo. Я предлагаю вам взглянуть на то, как Armadillo подготавливает данные и вызывает базовые функции LAPACK для реализацииsolve(). Это находится в файле include/armadillo_bits/auxlib_meat.hpp.

РЕДАКТИРОВАТЬ: Разработчики Armadillo обычно восприимчивы к исправлениям. Если вы найдете решение, отправьте им патч или измененные файлы.

person mtall    schedule 31.08.2013