2013-08-30 2 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가 필요하지 않습니다. 그래서 armadillo가 LU 분해를 위해 원래의 메모리를 사용하게하는 몇 가지 방법을 사용할 수 있습니까? 아르마딜로에서 LU 분해를 수행하는 데 동일한 메모리를 사용합니다.

대신 딜을 통해가는, 당신이 직접 LAPACK를 사용해야 할거야

답변

1

대단히 감사합니다. Armadillo가 데이터를 준비하는 방법을 살펴보고 solve()를 구현하는 기본 LAPACK 함수를 호출하는 것이 좋습니다. 이것은/armadillo_bits/auxlib_meat.hpp 파일에 있습니다.

편집 : 아르마딜로 개발자는 일반적으로 패치를 잘 받아들입니다. 솔루션을 찾았 으면 패치 나 수정 된 파일을 보내십시오.

관련 문제