I'm implementing a solver of Finite Element Method, and to solve the linear system of equations I'm using gmres from MKL of Intel. Exists the option with and without a preconditioning. In what case it is not necessary the preconditioning?

The matrix is sparse and not symmetric.

  • $\begingroup$ It’s not necessary to precondition your linear solves if you’re getting answers fast enough already with one of MKL’s direct solvers and you’ve got enough memory for the problems you want to solve right now. If your problem is too big and won’t fit on one node, then maybe you should use a parallel silver library like HYPRe or PETSc. $\endgroup$
    – Bill Barth
    Oct 20, 2021 at 14:24

1 Answer 1


In my experience, you always need (or better use) some form of preconditioning. The type and complexity of the precondition would vary depending on the task though.

From Y. Saad, Iterative Methods for Sparse Linear Systems:

Preconditioning is a key ingredient for the success of Krylov subspace methods...

Lack of robustness is a widely recognized weakness of iterative solvers, relative to direct solvers. This drawback hampers the acceptance of iterative methods in industrial applications despite their intrinsic appeal for very large linear systems. Both the efficiency and robustness of iterative techniques can be improved by using preconditioning. (...) In general, the reliability of iterative techniques, when dealing with various applications, depends much more on the quality of the preconditioner than on the particular Krylov subspace accelerators used.

The simplest form of preconditioning is Jacobi or diagonal preconditioner. Such preconditioners are extremely quick to calculate and apply to your matrix. It is usually the minimum type of preconditioning that one would ever use for a practical problem.

So, I would say one should always go with at least diagonal preconditioning for the iterative solver. I often heard this phrase (don't know whom to attribute to):

Diagonal preconditioner is always cheap. Sometimes, effective.

From the same Y. Saad book:

In addition, it has been observed that for “easy problems,” the reduced system can often be solved efficiently with only diagonal preconditioning.

However, if we assume that the matrix for the linear system is diagonally dominant and elements on the diagonal are very close to each other, then probably even diagonal preconditioning is not going to improve things a lot.

The only practical application I had found, is to use a run without a preconditioner in order to compare its performance with other preconditioners. However, even in this case, I happened to run into research papers with slightly ambiguous labels in figures and tables: "No preconditioner (Jacobi)" or "No preconditioner" implying that only a diagonal preconditioner is used (which I found later trying to reproduce the results).

Note, there is a wide variety of literature on the preconditioning techniques including many questions in this community: ; however, I limited my answer towards a no-preconditioner aspect.

  • 3
    $\begingroup$ I can add a bit to the second citation from Saad's book. Gaussian elimination does not increase the dominance factor for systems that are diagonally dominant by rows. Rather, if the system is strictly diagonally dominant by rows, then the Schur complement tends to have a dominance factor that is (much) smaller than the original system and a simple Jacobi iteration can be used to solve the Schur complement system. Very clear examples of this are given by the explicit Spike algorithms and an incomplete cyclic reduction for banded systems. $\endgroup$ Oct 20, 2021 at 11:08
  • 2
    $\begingroup$ When I need to exemplify the failure of a simple diagonal preconditioner I consider the example of the 1D Laplacian. Certainly, the matrix is tridiagonal so a banded solver is a natural first choice. However, for GMRES, the banded preconditioner has no effect because the Krylov subspace is not changed at all. $\endgroup$ Oct 20, 2021 at 11:14
  • $\begingroup$ In a standard preconditioned conjugate gradient (PCG) implementation this unfortunately leads to having to recompute the square of the residual (since it is not available), so in fact if the preconditioner doesn't help (e.g. Jacobi for Poisson equation with fdm) then PCG can be even slower than the non-preconditioned version. To add to this, a Jacobi preconditioner is not always feasible since the matrix may not be given explicitly, and the diagonal may not be available. $\endgroup$
    – lightxbulb
    Jan 4 at 7:18
  • $\begingroup$ @lightxbulb I think you can generalize your comment to a separate answer: when any obvious preconditioner you can construct (like Jacobi) is proven (in a wide sense of the word "proven") to not be helpful, you might be better off running without any preconditioning. $\endgroup$
    – Anton Menshov
    Jan 4 at 14:05
  • $\begingroup$ QQ: from my quick analysis, the Jacobi should still be helpful for Poisson with finite differences if the grid is non-uniform (which is quite common in my field), am I missing something? $\endgroup$
    – Anton Menshov
    Jan 4 at 14:07

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.