Re: [eigen] Advice on contributing a module for a multithreaded, supernodal, MPL-licensed sparse-direct LDLT/LDLH solver?

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hi Jack,

This is a very nice piece of work, congrats! I did one benchmark if catamari+MKL on the "ldoor" matrix [1] and got same speed as suitesparse/Cholmod: about 8s on my Haswell quad-core (15s without openmp).

Requiring c++14 for new features is not a big deal anymore.

How do you envision this "Eigen/Catamari" module? A simple wrapper as we do with Cholmod/UmfPack/Pastix/Pardiso? or a built-in Eigen-ified version? As you probably already figured out Eigen already provides several features redundant with what you developed in Catamari:
- BLAS/LAPACK layer with optional compile-time fallback to any BLAS / LAPACKE / MKL
- Sparse storage
- Fill-in reorderings, we have AMD and COLAMD, so yours might rather be complementary.

Gaël

[1] https://sparse.tamu.edu/GHS_psdef/ldoor

On Fri, Mar 8, 2019 at 4:59 PM Jack Poulson <jack@xxxxxxxxxxxxx> wrote:
Dear Eigen Maintainers,

I noticed that Eigen's current documentation only lists a simplicial LDLT sparse-direct solver; I spent my last several months building a header-only C++ (optionally multithreaded) supernodal Cholesky/LDL^T/LDL^H sparse-direct solver (which also implements high-performance Determinantal Point Process sampling with similar techniques) and am curious if it would be seen as a good fit for an unsupported Eigen module. The solver achieves as much as 1 TF in double-precision on my 16-core skylake workstation.

The current project is described here:
https://hodgestar.com/catamari/
I released v0.1 a few days ago, but I have improved the performance in 'master' substantially since then.

My assumption is that the biggest hurdle will be due to the solver (catamari) being implemented in C++14, and that Eigen is currently restricted to C++03. And, while catamari optionally incorporates OpenMP task scheduling for the multithreaded parallelism, this support is only enabled if an appropriate preprocessor directive is defined (CATAMARI_OPENMP).

Any advice would be appreciated.

Sincerely,
Jack Poulson


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/