Hong, José didn’t report this, though he may have run into the same issue, I did. I’ll try the branch and get back at you on GitLab MR.
Thanks, Pierre > On 25 Apr 2020, at 6:17 PM, Zhang, Hong <[email protected]> wrote: > > Jose, > > >> I also now just tested some previously PETSC_VERSION_LT(3,13,0) running > >> code with C=A*B, Dense=Nest*Dense, all previously allocated prior to a > >> call to MatMatMult and scall = MAT_REUSE_MATRIX. > >> Sadly, it’s now broken. It is my fault for not having a test for this in > >> https://gitlab.com/petsc/petsc/-/merge_requests/2069 > >> <https://gitlab.com/petsc/petsc/-/merge_requests/2069>, sorry about that. > >> [0]PETSC ERROR: Call MatProductSymbolic() first > >> [0]PETSC ERROR: #1 MatProductNumeric() line 730 in > >> /ccc/work/cont003/rndm/rndm/petsc/src/mat/interface/matproduct.c > >> [0]PETSC ERROR: #2 MatMatMult() line 9335 in > >> /ccc/work/cont003/rndm/rndm/petsc/src/mat/interface/matrix.c > >> > >> Here is a reproducer (that will work OK with 3.12.4). > >> diff --git a/src/mat/tests/ex195.c b/src/mat/tests/ex195.c > >> index c72662bc3c..811de669c5 100644 > >> --- a/src/mat/tests/ex195.c > >> +++ b/src/mat/tests/ex195.c > >> @@ -73,2 +73,3 @@ int main(int argc,char **args) > >> ierr = > >> MatMatMult(nest,B,MAT_REUSE_MATRIX,PETSC_DEFAULT,&C);CHKERRQ(ierr); > >> + ierr = > >> MatMatMult(nest,C,MAT_REUSE_MATRIX,PETSC_DEFAULT,&B);CHKERRQ(ierr); > >> ierr = MatMatMultEqual(nest,B,C,10,&equal);CHKERRQ(ierr); > >> > >> $ make -f gmakefile test searchin=mat_tests-ex195 > >> > >> I believe this is very close to the topic at hand and issue #608, so maybe > >> you could fix this as well in the same upcoming MR? Just let me know, I > >> can have a crack it otherwise. > > This is a bug. I fixed it in the branch hzhang/fix-matproduct-reuse/maint. > Can you test it? > Hong
