[petsc-dev] Suggestions for MatProductCreate()
Satish Balay
balay at mcs.anl.gov
Mon Mar 23 09:56:56 CDT 2020
On Mon, 23 Mar 2020, hzhang--- via petsc-dev wrote:
> 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.
If there is a simple map from old API to new API [just new names, or reorder arguments] - we should include the old API with PETSC_DEPRECATED
Alternative is PETSC_DEPRECATED with some error statement? Jed will know better..
Satish
>
> Hong
>
More information about the petsc-dev
mailing list