Skip to content

Add ElementalJL solver wrapper - #908

Merged
ChrisRackauckas merged 13 commits into
SciML:mainfrom
AJ0070:fix/47
Apr 6, 2026
Merged

ChrisRackauckas merged 13 commits into
SciML:mainfrom
AJ0070:fix/47

Conversation

@AJ0070

@AJ0070 AJ0070 commented Mar 1, 2026 •

Copy link
Copy Markdown
Member

Checklist

  • Appropriate tests were added
  • Any code changes were done in a way that does not break public API
  • All documentation related to code changes were updated
  • The new code follows the
    contributor guidelines, in particular the SciML Style Guide and
    COLPRAC.
  • Any new documentation only uses public API

Additional context

Closes #47. Adds ElementalJL wrapper

What's added

  • src/extension_algs.jl: ElementalJL <: AbstractDenseFactorization struct with keyword argument method ∈ {:LU, :QR, :Cholesky} and a full docstring.
  • ext/LinearSolveElementalExt.jl: package extension implementing init_cacheval and solve!. Handles AbstractMatrix and Elemental.Matrix inputs, promotes non-native element types to Float64/ComplexF64.
  • Project.toml: Elemental = "0.6" registered in [weakdeps], [extensions], [compat], [extras], and [targets].
  • export ElementalJL in src/LinearSolve.jl.
  • test/elemental/elemental.jl + test/elemental/Project.toml: standalone test sub-project covering LU, QR, Cholesky, Float32, ComplexF64, direct Elemental.Matrix input, cache reuse, and a regression test for in-place mutation safety.
  • .github/workflows/Tests.yml: LinearSolveElemental CI group, Windows excluded (no Elemental_jll binary for x86_64-w64-mingw32).

AI disclosure: Used Claude to support development by writing code, documenting non-trivial logic with docstrings and comments, and creating comprehensive test coverage. Used Chatgpt to format PR description in markdown.

@AJ0070

AJ0070 commented Mar 1, 2026 •

Copy link
Copy Markdown
Member Author

relying on CI for tests outputs because currently I don't have access to my ubuntu machine and ElemetalJL doesn't have windows binary. I will ping for review once all relevant tests pass successfully.

@AJ0070

AJ0070 commented Mar 1, 2026 •

Copy link
Copy Markdown
Member Author

now tests should pass successfully. currently working on lq support

@AJ0070

AJ0070 commented Mar 3, 2026 •

Copy link
Copy Markdown
Member Author

@andreasnoack the lq! support added in JuliaParallel/Elemental.jl#83 was never included in a tagged release; the registered version is still v0.6.0 (pre- JuliaParallel/Elemental.jl#83), so downstream packages like LinearSolve.jl (@ChrisRackauckas) can't use it natively.
Could you cut a v0.6.1 release?

@andreasnoack

Copy link
Copy Markdown
Contributor

I've starting looking into it, but it looks like CI hasn't run in long time. (Was configured for Travis). I've started JuliaParallel/Elemental.jl#84 and Claude is chipping away on analysing the errors there.

@AJ0070

AJ0070 commented Mar 4, 2026

Copy link
Copy Markdown
Member Author

@andreasnoack please let me know if you need any help with it.

@AJ0070

AJ0070 commented Mar 4, 2026

Copy link
Copy Markdown
Member Author

@ChrisRackauckas I have kept this on hold and have started working on MUMPS wrapper.

@AJ0070

AJ0070 commented Apr 3, 2026 •

Copy link
Copy Markdown
Member Author

@ChrisRackauckas Is there a blocker preventing this?

@ChrisRackauckas

Copy link
Copy Markdown
Member

Just the new covid variant lol

@ChrisRackauckas
ChrisRackauckas merged commit a128580 into SciML:main Apr 6, 2026
194 of 196 checks passed
@AJ0070

AJ0070 commented Apr 6, 2026

Copy link
Copy Markdown
Member Author

please take care

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Elemental.jl wrapper

3 participants