> 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 <[email protected]> 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 <[email protected] 
> <mailto:[email protected]>> wrote:
> Cc’ing Paul since I misspelled his email address initially
> 
> On Wed, Nov 10, 2021 at 12:17 PM Jacob Faibussowitsch <[email protected] 
> <mailto:[email protected]>> 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 <[email protected] 
>> <mailto:[email protected]>> 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 <[email protected] 
>> <mailto:[email protected]>> wrote:
>> I did the work last summer. It's already available in 3.16
>> 
>> Il Mer 10 Nov 2021, 20:44 Mark Adams <[email protected] 
>> <mailto:[email protected]>> 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?
> 

Reply via email to