[petsc-dev] HIP / hypre

Jacob Faibussowitsch jacob.fai at gmail.com
Wed Nov 10 12:50:03 CST 2021


> What’s the plan going forward with this unified cuda/hip branch? 

The end goal is to integrate PetscDevice and PetscDeviceContext — new objects which encapsulates physical devices and device-side sets of operations respectively — into PETSc. PetscDeviceContext provides a framework for enqueueing work on device streams, but is far more extensible. For example, I extend it to a very basic graph-based “PetscCallGraph" implementation in https://gitlab.com/petsc/petsc/-/merge_requests/4217 <https://gitlab.com/petsc/petsc/-/merge_requests/4217>. I believe Junchao is also currently working on integrating SYCL into the PetscDevice framework.

> Is this related to what some of us have been hearing about PETSc eventually going with a unified wrapper over both the CUDA and HIP API?

The unified CUDA-HIP wrapper exists mainly because both APIs similar enough that it made sense to wrap them, and is the man in the middle between direct cuda/hip calls and higher-level PetscDevice/PetscDeviceContext API.

Best regards,

Jacob Faibussowitsch
(Jacob Fai - booss - oh - vitch)

> On Nov 10, 2021, at 12:28, Justin Chang <jychang48 at gmail.com> wrote:
> 
> Jacob, 
> 
> What’s the plan going forward with this unified cuda/hip branch? Is this related to what some of us have been hearing about PETSc eventually going with a unified wrapper over both the CUDA and HIP API? 
> 
> We’re interested in making the HIP port more mature, including having support for the HIP part of HYPRE, but we’re unsure what direction you guys want to go with the GPU route.
> 
> Thanks,
> Justin
> 
> On Wed, Nov 10, 2021 at 12:19 PM Justin Chang <jychang48 at gmail.com <mailto:jychang48 at gmail.com>> wrote:
> Cc’ing Paul since I misspelled his email address initially
> 
> On Wed, Nov 10, 2021 at 12:17 PM Jacob Faibussowitsch <jacob.fai at gmail.com <mailto:jacob.fai at gmail.com>> wrote:
> I’m in the process of implementing asynchronous GPU support for petsc. A side effect of this is that I unify the cuda/hip interface such that anywhere we have cuda-like code we will automatically also get the hip variant.
> 
> The scaffolding is in include/petsc/private/cupminterface.hpp, but for concrete examples see the jacobf/2021-10-21/veccupm-async branch for the WIP port of VecSeq in src/vec/vec/impls/seq/seqcupm/veccupm.hpp.
> 
> Best regards,
> 
> Jacob Faibussowitsch
> (Jacob Fai - booss - oh - vitch)
> 
>> On Nov 10, 2021, at 11:50, Justin Chang <jychang48 at gmail.com <mailto:jychang48 at gmail.com>> wrote:
>> 
>> Paul Bauman was also involved with the HIP port of HYPRE. Several of us at AMD are interested in getting HIP support for PETSc in general, and having HYPRE support would greatly help
>> 
>> On Wed, Nov 10, 2021 at 11:47 AM Stefano Zampini <stefano.zampini at gmail.com <mailto:stefano.zampini at gmail.com>> wrote:
>> I did the work last summer. It's already available in 3.16
>> 
>> Il Mer 10 Nov 2021, 20:44 Mark Adams <mfadams at lbl.gov <mailto:mfadams at lbl.gov>> ha scritto:
>> Hypre has released HIP support and Ulrike says:
>> 
>> I just want to let you know that hypre can now be used through PETSc with GPUs (both Nvidia and AMD).
>> 
>> I am guessing we have some work to do to make this happen.
>> 
>> What should I do?
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20211110/6dca306a/attachment-0001.html>


More information about the petsc-dev mailing list