Hi Lucas and Wolfgang

I have something to say on this issue because I think it might be helpful 
to Lucas or other users. I know large memory usage is unavoidable in direct 
solvers. But I guess Lucas' issue with MUMPS was that he did not know how 
to reuse the factorization like one always does with SparseDirectUMFPACK. 
MUMPS does not have similar initialize and vmult functions as UMFPACK, and 
its documentation is not clear on how to reuse the memory.

Upon checking this discussion 
<https://groups.google.com/forum/?fromgroups#!topic/dealii/Sw0wHKEFuiA> I 
realize the MUMPS solver does have the ability to reuse the factorization, 
it's just that the APIs of this class is not consistent with UMFPACK or 
TrilinosWrappers::SolverDirect: there is actually a github 
<https://github.com/dealii/dealii/issues/2869> issue for it.

In my case, I managed to reuse the factorization with a workaround: I 
construct the MUMPS solver in the constructor of my upper-level class. Then 
call MUMPS::solve in another member function of this class. Therefore, as 
long as I do not reset the upper-level object, the memory reallocation does 
not happen. With this workaround, the time consumption of MUMPS in a 
specific problem drops from 49s to 7s (one processor), comparing with 
UMFPACK (9s), is quite satisfactory.

Thanks
Jie

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to