[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
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: [eigen] Advice on contributing a module for a multithreaded, supernodal, MPL-licensed sparse-direct LDLT/LDLH solver?
- From: "Jack Poulson" <jack@xxxxxxxxxxxxx>
- Date: Fri, 08 Mar 2019 10:27:33 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hodgestar.com; h=message-id:date:from:to:subject:content-type; s=fm2; bh=EKOYn Jjky+cm240G0QmMjzi3+1wuVC0zY+0PndBdCBo=; b=S4cN9Glo/8AqdGV97gMCt Ilrog3E8ViTQ/wzZQFXLfiYzAO2bon/mX3DAAede3gUsoeaQw9RpShs9c3bMwOJY NXywarUHeTvS5Rlh1+f6gX93rEIpC+Sd0jP3Daz+xZQ4n+rjaxx+sK5TQw29k7cz 60EPj2SmAmYUfJo+1lPb/qgz9gnX5X2FE7blFKCOphLUUk+qxO8rS/QL1pvaUpeN ErZK4Tk9phAX4pAy1zmC2TZFYTkoJadaHVXJFcRTa9rOg0VE5O1zIr/0OE3JRvBv H+QKlvHbh/Kv5M8EhI9fH2kkmn4N7Ex6/znWT5sra4ZkdKEzn1EMtsikDoBqsSdR Q==
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id:subject :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=EKOYnJjky+cm240G0QmMjzi3+1wuVC0zY+0PndBdCBo=; b=FA55YM1g LoZL3jux2xnsXrmSJKA3JzDO4C3J6xKIwoXdmalzih68EbZv50Q0/IzMUgpBaIY1 8sk7x/Rg/5WZa01FUl96YVDVqQZdrX56E9UhKrPrD47hoR0PZ2QSDgIpgVBxNCi/ Qad3HtRpEjyK6pBRIpIfGx3rWC+XDfdc3+Gsv5eGB58umX1jMh//X8ldDMtsDPSv wZ8Ab6tHTQwkU4WNdAVfwaAGPT6DECkoETHws0g+wi3Qbz+20bZbsli7Xd+KSqaG eg58RVWFdiD9xS7cu1wZoYpW/Ds04OQzz8QgQfw9WR6ox90FUqMGAa2QoZV2mF64 Sdq6Ntqu16A+4A==
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:
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