What is the state of the art for fastest linear solver for sparse, positive semi definite and strictly diagonally dominant matrix with N varies from ~700 to ~3000, and about a 1/16 of the matrix is non zero values?
(an existing library is preferred over an algorithm - C/C++).


  • 2
    $\begingroup$ These are small enough that the thread-parallelized dense solvers like the LAPACK routines in the MKL are probably the fastest choice. What have you been using? Octave can solve a $3000 \times 3000$ dense random linear system on my laptop, serially in less than half a second. What's your workload look like? Do you need to solve millions of these? $\endgroup$
    – Bill Barth
    Commented Sep 9, 2014 at 13:00
  • $\begingroup$ I'm a bit confused by the Question statement. If a square matrix is strictly diagonally dominant, then it is nonsingular. Consequently positive semi-definite would become positive definite. Am I misunderstanding the situation? $\endgroup$
    – hardmath
    Commented Sep 10, 2014 at 1:51
  • $\begingroup$ I don't have enough rep to vote for the dupe, but scicomp.stackexchange.com/questions/14497/… asks about graph Laplacian matrices and there's a simple reduction from SDD systems to graph Laplacians. $\endgroup$
    – tmyklebu
    Commented Sep 10, 2014 at 2:51

1 Answer 1


There are two major linear algebra packages for scientific computing.

Trilinos: http://trilinos.org/ it si purely object oriented c++. This is a collection of packages, the one I would start with is Epetra.

PETSc: Not fully object oriented, c. http://www.mcs.anl.gov/petsc/

Lately, I am working great with the linear algebra facilities in dealII, (OO library for finite elements, c++). http://www.dealii.org/

Thought, if the dimension of your problem is that small, you probably do not need a compiled language. Python will do!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.