[petsc-users] MatCreateSeqAIJWithArrays for GPU / cusparse

Mark Lohry mlohry at gmail.com
Wed Jan 4 14:22:26 CST 2023


I have a sparse matrix constructed in non-petsc code using a standard CSR
representation where I compute the Jacobian to be used in an implicit TS
context. In the CPU world I call

MatCreateSeqAIJWithArrays(PETSC_COMM_WORLD, nrows, ncols, rowidxptr,
colidxptr, valptr, Jac);

which as I understand it -- (1) never copies/allocates that information,
and the matrix Jac is just a non-owning view into the already allocated
CSR, (2) I can write directly into the original data structures and the Mat
just "knows" about it, although it still needs a call to
MatAssemblyBegin/MatAssemblyEnd after modifying the values. So far this
works great with GAMG.

I have the same CSR representation filled in GPU data allocated with
cudaMalloc and filled on-device. Is there an equivalent Mat constructor for
GPU arrays, or some other way to avoid unnecessary copies?

Thanks,
Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230104/b350a816/attachment.html>


More information about the petsc-users mailing list