Algebraic-Programming / ALP

Home of ALP/GraphBLAS and ALP/Pregel, featuring shared- and distributed-memory auto-parallelisation of linear algebraic and vertex-centric programs. Soon with more to come!
Apache License 2.0
25 stars 4 forks source link

Add preconditioning to the ALP CG solvers #309

Closed anyzelman closed 7 months ago

anyzelman commented 7 months ago

Initial jab at adding standard preconditioning to the ALP CG. The following TODOs remain:

(Note that the latter point corresponds to the actual feature request)

Bugfixes in this MR:

Tag @alberto-scolari

anyzelman commented 7 months ago

Optional feature: split preconditioners for use with ILU, I think @djelovina's use case was for that particular one, or does it make use of the standard preconditioning now provided (modulo testing)?

anyzelman commented 7 months ago

Current status: all passes, except preconditioned CG with bsp1d and hybrid backends due to a segfault. Given it only appears for the preconditioned case, the error should be rather isolated (perhaps it's in the build of the diagonal vector?)

anyzelman commented 7 months ago

Current status: all passes, except preconditioned CG with bsp1d and hybrid backends due to a segfault. Given it only appears for the preconditioned case, the error should be rather isolated (perhaps it's in the build of the diagonal vector?)

I suspect it's a global/local index translation issue -- the eWiseLambda on matrices gives back global indices (at least that's what's specified), while the bracket-operator may expect local indices (which would be an error). If this is indeed the case, then a second bugfix that would be piggy-backing on this MR is that eWiseLambda on vectors then apparently does not use global indices (for bsp1d and hybrid).

anyzelman commented 7 months ago

Retarget to v0.8 due to the bugfixes this MR contains

anyzelman commented 7 months ago

Running unit and smoke tests, then will move to the last TODO

anyzelman commented 7 months ago

All tests OK on x86 and ARM at this point

anyzelman commented 7 months ago

This one seems ready, I'll try to test the KML entry point manually (and will run automated tests simultaneously)

anyzelman commented 7 months ago

Manual test of entry point also passes. Waiting review/approve from @alberto-scolari before merge~

anyzelman commented 7 months ago

I'm happy again:) Concept release notes:

This MR resolves a feature request for a preconditioned CG accessible via a transition path. To enable this feature, this MR adds the following:

The MR also expands and improves documentation regarding the transition path libraries.

This MR adds the following smoke test:

To enable the smoke tests, this MR additionally includes the following bugfixes:

As always and additionally, the MR include code style fixes in both related and unrelated files.

anyzelman commented 7 months ago

CI and tests OK