Lines Matching defs:C
355 matdescra[3] = 'c'; /* Indicates to MKL that we use C-style (0-based) indexing. */
428 matdescra[3] = 'c'; /* Indicates to MKL that we use C-style (0-based) indexing. */
502 matdescra[3] = 'c'; /* Indicates to MKL that we use C-style (0-based) indexing. */
600 matdescra[3] = 'c'; /* Indicates to MKL that we use C-style (0-based) indexing. */
679 static PetscErrorCode MatMatMultSymbolic_SeqAIJMKL_SeqAIJMKL_Private(Mat A, const sparse_operation_t transA, Mat B, const sparse_operation_t transB, Mat C)
688 /* Determine the number of rows and columns that the result matrix C will have. We have to do this ourselves because MKL does
709 PetscCall(MatSeqAIJMKL_setup_structure_from_mkl_handle(PETSC_COMM_SELF, csrC, nrows, ncols, C));
713 PetscErrorCode MatMatMultNumeric_SeqAIJMKL_SeqAIJMKL_Private(Mat A, const sparse_operation_t transA, Mat B, const sparse_operation_t transB, Mat C)
715 Mat_SeqAIJMKL *a = (Mat_SeqAIJMKL *)A->spptr, *b = (Mat_SeqAIJMKL *)B->spptr, *c = (Mat_SeqAIJMKL *)C->spptr;
736 /* Have to update the PETSc AIJ representation for matrix C from contents of MKL handle. */
737 PetscCall(MatSeqAIJMKL_update_from_mkl_handle(C));
741 PetscErrorCode MatMatMultSymbolic_SeqAIJMKL_SeqAIJMKL(Mat A, Mat B, PetscReal fill, Mat C)
744 PetscCall(MatMatMultSymbolic_SeqAIJMKL_SeqAIJMKL_Private(A, SPARSE_OPERATION_NON_TRANSPOSE, B, SPARSE_OPERATION_NON_TRANSPOSE, C));
748 PetscErrorCode MatMatMultNumeric_SeqAIJMKL_SeqAIJMKL(Mat A, Mat B, Mat C)
751 PetscCall(MatMatMultNumeric_SeqAIJMKL_SeqAIJMKL_Private(A, SPARSE_OPERATION_NON_TRANSPOSE, B, SPARSE_OPERATION_NON_TRANSPOSE, C));
755 PetscErrorCode MatTransposeMatMultNumeric_SeqAIJMKL_SeqAIJMKL(Mat A, Mat B, Mat C)
758 PetscCall(MatMatMultNumeric_SeqAIJMKL_SeqAIJMKL_Private(A, SPARSE_OPERATION_TRANSPOSE, B, SPARSE_OPERATION_NON_TRANSPOSE, C));
762 PetscErrorCode MatTransposeMatMultSymbolic_SeqAIJMKL_SeqAIJMKL(Mat A, Mat B, PetscReal fill, Mat C)
765 PetscCall(MatMatMultSymbolic_SeqAIJMKL_SeqAIJMKL_Private(A, SPARSE_OPERATION_TRANSPOSE, B, SPARSE_OPERATION_NON_TRANSPOSE, C));
769 PetscErrorCode MatMatTransposeMultSymbolic_SeqAIJMKL_SeqAIJMKL(Mat A, Mat B, PetscReal fill, Mat C)
772 PetscCall(MatMatMultSymbolic_SeqAIJMKL_SeqAIJMKL_Private(A, SPARSE_OPERATION_NON_TRANSPOSE, B, SPARSE_OPERATION_TRANSPOSE, C));
776 PetscErrorCode MatMatTransposeMultNumeric_SeqAIJMKL_SeqAIJMKL(Mat A, Mat B, Mat C)
779 PetscCall(MatMatMultNumeric_SeqAIJMKL_SeqAIJMKL_Private(A, SPARSE_OPERATION_NON_TRANSPOSE, B, SPARSE_OPERATION_TRANSPOSE, C));
783 static PetscErrorCode MatProductNumeric_AtB_SeqAIJMKL_SeqAIJMKL(Mat C)
785 Mat_Product *product = C->product;
789 PetscCall(MatTransposeMatMultNumeric_SeqAIJMKL_SeqAIJMKL(A, B, C));
793 static PetscErrorCode MatProductSymbolic_AtB_SeqAIJMKL_SeqAIJMKL(Mat C)
795 Mat_Product *product = C->product;
800 PetscCall(MatTransposeMatMultSymbolic_SeqAIJMKL_SeqAIJMKL(A, B, fill, C));
801 C->ops->productnumeric = MatProductNumeric_AtB_SeqAIJMKL_SeqAIJMKL;
805 PetscErrorCode MatPtAPNumeric_SeqAIJMKL_SeqAIJMKL_SymmetricReal(Mat A, Mat P, Mat C)
809 Mat_SeqAIJMKL *a = (Mat_SeqAIJMKL *)A->spptr, *p = (Mat_SeqAIJMKL *)P->spptr, *c = (Mat_SeqAIJMKL *)C->spptr;
833 /* Update the PETSc AIJ representation for matrix C from contents of MKL handle.
840 PetscCall(MatSeqAIJMKL_update_from_mkl_handle(C));
841 PetscCall(MatTranspose(C, MAT_INITIAL_MATRIX, &Ct));
842 PetscCall(MatCreateVecs(C, &zeros, NULL));
846 PetscCall(MatAXPY(C, 1.0, Ct, DIFFERENT_NONZERO_PATTERN));
848 PetscCall(MatProductCreateWithMat(A, P, NULL, C));
849 PetscCall(MatProductSetType(C, MATPRODUCT_PtAP));
850 PetscCall(MatSeqAIJMKL_create_mkl_handle(C));
856 PetscErrorCode MatProductSymbolic_PtAP_SeqAIJMKL_SeqAIJMKL_SymmetricReal(Mat C)
858 Mat_Product *product = C->product;
883 /* Update the I and J arrays of the PETSc AIJ representation for matrix C from contents of MKL handle.
888 PetscCall(MatSeqAIJMKL_setup_structure_from_mkl_handle(PETSC_COMM_SELF, csrC, P->cmap->N, P->cmap->N, C));
890 C->ops->productnumeric = MatProductNumeric_PtAP;
894 static PetscErrorCode MatProductSetFromOptions_SeqAIJMKL_AB(Mat C)
897 C->ops->productsymbolic = MatProductSymbolic_AB;
898 C->ops->matmultsymbolic = MatMatMultSymbolic_SeqAIJMKL_SeqAIJMKL;
902 static PetscErrorCode MatProductSetFromOptions_SeqAIJMKL_AtB(Mat C)
905 C->ops->productsymbolic = MatProductSymbolic_AtB_SeqAIJMKL_SeqAIJMKL;
909 static PetscErrorCode MatProductSetFromOptions_SeqAIJMKL_ABt(Mat C)
912 C->ops->mattransposemultsymbolic = MatMatTransposeMultSymbolic_SeqAIJ_SeqAIJ;
913 C->ops->productsymbolic = MatProductSymbolic_ABt;
917 static PetscErrorCode MatProductSetFromOptions_SeqAIJMKL_PtAP(Mat C)
919 Mat_Product *product = C->product;
927 /* we don't set C->ops->productnumeric here, as this must happen in MatProductSymbolic_PtAP_SeqAIJMKL_SeqAIJMKL_SymmetricReal() */
928 C->ops->productsymbolic = MatProductSymbolic_PtAP_SeqAIJMKL_SeqAIJMKL_SymmetricReal;
932 static PetscErrorCode MatProductSetFromOptions_SeqAIJMKL_RARt(Mat C)
935 C->ops->productsymbolic = NULL; /* MatProductSymbolic_Unsafe() will be used. */
939 static PetscErrorCode MatProductSetFromOptions_SeqAIJMKL_ABC(Mat C)
945 PetscErrorCode MatProductSetFromOptions_SeqAIJMKL(Mat C)
947 Mat_Product *product = C->product;
952 PetscCall(MatProductSetFromOptions_SeqAIJMKL_AB(C));
955 PetscCall(MatProductSetFromOptions_SeqAIJMKL_AtB(C));
958 PetscCall(MatProductSetFromOptions_SeqAIJMKL_ABt(C));
961 PetscCall(MatProductSetFromOptions_SeqAIJMKL_PtAP(C));
964 PetscCall(MatProductSetFromOptions_SeqAIJMKL_RARt(C));
967 PetscCall(MatProductSetFromOptions_SeqAIJMKL_ABC(C));
1057 /*@C