[petsc-users] Assembling MatSeqAICUSPARSE from kernel

Héctor Barreiro Cabrera hecbarcab at gmail.com
Wed Sep 30 09:49:21 CDT 2020


Greetings fellow PETSc users!

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.

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?

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?

Thank you very much for your help!

Greetings,
Hector Barreiro
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200930/980dcd93/attachment.html>


More information about the petsc-users mailing list