Skip to content

[Plugin] SofaCHOLMOD: Add plugin with a supernodal Cholesky direct solver (EigenCholmodSupernodalLLT)#6176

Open
fredroy wants to merge 8 commits into
sofa-framework:masterfrom
fredroy:add_cholmod_solver
Open

[Plugin] SofaCHOLMOD: Add plugin with a supernodal Cholesky direct solver (EigenCholmodSupernodalLLT)#6176
fredroy wants to merge 8 commits into
sofa-framework:masterfrom
fredroy:add_cholmod_solver

Conversation

@fredroy

@fredroy fredroy commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Add a new optional plugin SofaCHOLMOD providing a direct linear solver, EigenCholmodSupernodalLLT, based on the supernodal sparse Cholesky factorization of CHOLMOD (SuiteSparse), wrapped via Eigen's CholmodSupport.

The dependency on SuiteSparse/CHOLMOD is fully isolated in this plugin so it stays out of the core solvers.

On a ~15k-DOF FEM beam: ~8x speedup over SparseLDLSolver on macOS

Note1: BLAS (important for performance)
Since the factorization delegates to dense BLAS3, performance is dictated by the BLAS backing CHOLMOD, not by SOFA:

  • On macOS, SuiteSparse links Apple Accelerate → speedup is always present.
  • On Linux, the backend depends on the install BLAS. With the system default one, BLAS the gain mostly disappears; with OpenBLAS/MKL you get the full speedup. See the plugin README for how to check/fix this.
  • Multithreaded BLAS tends to oversubscribe on medium systems, so a small thread count is often fastest. A scene-settable numThreads Data is provided to control this at runtime.

Note2: CHOLMOD is double-precision only → enforced at configure time (SOFA_FLOATING_POINT_TYPE=double).

Note3: NOT TESTED ON WINDOWS (YET)


By submitting this pull request, I acknowledge that
I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


Reviewers will merge this pull-request only if

  • it builds with SUCCESS for all platforms on the CI.
  • it does not generate new warnings.
  • it does not generate new unit test failures.
  • it does not generate new scene test failures.
  • it does not break API compatibility.
  • it is more than 1 week old (or has fast-merge label).

@fredroy fredroy added pr: status to review To notify reviewers to review this pull-request pr: highlighted in next release Highlight this contribution in the notes of the upcoming release pr: AI-aided Label notifying the reviewers that part or all of the PR has been generated with the help of an AI pr: enhancement About a possible enhancement labels Jul 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr: AI-aided Label notifying the reviewers that part or all of the PR has been generated with the help of an AI pr: enhancement About a possible enhancement pr: highlighted in next release Highlight this contribution in the notes of the upcoming release pr: status to review To notify reviewers to review this pull-request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant