<div dir="ltr"><div dir="ltr"><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 5, 2023 at 10:32 PM Barry Smith <<a href="mailto:bsmith@petsc.dev">bsmith@petsc.dev</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On Jan 5, 2023, at 3:42 PM, Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>
> <br>
> Mark Adams <<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>> writes:<br>
> <br>
>> Support of HIP and CUDA hardware together would be crazy, <br>
> <br>
> I don't think it's remotely crazy. libCEED supports both together and it's very convenient when testing on a development machine that has one of each brand GPU and simplifies binary distribution for us and every package that uses us. Every day I wish PETSc could build with both simultaneously, but everyone tells me it's silly.<br>
<br>
  Not everyone at all; just a subset of everyone. Junchao is really the hold-out :-)<br></blockquote><div>I am not, instead I think we should try (I fully agree it can ease binary distribution).  But satish needs to install such a machine first :)</div><div>There are issues out of our control if we want to mix GPUs in execution.  For example, how to do VexAXPY on a cuda vector and a hip vector? Shall we do it on the host? Also, there are no gpu-aware MPI implementations supporting messages between cuda memory and hip memory.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
  I just don't care about "binary packages" :-); I think they are an archaic and bad way of thinking about code distribution (but yes the alternatives need lots of work to make them flawless, but I think that is where the work should go in the packaging world.)<br>
<br>
   I go further and think one should be able to automatically use a CUDA vector on a HIP device as well, it is not hard in theory but requires thinking about how we handle classes and subclasses a little to make it straightforward; or perhaps Jacob has fixed that also?</blockquote><div> </div></div></div>