Thursday 15 January 2015

linear algebra - How to use the in-place version of cholfact() in Julia? -



linear algebra - How to use the in-place version of cholfact() in Julia? -

i need solve ax = b, a symmetric positiv semi-definite matrix. can efficiently implemented using cholesky decomposition. because matrix a @ to the lowest degree have dimensions 25000 x 25000, cannot waste memory. hence want utilize in-place version of julia's cholfact:

cholfact!(a, :u, pivot = true)

compared

f = cholfact(a, :u, pivot = true)

this save gigabytes of memory.

however after computation, a of type matrix float64, while f has type choleskypivoted{float64}. far understand in-place version loses essential information, such pivot vector f.piv. how can compute cholesky decomposition correctly whithout wasting memory?

you want combine these two:

f = cholfact!(a, :u, pivot = true)

this returns choleskypivoted, indeed want. using cholfact!, you're saying don't care whether a gets destroyed in process. consequently, utilize memory allocated a storing factorization (thus destroying a).

afterwards, should utilize f, not a, because a has been destroyed. internally, f contain reference a, since it's storing factorization in a. may clearer if examine how choleskypivoted represented; a used ul field.

linear-algebra julia-lang

No comments:

Post a Comment