#include "petscmat.h" PetscErrorCode MatMatTransposeMult(Mat A,Mat B,MatReuse scall,PetscReal fill,Mat *C)Neighbor-wise Collective on Mat
A | - the left matrix | |
B | - the right matrix | |
scall | - either MAT_INITIAL_MATRIX or MAT_REUSE_MATRIX | |
fill | - expected fill as ratio of nnz(C)/(nnz(A) + nnz(B)), use PETSC_DEFAULT if not known |
C | - the product matrix |
MAT_REUSE_MATRIX can only be used if the matrices A and B have the same nonzero pattern as in the previous call
To determine the correct fill value, run with -info and search for the string "Fill ratio" to see the value actually needed.
This routine is currently only implemented for pairs of SeqAIJ matrices, for the SeqDense class, and for pairs of MPIDense matrices.
-matmattransmult_mpidense_mpidense_via {allgatherv,cyclic} | - Choose between algorthims for MPIDense matrices: the first redundantly copies the transposed B matrix on each process and requiers O(log P) communication complexity; the second never stores more than one portion of the B matrix at a time by requires O(P) communication complexity. |