MatMatTransposeMult#

Performs matrix-matrix multiplication C=A*B^T.

Synopsis#

#include "petscmat.h" 
PetscErrorCode MatMatTransposeMult(Mat A, Mat B, MatReuse scall, PetscReal fill, Mat *C)

Neighbor-wise Collective

Input Parameters#

Output Parameter#

  • C - the product matrix

Notes#

C will be created if MAT_INITIAL_MATRIX and must be destroyed by the user with MatDestroy().

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 MATSEQAIJ matrices, for the MATSEQDENSE class, and for pairs of MATMPIDENSE matrices.

This routine is shorthand for using MatProductCreate() with the MatProductType of MATPRODUCT_ABt

Options Database Keys#

  • -matmattransmult_mpidense_mpidense_via {allgatherv,cyclic} - Choose between algorithms for MATMPIDENSE matrices: the first redundantly copies the transposed B matrix on each process and requires 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.

See Also#

Matrices, Mat, MatProductCreate(), MATPRODUCT_ABt, MatMatMult(), MatTransposeMatMult() MatPtAP(), MatProductCreate(), MatProductAlgorithm, MatProductType, MATPRODUCT_ABt

Level#

intermediate

Location#

src/mat/interface/matrix.c


Edit on GitLab

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages