Alternative LDL solver

I noticed from one of the OSQP publications that OSQP uses QDLDL, which is based upon Davis’s simple LDL factorization code.

You may see a performance improvement from using Catamari’s BSD-licensed supernodal LDL^T / LDL^H / Cholesky factorization:
https://gitlab.com/hodge_star/catamari

It was actually designed for use in a homogeneous self-dual embedded QP solver (https://gitlab.com/hodge_star/conic) and also supports fast double-double arithmetic. Currently said solver is using Fourer-style entry equilibration rather than Ruiz, which is causing problems on some of the poorly-scaled Maros/Meszaros tests (e.g., ksip), but this should be fixed soon.

The code is C++14 and header-only but the meson build system can detect MKL or another BLAS if you have it.

Jack

Thanks. We are working to make the linear algebra functionality more modular in v1.0 of OSQP, and will support at least QDLDL and MKL Blas/Pardiso out of the box through the new algebra interface. It should be relatively easy to implement an interface to another library as you suggest.

1 Like

When compiling in MATLAB, could you automatically use MATLAB’s provided MKL?

We can support it once the new OSQP 1.0 framework is in place. At the moment if you use MKL we exploit its linear system solver Pardiso, the rest of the linear algebra is internal.

1 Like