I have a large-scale system of linear equations: $Ax = b$, where $A$ is an $n\times n$ square symmetric positive definite matrix (not sparse), $b$ is an $n \times 1$ vector and $x$ is $n\times 1$ unknowns. The magnitude of $n$ is several million.
- How much memory does it take to store this problem, say, I use C++ and store numbers by double-precision?
- How long does it take to solve it if I use a "reasonably good" computer and C++ language with a well-known library?
- Any library (and its package/function) and algorithm to recommend for this problem?
Again, $A$ is an $n\times n$ square symmetric positive definite dense matrix.
(Further questions appended below) Thanks for the answers. I have further questions:
- Matrix $A$ can be generated from several much smaller matrices whenever computation need its entries, then memory usage can be much smaller. Does this help to shorten the time and demand for hardwares?
- If I only need to get the solution in 3 months, looks like using 1 GPU is enough. Am I right on this estimation?
- The computation I do need to do very often is to take the solution of $x$ and multiply it with another vector of the same size, say 5 million by 1. How long does it take if I only use 1 GPU?
- Any recommended books on using GPUs to solve linear equations?
Thank you very much!
double = 8 bytes
. The vector size is negligible compared to the matrix. When assuming n = 1e6 you'll look at a matrix with a size of 1e12 entries, corresponding to (at least) 8 TByte of memory. Not sure if it is possible at all to solve such a system within reasonable time on a "reasonably good" computer. $\endgroup$