JuliaSmoothOptimizers / KrylovPreconditioners.jl

The ultimate collection of preconditioners
Other
9 stars 1 forks source link

Improve the documentation #43

Open amontoison opened 10 months ago

jfdev001 commented 8 months ago

I think it would be quite helpful if references for algorithms were included in the doc strings. For example, any textbooks, papers, or other software (e.g., PETSc, HPDDM, FROSch) used as inspiration/direction could be included in a # References section in the doc string for the BlockJacobiPreconditioner. As far as I can tell, there are no other pure Julia packages (Gridap.jl does provide a PETSc interface, but this is obviously not pure Julia) other than yours for such domain decomposition methods, and by adding doc strings, your package could help inspire the implementation of algorithms in your current package or in other packages. Since @michel2323 has also been implementing these methods, I think this would be relevant to him as well.

michel2323 commented 8 months ago

@jfdev001 We will add more documentation. In the meantime, if you have any questions, let us know.

It's a rather naive block-Jacobi implementation tailored towards GPUs straight from the books. We use METIS to create a lot of smaller blocks, and we can then use the dense batched inversion calls in CUBLAS and ROCBLAS. This creates a lot of small blocks, so that might be bad for convergence. On the other hand, GPUs are pretty fast at doing Krylov iterations. We are working on a writeup where we do benchmarks and comparisons using various linear systems. After that, we'll work on the documentation.

We tried more fancy stuff like overlapping additive Schwarz, but that's just hard to implement fast on the GPU.