:orphan: # MatProductSetFromOptions Sets the options for the computation of a matrix-matrix product operation where the type, the algorithm etc are determined from the options database. ## Synopsis ``` #include "petscmat.h" PetscErrorCode MatProductSetFromOptions(Mat mat) ``` Logically Collective ## Input Parameter - ***mat -*** the matrix whose values are computed via a matrix-matrix product operation ## Options Database Keys - ***-mat_product_clear -*** Clear intermediate data structures after `MatProductNumeric()` has been called - ***-mat_product_algorithm -*** Sets the algorithm, see `MatProductAlgorithm` for possible values - ***-mat_product_algorithm_backend_cpu -*** Use the CPU to perform the computation even if the matrix is a GPU matrix ## Note The `-mat_product_clear` option reduces memory usage but means that the matrix cannot be re-used for a matrix-matrix product operation ## See Also [](ch_matrices), `MatProduct`, `Mat`, `MatSetFromOptions()`, `MatProductCreate()`, `MatProductCreateWithMat()`, `MatProductNumeric()`, `MatProductSetType()`, `MatProductSetAlgorithm()`, `MatProductAlgorithm` ## Level intermediate ## Location src/mat/interface/matproduct.c ## Examples src/tao/pde_constrained/tutorials/parabolic.c
## Implementations MatProductSetFromOptions_MPIAIJKokkos in src/mat/impls/aij/mpi/kokkos/mpiaijkok.kokkos.cxx
MatProductSetFromOptions_MPIAIJBACKEND in src/mat/impls/aij/mpi/mpiaij.c
MatProductSetFromOptions_MPIAIJ in src/mat/impls/aij/mpi/mpimatmatmult.c
MatProductSetFromOptions_SeqAIJMKL in src/mat/impls/aij/seq/aijmkl/aijmkl.c
MatProductSetFromOptions_SeqAIJKokkos in src/mat/impls/aij/seq/kokkos/aijkok.kokkos.cxx
MatProductSetFromOptions_SeqAIJ in src/mat/impls/aij/seq/matmatmult.c
MatProductSetFromOptions_SeqAIJCUSPARSE in src/mat/impls/aij/seq/seqcusparse/aijcusparse.cu
MatProductSetFromOptions_SeqAIJHIPSPARSE in src/mat/impls/aij/seq/seqhipsparse/aijhipsparse.hip.c
MatProductSetFromOptions_MPIDense in src/mat/impls/dense/mpi/mpidense.c
MatProductSetFromOptions_SeqDense in src/mat/impls/dense/seq/dense.c
MatProductSetFromOptions_Elemental in src/mat/impls/elemental/matelem.cxx
MatProductSetFromOptions_H2OPUS in src/mat/impls/h2opus/cuda/math2opus.cu
MatProductSetFromOptions_Htool in src/mat/impls/htool/htool.cxx
MatProductSetFromOptions_HYPRE in src/mat/impls/hypre/mhypre.c
MatProductSetFromOptions_ScaLAPACK in src/mat/impls/scalapack/matscalapack.c
MatProductSetFromOptions_CF in src/mat/impls/shell/shellcnv.c
MatProductSetFromOptions_HermitianTranspose in src/mat/impls/transpose/htransm.c
MatProductSetFromOptions_Transpose in src/mat/impls/transpose/transm.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/interface/matproduct.c) [Index of all Mat routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)