I implemented PARDISO solver to solve a linear system of equations with a sparse matrix. I tested it using a model that yields 1 million equations, each of them containing typically 7 nonzero elements.
All PARDISO settings in iparm are default, matrix type is 11 (real and nonsymmetric), one core is used for solving the system, phase is 13. These settings allocate 15 GB of memory during the phase 13, it takes about 9 min to solve the system.
My colleague tested the very same model in OpenFOAM and its matrix solver (I do not know what exactly they use) needed 1 GB of memory and it only took 1 minute to solve the system. His computer has the same CPU and 1 core was used for the solution.
My questions are:
- Would the solution be significantly faster and significantly more memory efficient if the matrix was symmetrical?
- Is there any way in MKL to find out whether the matrix is symmetrical and positive definite or indefinite?
- Does it make sense to try different sparse solvers than PARDISO?
Thank you in advance for any suggestions and tips.