<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>