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 >
