On Tue, 6 Jun 2017 13:44:06 -0500, Hong wrote:
Pierre :

Yes, of course I defined (*C)->ops->matmultnumeric =
MatMatMultNumeric_MPIBAIJ_MPIDense in
MatMatMultSymbolic_MPIBAIJ_MPIDense.
However, the routine MatMatMultSymbolic_MPIBAIJ_MPIDense is never
reached when calling MatMatMult with scall == MAT_REUSE_MATRIX


(http://www.mcs.anl.gov/petsc/petsc-current/src/mat/interface/matrix.c.html#line9487
[1], just to be sure I added a dummy printf in
MatMatMultSymbolic_MPIBAIJ_MPIDense and nothing is displayed with
MAT_REUSE_MATRIX, MAT_INITIAL_MATRIX works as intended)

 MatMatMultSymbolic_xxx() is called only for MAT_INITIAL_MATRIX,
during which, it defines
(*C)->ops->matmultnumeric = MatMatMultNumeric_MPIBAIJ_MPIDense;

Sorry, I was not thorough enough. What I meant to say is that I never call MatMatMult with MAT_INITIAL_MATRIX, so MatMatMultSymbolic_xxx is never called.
Is there another way?
I cannot use MAT_INITIAL_MATRIX because I want to manage the underlying memory, and I'm guessing MAT_INITIAL_MATRIX will delete whatever is in C and reallocate memory on its own.

Thanks in advance for your help,
Pierre

Then MatMatMult(A,C,MAT_REUSE_MATRIX,..) calls 
 (*(*C)->ops->matmultnumeric)(A,B,*C); (line 9432 in matrix.c)

which should go to MatMatMultNumeric_MPIBAIJ_MPIDense.

You may follow a debugging process
using petsc/src/mat/examples/tests/ex109.c

Are you working on a branch of petsc? If so, I may take a look and
see what is the problem.

Hong

2) I'm having trouble when scall == MAT_REUSE_MATRIX. Here,





http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/dense/mpi/mpidense.c.html#line1208
[2]

[2] it looks that the numeric part of the MatMatMult (which is
called when scall == MAT_REUSE_MATRIX) is hardwired to this
routine





http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mpimatmatmult.c.html#line376
[3]
[3]. 
br>



s.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mpimatmatmult.c.html#line556"
rel="noreferrer"



target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mpimatmatmult.c.html#line556
[2]





http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/dense/mpi/mpidense.c.html#line1208
[4]
[3]





http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mpimatmatmult.c.html#line376
[5]



Links:
------
[1]

http://www.mcs.anl.gov/petsc/petsc-current/src/mat/interface/matrix.c.html#line9487
[2]

http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/dense/mpi/mpidense.c.html#line1208
[3]

http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mpimatmatmult.c.html#line376
[4]

http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/dense/mpi/mpidense.c.html#line1208
[5]

http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mpimatmatmult.c.html#line376

Reply via email to