Is there any easy-to-use parallel linear solver in Julia?

I am wondering that if there are some easy-to-use parallel linear solvers in Julia?
I have tried MUMPS.jl, but if you want to parallelize it, you have to use MPI.jl, then other parts of the code will be executed ‘number of cores’ times.
I tried Pardiso.jl too, only with the MKLPardisosolver(). I found that the default number of threads of a MKLPardisosolver is the maximum number of threads available. If you give less number of threads to the pardiso solver, it is slower than a single threaded MUMPS solver. (I tested these solvers with sprand, just for test, iterative solvers should be more suitable in this case).
The IterativeSolver.jl seems only work single threaded, Krylov.jl supports multi-threads by multi-threaded sparse matrix-vector products.
So is there any easy-to-use parallel direct linear solver in Julia?
Or is it possible to only use MPI for MUMPS.jl, not for the other part of code.
Thanks for your help!

1 Like

Have you tried

https://docs.sciml.ai/LinearSolve/stable/solvers/solvers/#HYPRE.jl

Thanks Chris! I have not noticed HYPRE.jl before. I will have a try.

Or is it possible to only use MPI for MUMPS.jl , not for the other part of code.

Sure. You can use MPI barriers. That’s what they’re for.

Thanks for your reply! I will check how to implement it. :grinning: