<div dir="ltr">Hector, <div>It is pretty simple and a bit cumbersome, but see src/mat/tutorials/<a href="http://ex5cu.cu">ex5cu.cu</a> for the example.<br><div>Mark</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 30, 2020 at 2:32 PM Héctor Barreiro Cabrera <<a href="mailto:hecbarcab@gmail.com">hecbarcab@gmail.com</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="auto">This is awesome news! I will go over it and see how can I fit this with my code.<div dir="auto"><br></div><div dir="auto">Thank you!</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El mié., 30 sept. 2020 17:55, Barry Smith <<a href="mailto:bsmith@petsc.dev" rel="noreferrer noreferrer" target="_blank">bsmith@petsc.dev</a>> escribió:<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 style="overflow-wrap: break-word;"><div><br></div>  Hector,<div><br></div><div>   You asked at just the right time. Mark Adams has started to implement some code to do this <a href="https://gitlab.com/petsc/petsc/-/merge_requests/3137" rel="noreferrer noreferrer noreferrer" target="_blank">https://gitlab.com/petsc/petsc/-/merge_requests/3137</a> it is now in the PETSc master branch. It is preliminary and not yet well documented but hopefully if you read through the MR (above) it will give you the main ideas. </div><div><br></div><div>   Please feel free to ask questions on this topic at GitLab or on <a href="mailto:petsc-dev@mcs.anl.gov" rel="noreferrer noreferrer noreferrer" target="_blank">petsc-dev@mcs.anl.gov</a> we are eager to have users for this material and improve it to make it practical and straightforward.</div><div><br></div><div><br></div><div>  Barry</div><div><br><div><br><blockquote type="cite"><div>On Sep 30, 2020, at 9:49 AM, Héctor Barreiro Cabrera <<a href="mailto:hecbarcab@gmail.com" rel="noreferrer noreferrer noreferrer" target="_blank">hecbarcab@gmail.com</a>> wrote:</div><br><div><div dir="ltr">Greetings fellow PETSc users!<br><br>I have recently started working on a project that requires assembling and solving a large sparse linear system directly on the GPU using CUDA. I have just discovered that PETSc has support for building and solving such a system through cuSparse (MatSeqAICUSPARSE), which is quite cool because this opens up the possibility of using PETSc's awesome functionalities.<br><br>However, I have not been able to find information about how (or even if it is possible) to assemble the matrix from data stored in device memory. From the documentation, it seems that vectors (VecSeqCUDA) expose the raw device pointer through VecCUDAGetArrayRead and VecCUDAGetArrayWrite functions which I could use to update the systems' RHS vector, but I couldn't find anything alike for matrices. Is there anything equivalent?<br><br>Ideally I would like to generate all the assembly information from a kernel, avoiding any data synchronization with the host (except maybe updating the pointers). Is this even possible?<br><br>Thank you very much for your help!<br><br>Greetings,<br>Hector Barreiro</div>
</div></blockquote></div><br></div></div></blockquote></div>
</blockquote></div>