Linear Sparse Solvers

Recently I have to accelerate my last code and most of time are spent on solving linear sparse systems. Since my coefficient matrix is a symmetric positive definite matrix (s.p.d.), I always use CHOLMOD . But its performance cannot reach my requirement, I tried to search another better solver. Then I tried backslash(\) in MATLAB, the build-in preconditioned conjugate gradient (PCG) method in Eigen, PARDISO in intel MKL and PCG in intel MKL.

There is a comparison article (from Tim Davis) of CHOLMOD with PCG method [link]. The main idea is that CHOLMOD performs bettter than PCG in most cases. However, unfortunately from my experiments it seems that PCG is more suitable than direct solvers (CHOLMOD and MKL) in my case. PCG need less time than direct solvers (CHOLMOD and MKL) to get similar results in my problem. Here is a figure roughly showing my results:

NOTE: x axis represents the size of the coefficient matrix and y axis represents the solving time.

However, in my problem I have to solve lots of times linear sparse systems. It is not as fast as I want. Probably I have to improve the theory part to nail the problem now? Or is there another other better solvers? Je ne sais pas. :(

Kun Liu
Data Scientist


comments powered by Disqus