Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4ca84f4
Separate PMISR and DDC into different files
stevendargaville Mar 11, 2026
964c269
First attempt at a true iterative process to cap the diagonal dominan…
stevendargaville Mar 11, 2026
b6c001a
Parallel fix
stevendargaville Mar 11, 2026
5683aa8
Tidy the pmis-style ddc
stevendargaville Mar 12, 2026
a700d5e
Split strength matrix calculation into separate file
stevendargaville Mar 12, 2026
3bed8f1
Split Kokkos PMISR and DDC into two separate files. Also added separa…
stevendargaville Mar 12, 2026
1944975
Split Kokkos PMISR into two functions, one of which can be called an …
stevendargaville Mar 12, 2026
685427c
Add tests for the new max_dd_ratio capability
stevendargaville Mar 12, 2026
fd8428b
Update Kokkos DDC to compute independent sets when using max_dd_ratio…
stevendargaville Mar 12, 2026
446d897
Fix for kokkos - there was no host copy of is_fine when kokkos ddc wa…
stevendargaville Mar 13, 2026
1a3a1ee
Fix CPU case to not call wrapper
stevendargaville Mar 13, 2026
15836b8
CPU version of DDC no longer extracts Aff except when max_dd_ratio is…
stevendargaville Mar 13, 2026
03f0a08
Refactor diagonal dominance calculation
stevendargaville Mar 13, 2026
b9b0f8c
Rename Device_CF_Markersk to Device_Datak
stevendargaville Mar 13, 2026
d632dc1
Update the test of calling compute_cf_splitting by itself to actually…
stevendargaville Mar 13, 2026
65c5104
Line truncation
stevendargaville Mar 13, 2026
9213657
Unused variables outside of kokkos guards
stevendargaville Mar 13, 2026
ef2cfe3
Update comments for -pc_air_max_dd_ratio
stevendargaville Mar 13, 2026
a7670f4
Split diagonal dominance calculation into own file
stevendargaville Mar 13, 2026
680ca8a
The CPU DDC with max_dd_ratio now doesn't form Aff+Aff^T, because the…
stevendargaville Mar 13, 2026
b7ae619
Unused variable outside of kokkos path
stevendargaville Mar 13, 2026
62e41b8
Add a separate interface to compute_diag_dom_submatrix which computes…
stevendargaville Mar 13, 2026
93de404
Provide C and Python bindings for the new routine compute_diag_dom_su…
stevendargaville Mar 13, 2026
c2ae6d6
Update cf splitting notebook to discuss new max_dd_ratio parameter
stevendargaville Mar 13, 2026
60bc4f9
Ignore zero ddc_its if max_dd_ratio is used
stevendargaville Mar 13, 2026
01032af
Begin work to move -pc_air_max_dd_ratio into a new CF splitting type,…
stevendargaville Mar 13, 2026
02d4354
Remove -pc_air_max_dd_ratio and instead replace it with a new CF spli…
stevendargaville Mar 13, 2026
ba6fc35
New test tolerances
stevendargaville Mar 13, 2026
3b2858d
Update notebooks with new api
stevendargaville Mar 13, 2026
a0aa1c1
Revert change where CF_DIAG_DOM used the diagonal to define a strengt…
stevendargaville Mar 13, 2026
1f9b79b
Kokkos version of DDC with diag_dom CF splitting now doesn't require …
stevendargaville Mar 13, 2026
3dd6da5
Add an FAQ to the readme with tips for using PFLARE
stevendargaville Mar 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,10 @@ ifeq ($(PETSC_HAVE_KOKKOS),1)
export OBJS := $(OBJS) $(SRCDIR)/PETSc_Helperk.o \
$(SRCDIR)/Grid_Transferk.o \
$(SRCDIR)/VecISCopyLocalk.o \
$(SRCDIR)/PMISR_DDCk.o \
$(SRCDIR)/Device_Datak.o \
$(SRCDIR)/MatDiagDomk.o \
$(SRCDIR)/PMISR_Modulek.o \
$(SRCDIR)/DDC_Modulek.o \
$(SRCDIR)/Gmres_Polyk.o
endif

Expand All @@ -116,9 +119,13 @@ OBJS := $(OBJS) $(SRCDIR)/PETSc_Helper.o \
$(SRCDIR)/AIR_MG_Stats.o \
$(SRCDIR)/SAI_Z.o \
$(SRCDIR)/Constrain_Z_or_W.o \
$(SRCDIR)/PMISR_DDC.o \
$(SRCDIR)/MatDiagDom.o \
$(SRCDIR)/SAbs.o \
$(SRCDIR)/DDC_Module.o \
$(SRCDIR)/PMISR_Module.o \
$(SRCDIR)/Aggregation.o \
$(SRCDIR)/CF_Splitting.o \
$(SRCDIR)/MatDiagDomSubmatrix.o \
$(SRCDIR)/Repartition.o \
$(SRCDIR)/Timers.o \
$(SRCDIR)/Weighted_Jacobi.o \
Expand Down
8 changes: 6 additions & 2 deletions Makefile.deps
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,18 @@ src/AIR_Operators_Setup.o : src/AIR_Operators_Setup.F90 src/PETSc_Helper.o src/S
src/Approx_Inverse_Setup.o : src/Approx_Inverse_Setup.F90 src/Matshell_Data_Type.o src/PETSc_Helper.o src/Repartition.o src/SAI_Z.o src/Weighted_Jacobi.o src/Neumann_Poly.o src/Gmres_Poly_Newton.o src/Gmres_Poly.o src/Pflare_Parameters.o src/TSQR.o
src/Binary_Tree.o : src/Binary_Tree.F90
src/C_Fortran_Bindings.o : src/C_Fortran_Bindings.F90 src/AIR_Data_Type_Routines.o src/CF_Splitting.o src/Approx_Inverse_Setup.o src/PCAIR_Shell.o src/PCAIR_Data_Type.o
src/CF_Splitting.o : src/CF_Splitting.F90 src/PETSc_Helper.o src/Aggregation.o src/C_PETSc_Interfaces.o src/PMISR_DDC.o src/Pflare_Parameters.o
src/CF_Splitting.o : src/CF_Splitting.F90 src/PETSc_Helper.o src/Aggregation.o src/C_PETSc_Interfaces.o src/SAbs.o src/DDC_Module.o src/PMISR_Module.o src/Pflare_Parameters.o
src/Constrain_Z_or_W.o : src/Constrain_Z_or_W.F90 src/PETSc_Helper.o src/C_PETSc_Interfaces.o
src/C_PETSc_Interfaces.o : src/C_PETSc_Interfaces.F90
src/DDC_Module.o : src/DDC_Module.F90 src/MatDiagDom.o src/Pflare_Parameters.o src/PMISR_Module.o src/SAbs.o src/C_PETSc_Interfaces.o src/PETSc_Helper.o
src/FC_Smooth.o : src/FC_Smooth.F90 src/Matshell_Data_Type.o src/PETSc_Helper.o src/AIR_Data_Type.o src/C_PETSc_Interfaces.o
src/Gmres_Poly_Data_Type.o : src/Gmres_Poly_Data_Type.F90 src/TSQR.o
src/Gmres_Poly.o : src/Gmres_Poly.F90 src/PETSc_Helper.o src/Gmres_Poly_Data_Type.o src/TSQR.o src/Matshell_Data_Type.o src/Pflare_Parameters.o src/C_PETSc_Interfaces.o src/Sorting.o
src/Gmres_Poly_Newton.o : src/Gmres_Poly_Newton.F90 src/C_PETSc_Interfaces.o src/Gmres_Poly.o
src/Grid_Transfer.o : src/Grid_Transfer.F90 src/PETSc_Helper.o src/C_PETSc_Interfaces.o
src/Grid_Transfer_Improve.o : src/Grid_Transfer_Improve.F90 src/PETSc_Helper.o src/Pflare_Parameters.o src/Timers.o
src/MatDiagDom.o : src/MatDiagDom.F90 src/Pflare_Parameters.o src/C_PETSc_Interfaces.o src/PETSc_Helper.o
src/MatDiagDomSubmatrix.o : src/MatDiagDomSubmatrix.F90 src/Pflare_Parameters.o src/PETSc_Helper.o src/CF_Splitting.o
src/Matshell_Data_Type.o : src/Matshell_Data_Type.F90 src/Pflare_Parameters.o src/AIR_Data_Type.o
src/Neumann_Poly.o : src/Neumann_Poly.F90 src/Pflare_Parameters.o src/TSQR.o src/Matshell_Data_Type.o src/PETSc_Helper.o src/Gmres_Poly.o
src/PCAIR_C_Fortran_Bindings.o : src/PCAIR_C_Fortran_Bindings.F90 src/PCAIR_Interfaces.o
Expand All @@ -26,8 +29,9 @@ src/PCPFLAREINV_Interfaces.o : src/PCPFLAREINV_Interfaces.F90
src/PETSc_Helper.o : src/PETSc_Helper.F90 src/C_PETSc_Interfaces.o
src/PFLARE.o : src/PFLARE.F90 src/Pflare_Parameters.o src/PCAIR_Interfaces.o src/PCPFLAREINV_Interfaces.o
src/Pflare_Parameters.o : src/Pflare_Parameters.F90
src/PMISR_DDC.o : src/PMISR_DDC.F90 src/Pflare_Parameters.o src/C_PETSc_Interfaces.o src/PETSc_Helper.o
src/PMISR_Module.o : src/PMISR_Module.F90 src/Pflare_Parameters.o src/C_PETSc_Interfaces.o src/PETSc_Helper.o
src/Repartition.o : src/Repartition.F90 src/PETSc_Helper.o src/C_PETSc_Interfaces.o
src/SAbs.o : src/SAbs.F90 src/PETSc_Helper.o
src/SAI_Z.o : src/SAI_Z.F90 src/Pflare_Parameters.o src/PETSc_Helper.o src/C_PETSc_Interfaces.o src/Sorting.o src/Binary_Tree.o
src/Sorting.o : src/Sorting.F90 src/Binary_Tree.o
src/Timers.o : src/Timers.F90 src/Pflare_Parameters.o
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ PFLARE adds new methods to PETSc, including:
1) Polynomial approximate inverses, e.g., GMRES and Neumann polynomials
2) Reduction multigrids, e.g., AIRG, nAIR and lAIR
3) CF splittings, e.g., PMISR DDC
4) Extracting diagonally dominant submatrices

## Quick start

Expand All @@ -46,12 +47,13 @@ For details about PFLARE, please see:
| [docs/gpus.md](docs/gpus.md) | Using GPUs with PFLARE |
| [docs/reuse.md](docs/reuse.md) | Re-using components of PFLARE |
| [docs/options.md](docs/options.md) | List of the options available in PFLARE |
| [docs/faq.md](docs/faq.md) | Frequently asked questions and help! |

and the Jupyter notebooks:

| Path | Contents |
|---|---|
| [notebooks/01_getting_started.ipynb](notebooks/01_getting_started.ipynb) | Introduce PFLARE |
| [notebooks/01_getting_started.ipynb](notebooks/01_getting_started.ipynb) | Introduction to PFLARE |
| [notebooks/02_pcpflareinv.ipynb](notebooks/02_pcpflareinv.ipynb) | Examine some of the approximate inverses found in PCPFLAREINV |
| [notebooks/03_cf_splitting.ipynb](notebooks/03_cf_splitting.ipynb) | Visualise the C/F splitting and explore the PMISR-DDC algorithm |
| [notebooks/04_pcair.ipynb](notebooks/04_pcair.ipynb) | Introduction to PCAIR and the AIRG method |
Expand Down
Loading
Loading