Skip to content

PETSc.jl and GPUs #102

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
thomasgibson opened this issue Sep 2, 2020 · 7 comments
Open

PETSc.jl and GPUs #102

thomasgibson opened this issue Sep 2, 2020 · 7 comments

Comments

@thomasgibson
Copy link
Member

In order to use PETSc on GPUs, we'll also need to wrap the necessary data types for CUDA and OpenCL. We'll need to provide the compiled binaries as well; https://www.mcs.anl.gov/petsc/features/gpus.html

@ViralBShah
Copy link
Member

@boriskaus I believe we do not build PETSc_jll with GPU support right? Is it something that users expect nowadays? Again, a first step towards getting this eventually is having support in the JLL.

@boriskaus
Copy link
Collaborator

boriskaus commented Oct 16, 2024

No we don't build it with GPU support (I imagine that doing that with BinaryBuilder is a nightmare).

If people are interested in this (which more and more are), they should perhaps build the correct version of PETSc themselves and link that one to PETSc.jl, instead of PETSc_jll. A crucial factor here is that we must ensure that the correct version of PETSc is being linked

@ViralBShah
Copy link
Member

ViralBShah commented Oct 16, 2024

We do it increasingly in BinaryBuilder, but it definitely increases complexity. I agree that for now, this is a future feature, and people who need it should use their own PETSc build.

Of course, contributions to do this are welcome (there are several Yggdrasil examples with GPU enabled packages now).

@b-fg
Copy link

b-fg commented Mar 14, 2025

Hi, I was looking into this package as an alternative option for our GMG in WaterLily.jl. GPU support in PETSc.jl would be very much appreciated, so I was wondering if there are plans in this direction for the short/mid term?

@boriskaus
Copy link
Collaborator

PETSc itself works with GPU support and we recently managed to scale one of our codes to a large GPU machine. This was done using our own build of PETSc. I imagine that installing GOPU support though binarybuilder is rather complicated, so I don't think I will touch that anywhere soon.
Also, this has many layers of abstraction (PETSc, for example, creates a copy of every vector on the GPU and CPU), and you certainly loose efficiency with every abstraction layer.

Unless you really need to use the nonlinear solvers of PETSc, I therefore imagine that it will be much simpler to use either ParallelStencil.jl or Chmy.jl basis for your GMG solvers, which both have excellent (parallel) GPU support on different flavors of GPUs. Since this is written in Julia it is closer to the GPU chip, so I imagine that you loose less efficiency (although I haven't measured that)

@b-fg
Copy link

b-fg commented Mar 14, 2025

Thanks for the details. I was looking for an alternative to our GMG, which already works with GPUs. The only constraints I had in mind were support for MPI, automatic differentiation, and GPU. The packages you mention offer support for finite differences/general stencils, but not as linear algebra solvers, right?

@ViralBShah
Copy link
Member

Actually it may not be too hard to add gpu support. Lots of packages do that nowadays. It is worth a shot at least.

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

No branches or pull requests

4 participants