I am trying to solve a system of equations (A x = b) for 3D heat diffusion (i.e. each equation has at most 7 terms not including the constant "b" term) using UMFPACK with boost numeric bindings to C++.
namespace umf = boost::numeric::bindings::umfpack; umf::umf_solve(A,x,b);
I can populate the A matrix and the "b" vector for a 200K+ set of equations while using roughly 200MB of memory. Then while in the UMFPACK routines, the memory used by my program jumps up to 2.3GB+.
Furthermore, at some point above ~211K equations, the routine passes back all zeros for "x", without throwing an error. I assume this is related to some kind of memory limit.
This is the same on every machine I've tested on (my MacBook, my Ubuntu VM, and a node on a Red Hat supercomputer).
My questions are:
- Why is UMFPACK returning zeros without an error?
- Why does UMFPACK require so much memory?
- What options do I have for solving the system for larger sets of equations?