<div dir="ltr"><div>Hi, Sherry,</div><div>  A petsc user wants to call MatSolve(mat, b, x) multiple times with different b on GPUs. In petsc, the code is like</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">PetscScalar *bptr = NULL;<br>VecGetArray(b, &bptr)<br>pdgssvx3d(.., bptr, ..);</blockquote>Note VecGetArray() returns a host pointer. If vector b's latest data is on GPU, PETSc needs to do a device to host memory copy. Now we want to save this memory copy and directly pass b's device pointer (obtained via VecCUDAGetArray()) to superlu_dist. But I did not find a mechanism for me to tell superlu_dist that bptr is a device pointer.<br>Do you have suggestions?<br><br>Thanks<br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 6, 2022 at 2:32 PM Sajid Ali <<a href="mailto:sajidsyed2021@u.northwestern.edu" target="_blank">sajidsyed2021@u.northwestern.edu</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"><div dir="ltr">Hi PETSc-developers, <div><br></div><div><div>Does PETSc currently provide (either native or third party support) for MatSolve that can be performed entirely on a GPU given a factored matrix? i.e. a direct solver that would store the factors L and U on the device and use the GPU to solve the linear system. It does not matter if the GPU is not used for the factorization as we intend to solve the same linear system for 100s of iterations and thus try to prevent GPU->CPU transfers for the MatSolve phase. </div><div><br></div><div>Currently, I've built PETSc@main (commit 9c433d, 10/03) with superlu-dist@develop, both of which are configured with CUDA. With this, I'm seeing that each call to PCApply/MatSolve involves one GPU->CPU transfer. Is it possible to avoid this?</div><div><div><br></div><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)"></div>

<div></div>

Thank You,<br>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div style="font-size:12.8px">Sajid Ali (he/him) | Research Associate<br>
</div>
<div style="font-size:12.8px">Scientific Computing Division<br>
</div>
<div style="font-size:12.8px">Fermi National Accelerator Laboratory<br>
</div>
<span style="font-size:12.8px"><a href="http://s-sajid-ali.github.io" target="_blank">s-sajid-ali.github.io</a></span></div>
</div>
</div>
</div>
</div>
</div></div></div></div></div></div></div></div></div></div>
</blockquote></div></div>