[petsc-dev] Suggestions for MatProductCreate()

hzhang at mcs.anl.gov hzhang at mcs.anl.gov
Mon Mar 23 09:52:29 CDT 2020


Lisandro:

> * Please consider fixing MatProductCreate(A,B,C,&D) to take ownership
> (that is, increase reference count) of the A,B, and the (optional) C
> matrices provided as arguments. Otherwise it is way easy to get into the
> dangling pointer trap.
>
Can you give me a simple example of " get into the dangling pointer trap"?
We do not use reference count to keep track of A, B for Mat-Mat operations
in the current and previous versions.

>
> * A thing also missing in the new API is a way to "cleanup" the A,B,C
> references, something MatProductReset(D) to get rid of (deallocates) the
> internal "product" context, thus removing  from D the references to A,B,C.
> This would be useful if you just want to compute JUST the symbolic product,
> I'm using that in some code to compute the nonzero pattern of A^2.
>
Again, giving an example would help me understand. If you just want
the  symbolic product, you can call
MatProductCreate()
MatProductSetType()
MatProductSetFromOptions()
MatProductSymbolic().
This is equivalent to previous MatMatMultSymbolic(), and is used in some
routines of PETSc.

>
> * It should be also considered to provide backward compatibility
> PETSC_DEPRECATED calls to the previous MatMatMultSymbolic()
> and MatMatMultNumeric(). It looks like it would be trivial to do, though I
> may be getting it wrong because I have not looked at all the details.
>
 MatMatMultSymbolic/Numeric() are not recommended for users, and few
developers ever used them.  I only see one or two PETSc subroutines call
them. I do not think we need provide backward compatibility
PETSC_DEPRECATED calls for 6 pairs of such routines.

Hong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20200323/8a267a48/attachment.html>


More information about the petsc-dev mailing list