Lines Matching refs:ptap

19   MatProductCtx_APMPI *ptap;  in MatView_MPIAIJ_PtAP()  local
23 ptap = (MatProductCtx_APMPI *)A->product->data; in MatView_MPIAIJ_PtAP()
28 if (ptap->algType == 0) { in MatView_MPIAIJ_PtAP()
30 } else if (ptap->algType == 1) { in MatView_MPIAIJ_PtAP()
32 } else if (ptap->algType == 2) { in MatView_MPIAIJ_PtAP()
34 } else if (ptap->algType == 3) { in MatView_MPIAIJ_PtAP()
44 MatProductCtx_APMPI *ptap = *(MatProductCtx_APMPI **)data; in MatProductCtxDestroy_MPIAIJ_PtAP() local
48 PetscCall(PetscFree2(ptap->startsj_s, ptap->startsj_r)); in MatProductCtxDestroy_MPIAIJ_PtAP()
49 PetscCall(PetscFree(ptap->bufa)); in MatProductCtxDestroy_MPIAIJ_PtAP()
50 PetscCall(MatDestroy(&ptap->P_loc)); in MatProductCtxDestroy_MPIAIJ_PtAP()
51 PetscCall(MatDestroy(&ptap->P_oth)); in MatProductCtxDestroy_MPIAIJ_PtAP()
52 PetscCall(MatDestroy(&ptap->A_loc)); /* used by MatTransposeMatMult() */ in MatProductCtxDestroy_MPIAIJ_PtAP()
53 PetscCall(MatDestroy(&ptap->Rd)); in MatProductCtxDestroy_MPIAIJ_PtAP()
54 PetscCall(MatDestroy(&ptap->Ro)); in MatProductCtxDestroy_MPIAIJ_PtAP()
55 if (ptap->AP_loc) { /* used by alg_rap */ in MatProductCtxDestroy_MPIAIJ_PtAP()
56 Mat_SeqAIJ *ap = (Mat_SeqAIJ *)ptap->AP_loc->data; in MatProductCtxDestroy_MPIAIJ_PtAP()
59 PetscCall(MatDestroy(&ptap->AP_loc)); in MatProductCtxDestroy_MPIAIJ_PtAP()
61 PetscCall(PetscFree(ptap->api)); in MatProductCtxDestroy_MPIAIJ_PtAP()
62 PetscCall(PetscFree(ptap->apj)); in MatProductCtxDestroy_MPIAIJ_PtAP()
64 PetscCall(MatDestroy(&ptap->C_loc)); in MatProductCtxDestroy_MPIAIJ_PtAP()
65 PetscCall(MatDestroy(&ptap->C_oth)); in MatProductCtxDestroy_MPIAIJ_PtAP()
66 if (ptap->apa) PetscCall(PetscFree(ptap->apa)); in MatProductCtxDestroy_MPIAIJ_PtAP()
68 PetscCall(MatDestroy(&ptap->Pt)); in MatProductCtxDestroy_MPIAIJ_PtAP()
70 merge = ptap->merge; in MatProductCtxDestroy_MPIAIJ_PtAP()
85 PetscCall(PetscFree(ptap->merge)); in MatProductCtxDestroy_MPIAIJ_PtAP()
87 PetscCall(ISLocalToGlobalMappingDestroy(&ptap->ltog)); in MatProductCtxDestroy_MPIAIJ_PtAP()
89 PetscCall(PetscSFDestroy(&ptap->sf)); in MatProductCtxDestroy_MPIAIJ_PtAP()
90 PetscCall(PetscFree(ptap->c_othi)); in MatProductCtxDestroy_MPIAIJ_PtAP()
91 PetscCall(PetscFree(ptap->c_rmti)); in MatProductCtxDestroy_MPIAIJ_PtAP()
92 PetscCall(PetscFree(ptap)); in MatProductCtxDestroy_MPIAIJ_PtAP()
101 MatProductCtx_APMPI *ptap; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable() local
110 ptap = (MatProductCtx_APMPI *)C->product->data; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
111 …PetscCheck(ptap, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot be comput… in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
112 …PetscCheck(ptap->AP_loc, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot b… in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
117 if (ptap->reuse == MAT_REUSE_MATRIX) { in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
118 PetscCall(MatTranspose(p->A, MAT_REUSE_MATRIX, &ptap->Rd)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
119 PetscCall(MatTranspose(p->B, MAT_REUSE_MATRIX, &ptap->Ro)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
123 AP_loc = ptap->AP_loc; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
127 if (ptap->reuse == MAT_REUSE_MATRIX) { in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
129 …tGetBrowsOfAoCols_MPIAIJ(A, P, MAT_REUSE_MATRIX, &ptap->startsj_s, &ptap->startsj_r, &ptap->bufa, … in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
130 PetscCall(MatMPIAIJGetLocalMat(P, MAT_REUSE_MATRIX, &ptap->P_loc)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
135 p_loc = (Mat_SeqAIJ *)ptap->P_loc->data; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
136 if (ptap->P_oth) p_oth = (Mat_SeqAIJ *)ptap->P_oth->data; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
140 PetscCall(ISLocalToGlobalMappingApply(ptap->ltog, api[AP_loc->rmap->n], apj, apj)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
148 …PetscCall(ISGlobalToLocalMappingApply(ptap->ltog, IS_GTOLM_DROP, api[AP_loc->rmap->n], apj, &nout,… in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
153 PetscCall(MatMatMultNumeric_SeqAIJ_SeqAIJ_Scalable(ptap->Rd, AP_loc, ptap->C_loc)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
154 PetscCall(MatMatMultNumeric_SeqAIJ_SeqAIJ_Scalable(ptap->Ro, AP_loc, ptap->C_oth)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
156 C_loc = ptap->C_loc; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
157 C_oth = ptap->C_oth; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
167 PetscCall(ISLocalToGlobalMappingApply(ptap->ltog, c_seq->i[C_loc->rmap->n], c_seq->j, c_seq->j)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
189 …PetscCall(ISGlobalToLocalMappingApply(ptap->ltog, IS_GTOLM_DROP, c_seq->i[C_loc->rmap->n], c_seq->… in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
197 PetscCall(ISLocalToGlobalMappingApply(ptap->ltog, c_seq->i[C_oth->rmap->n], c_seq->j, c_seq->j)); in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
208 ptap->reuse = MAT_REUSE_MATRIX; in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
210 …PetscCall(ISGlobalToLocalMappingApply(ptap->ltog, IS_GTOLM_DROP, c_seq->i[C_oth->rmap->n], c_seq->… in MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable()
217 MatProductCtx_APMPI *ptap; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable() local
260 PetscCall(PetscNew(&ptap)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
261 ptap->reuse = MAT_INITIAL_MATRIX; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
262 ptap->algType = 0; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
265 …l(MatGetBrowsOfAoCols_MPIAIJ(A, P, MAT_INITIAL_MATRIX, &ptap->startsj_s, &ptap->startsj_r, &ptap->… in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
269 ptap->P_loc = P_loc; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
270 ptap->P_oth = P_oth; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
273 PetscCall(MatTranspose(p->A, MAT_INITIAL_MATRIX, &ptap->Rd)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
274 PetscCall(MatTranspose(p->B, MAT_INITIAL_MATRIX, &ptap->Ro)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
348 PetscCall(MatCreateSeqAIJWithArrays(PETSC_COMM_SELF, am, pN, api, apj, apv, &ptap->AP_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
349 PetscCall(MatSeqAIJCompactOutExtraColumns_SeqAIJ(ptap->AP_loc, &ptap->ltog)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
357 ptap->AP_loc->info.mallocs = nspacedouble; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
358 ptap->AP_loc->info.fill_ratio_given = fill; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
359 ptap->AP_loc->info.fill_ratio_needed = apfill; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
362 …PetscCall(PetscInfo(ptap->AP_loc, "Scalable algorithm, AP_loc reallocs %" PetscInt_FMT "; Fill rat… in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
363 …PetscCall(PetscInfo(ptap->AP_loc, "Use MatPtAP(A,B,MatReuse,%g,&C) for best AP_loc performance.;\n… in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
365 PetscCall(PetscInfo(ptap->AP_loc, "Scalable algorithm, AP_loc is empty \n")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
370 PetscCall(MatProductCreate(ptap->Ro, ptap->AP_loc, NULL, &ptap->C_oth)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
372 PetscCall(MatSetOptionsPrefix(ptap->C_oth, prefix)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
373 PetscCall(MatAppendOptionsPrefix(ptap->C_oth, "inner_offdiag_")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
375 PetscCall(MatProductSetType(ptap->C_oth, MATPRODUCT_AB)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
376 PetscCall(MatProductSetAlgorithm(ptap->C_oth, "sorted")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
377 PetscCall(MatProductSetFill(ptap->C_oth, fill)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
378 PetscCall(MatProductSetFromOptions(ptap->C_oth)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
379 PetscCall(MatProductSymbolic(ptap->C_oth)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
394 c_oth = (Mat_SeqAIJ *)ptap->C_oth->data; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
397 con = ptap->C_oth->rmap->n; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
399 PetscCall(ISLocalToGlobalMappingApply(ptap->ltog, coi[con], coj, coj)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
434 PetscCall(MatProductCreate(ptap->Rd, ptap->AP_loc, NULL, &ptap->C_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
435 PetscCall(MatProductSetType(ptap->C_loc, MATPRODUCT_AB)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
436 PetscCall(MatProductSetAlgorithm(ptap->C_loc, "default")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
437 PetscCall(MatProductSetFill(ptap->C_loc, fill)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
439 PetscCall(MatSetOptionsPrefix(ptap->C_loc, prefix)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
440 PetscCall(MatAppendOptionsPrefix(ptap->C_loc, "inner_diag_")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
442 PetscCall(MatProductSetFromOptions(ptap->C_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
443 PetscCall(MatProductSymbolic(ptap->C_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
445 c_loc = (Mat_SeqAIJ *)ptap->C_loc->data; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
446 …PetscCall(ISLocalToGlobalMappingApply(ptap->ltog, c_loc->i[ptap->C_loc->rmap->n], c_loc->j, c_loc-… in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
557 …PetscCall(ISGlobalToLocalMappingApply(ptap->ltog, IS_GTOLM_DROP, c_oth->i[ptap->C_oth->rmap->n], c… in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
558 …th->i[ptap->C_oth->rmap->n] == nout, PETSC_COMM_SELF, PETSC_ERR_ARG_INCOMP, "Incorrect mapping %" … in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
559 …PetscCall(ISGlobalToLocalMappingApply(ptap->ltog, IS_GTOLM_DROP, c_loc->i[ptap->C_loc->rmap->n], c… in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
560 …oc->i[ptap->C_loc->rmap->n] == nout, PETSC_COMM_SELF, PETSC_ERR_ARG_INCOMP, "Incorrect mapping %" … in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
563 Cmpi->product->data = ptap; in MatPtAPSymbolic_MPIAIJ_MPIAIJ_scalable()
699 MatProductCtx_APMPI *ptap; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce() local
709 ptap = (MatProductCtx_APMPI *)C->product->data; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
710 …PetscCheck(ptap, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot be comput… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
711 …PetscCheck(ptap->P_oth, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot be… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
716 if (ptap->reuse == MAT_REUSE_MATRIX) { in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
718 PetscCall(MatGetBrowsOfAcols_MPIXAIJ(A, P, dof, MAT_REUSE_MATRIX, &ptap->P_oth)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
720 …PetscCall(PetscObjectQuery((PetscObject)ptap->P_oth, "aoffdiagtopothmapping", (PetscObject *)&map)… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
724 PetscCall(PetscCalloc2(ptap->c_rmti[pon], &c_rmtj, ptap->c_rmti[pon], &c_rmta)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
727 for (i = 0; i < pon; i++) cmaxr = PetscMax(cmaxr, ptap->c_rmti[i + 1] - ptap->c_rmti[i]); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
737 …PetscCall(MatPtAPNumericComputeOneRowOfAP_private(A, P, ptap->P_oth, mappingindices, dof, i, hmap)… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
747 c_rmtjj = c_rmtj + ptap->c_rmti[pocol]; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
748 c_rmtaa = c_rmta + ptap->c_rmti[pocol]; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
783 PetscCall(PetscCalloc2(ptap->c_othi[pn], &c_othj, ptap->c_othi[pn], &c_otha)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
785 PetscCall(PetscSFReduceBegin(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
786 PetscCall(PetscSFReduceBegin(ptap->sf, MPIU_SCALAR, c_rmta, c_otha, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
803 …PetscCall(MatPtAPNumericComputeOneRowOfAP_private(A, P, ptap->P_oth, mappingindices, dof, i, hmap)… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
821 PetscCall(PetscSFReduceEnd(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
822 PetscCall(PetscSFReduceEnd(ptap->sf, MPIU_SCALAR, c_rmta, c_otha, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
828 …, 1, &row, ptap->c_othi[i + 1] - ptap->c_othi[i], PetscSafePointerPlusOffset(c_othj, ptap->c_othi[… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
835 ptap->reuse = MAT_REUSE_MATRIX; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce()
850 MatProductCtx_APMPI *ptap; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged() local
860 ptap = (MatProductCtx_APMPI *)C->product->data; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
861 …PetscCheck(ptap, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot be comput… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
862 …PetscCheck(ptap->P_oth, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot be… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
867 if (ptap->reuse == MAT_REUSE_MATRIX) { in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
869 PetscCall(MatGetBrowsOfAcols_MPIXAIJ(A, P, dof, MAT_REUSE_MATRIX, &ptap->P_oth)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
871 …PetscCall(PetscObjectQuery((PetscObject)ptap->P_oth, "aoffdiagtopothmapping", (PetscObject *)&map)… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
877 PetscCall(PetscCalloc2(ptap->c_rmti[pon], &c_rmtj, ptap->c_rmti[pon], &c_rmta)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
883 for (i = 0; i < pon; i++) cmaxr = PetscMax(cmaxr, ptap->c_rmti[i + 1] - ptap->c_rmti[i]); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
897 …PetscCall(MatPtAPNumericComputeOneRowOfAP_private(A, P, ptap->P_oth, mappingindices, dof, i, hmap)… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
907 c_rmtjj = c_rmtj + ptap->c_rmti[pocol]; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
908 c_rmtaa = c_rmta + ptap->c_rmti[pocol]; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
951 PetscCall(PetscCalloc2(ptap->c_othi[pn], &c_othj, ptap->c_othi[pn], &c_otha)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
953 PetscCall(PetscSFReduceBegin(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
954 PetscCall(PetscSFReduceBegin(ptap->sf, MPIU_SCALAR, c_rmta, c_otha, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
955 PetscCall(PetscSFReduceEnd(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
956 PetscCall(PetscSFReduceEnd(ptap->sf, MPIU_SCALAR, c_rmta, c_otha, MPI_REPLACE)); in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
962 …, 1, &row, ptap->c_othi[i + 1] - ptap->c_othi[i], PetscSafePointerPlusOffset(c_othj, ptap->c_othi[… in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
969 ptap->reuse = MAT_REUSE_MATRIX; in MatPtAPNumeric_MPIAIJ_MPIXAIJ_allatonce_merged()
983 MatProductCtx_APMPI *ptap; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce() local
1014 PetscCall(PetscNew(&ptap)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1015 ptap->reuse = MAT_INITIAL_MATRIX; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1016 ptap->algType = 2; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1019 PetscCall(MatGetBrowsOfAcols_MPIXAIJ(A, P, dof, MAT_INITIAL_MATRIX, &ptap->P_oth)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1020 …PetscCall(PetscObjectQuery((PetscObject)ptap->P_oth, "aoffdiagtopothmapping", (PetscObject *)&map)… in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1025 PetscCall(PetscMalloc1(pon + 1, &ptap->c_rmti)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1036 ptap->c_rmti[0] = 0; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1047 …PetscCall(MatPtAPSymbolicComputeOneRowOfAP_private(A, P, ptap->P_oth, mappingindices, dof, i, ht, … in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1058 ptap->c_rmti[i + 1] = ptap->c_rmti[i] + htsize; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1062 PetscCall(PetscMalloc1(ptap->c_rmti[pon], &c_rmtj)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1066 PetscCall(PetscHSetIGetElems(hta[i], &off, c_rmtj + ptap->c_rmti[i])); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1101 PetscCall(PetscCalloc1(pn + 1, &ptap->c_othi)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1103 ptap->c_othi[0] = 0; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1113 ptap->c_othi[i + 1] = ptap->c_othi[i] + rcvncols; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1123 PetscCall(PetscCalloc1(ptap->c_rmti[pon], &iremote)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1129 sendncols = ptap->c_rmti[i + 1] - ptap->c_rmti[i]; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1136 PetscCall(PetscCalloc1(ptap->c_othi[pn], &c_othj)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1138 PetscCall(PetscSFCreate(comm, &ptap->sf)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1139 …PetscCall(PetscSFSetGraph(ptap->sf, ptap->c_othi[pn], nleaves, NULL, PETSC_OWN_POINTER, iremote, P… in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1140 PetscCall(PetscSFSetFromOptions(ptap->sf)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1142 PetscCall(PetscSFReduceBegin(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1164 …PetscCall(MatPtAPSymbolicComputeOneRowOfAP_private(A, P, ptap->P_oth, mappingindices, dof, i, ht, … in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1182 PetscCall(PetscSFReduceEnd(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1186 nzi = ptap->c_othi[i + 1] - ptap->c_othi[i]; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1187 rdj = PetscSafePointerPlusOffset(c_othj, ptap->c_othi[i]); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1216 Cmpi->product->data = ptap; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce()
1249 MatProductCtx_APMPI *ptap; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged() local
1280 PetscCall(PetscNew(&ptap)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1281 ptap->reuse = MAT_INITIAL_MATRIX; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1282 ptap->algType = 3; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1285 PetscCall(MatGetBrowsOfAcols_MPIXAIJ(A, P, dof, MAT_INITIAL_MATRIX, &ptap->P_oth)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1286 …PetscCall(PetscObjectQuery((PetscObject)ptap->P_oth, "aoffdiagtopothmapping", (PetscObject *)&map)… in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1292 PetscCall(PetscMalloc1(pon + 1, &ptap->c_rmti)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1309 ptap->c_rmti[0] = 0; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1322 …PetscCall(MatPtAPSymbolicComputeOneRowOfAP_private(A, P, ptap->P_oth, mappingindices, dof, i, ht, … in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1350 ptap->c_rmti[i + 1] = ptap->c_rmti[i] + htsize; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1354 PetscCall(PetscMalloc1(ptap->c_rmti[pon], &c_rmtj)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1358 PetscCall(PetscHSetIGetElems(hta[i], &off, c_rmtj + ptap->c_rmti[i])); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1393 PetscCall(PetscMalloc1(pn + 1, &ptap->c_othi)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1395 ptap->c_othi[0] = 0; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1405 ptap->c_othi[i + 1] = ptap->c_othi[i] + rcvncols; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1415 PetscCall(PetscCalloc1(ptap->c_rmti[pon], &iremote)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1421 sendncols = ptap->c_rmti[i + 1] - ptap->c_rmti[i]; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1428 PetscCall(PetscCalloc1(ptap->c_othi[pn], &c_othj)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1430 PetscCall(PetscSFCreate(comm, &ptap->sf)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1431 …PetscCall(PetscSFSetGraph(ptap->sf, ptap->c_othi[pn], nleaves, NULL, PETSC_OWN_POINTER, iremote, P… in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1432 PetscCall(PetscSFSetFromOptions(ptap->sf)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1434 PetscCall(PetscSFReduceBegin(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1436 PetscCall(PetscSFReduceEnd(ptap->sf, MPIU_INT, c_rmtj, c_othj, MPI_REPLACE)); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1443 nzi = ptap->c_othi[i + 1] - ptap->c_othi[i]; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1444 rdj = PetscSafePointerPlusOffset(c_othj, ptap->c_othi[i]); in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1472 Cmpi->product->data = ptap; in MatPtAPSymbolic_MPIAIJ_MPIXAIJ_allatonce_merged()
1505 MatProductCtx_APMPI *ptap; in MatPtAPSymbolic_MPIAIJ_MPIAIJ() local
1550 PetscCall(PetscNew(&ptap)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1551 ptap->reuse = MAT_INITIAL_MATRIX; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1552 ptap->algType = 1; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1555 …etBrowsOfAoCols_MPIAIJ(A, P, MAT_INITIAL_MATRIX, &ptap->startsj_s, &ptap->startsj_r, &ptap->bufa, … in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1557 PetscCall(MatMPIAIJGetLocalMat(P, MAT_INITIAL_MATRIX, &ptap->P_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1560 PetscCall(MatTranspose(p->A, MAT_INITIAL_MATRIX, &ptap->Rd)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1561 PetscCall(MatTranspose(p->B, MAT_INITIAL_MATRIX, &ptap->Ro)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1564 p_loc = (Mat_SeqAIJ *)ptap->P_loc->data; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1565 if (ptap->P_oth) p_oth = (Mat_SeqAIJ *)ptap->P_oth->data; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1569 MatRowMergeMax_SeqAIJ(p_loc, ptap->P_loc->rmap->N, ta); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1570 MatRowMergeMax_SeqAIJ(p_oth, ptap->P_oth->rmap->N, ta); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1637 PetscCall(MatCreateSeqAIJWithArrays(PETSC_COMM_SELF, am, pN, api, apj, apv, &ptap->AP_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1638 PetscCall(MatSetType(ptap->AP_loc, ((PetscObject)p->A)->type_name)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1645 ptap->AP_loc->info.mallocs = nspacedouble; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1646 ptap->AP_loc->info.fill_ratio_given = fill; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1647 ptap->AP_loc->info.fill_ratio_needed = apfill; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1650 …PetscCall(PetscInfo(ptap->AP_loc, "Nonscalable algorithm, AP_loc reallocs %" PetscInt_FMT "; Fill … in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1651 …PetscCall(PetscInfo(ptap->AP_loc, "Use MatPtAP(A,B,MatReuse,%g,&C) for best AP_loc performance.;\n… in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1653 PetscCall(PetscInfo(ptap->AP_loc, "Nonscalable algorithm, AP_loc is empty \n")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1659 PetscCall(MatSetOptionsPrefix(ptap->Ro, prefix)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1660 PetscCall(MatAppendOptionsPrefix(ptap->Ro, "inner_offdiag_")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1661 PetscCall(MatProductCreate(ptap->Ro, ptap->AP_loc, NULL, &ptap->C_oth)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1663 PetscCall(MatSetOptionsPrefix(ptap->C_oth, prefix)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1664 PetscCall(MatAppendOptionsPrefix(ptap->C_oth, "inner_C_oth_")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1665 PetscCall(MatProductSetType(ptap->C_oth, MATPRODUCT_AB)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1666 PetscCall(MatProductSetAlgorithm(ptap->C_oth, "default")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1667 PetscCall(MatProductSetFill(ptap->C_oth, fill)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1668 PetscCall(MatProductSetFromOptions(ptap->C_oth)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1669 PetscCall(MatProductSymbolic(ptap->C_oth)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1684 c_oth = (Mat_SeqAIJ *)ptap->C_oth->data; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1687 con = ptap->C_oth->rmap->n; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1723 PetscCall(MatSetOptionsPrefix(ptap->Rd, prefix)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1724 PetscCall(MatAppendOptionsPrefix(ptap->Rd, "inner_diag_")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1725 PetscCall(MatProductCreate(ptap->Rd, ptap->AP_loc, NULL, &ptap->C_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1727 PetscCall(MatSetOptionsPrefix(ptap->C_loc, prefix)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1728 PetscCall(MatAppendOptionsPrefix(ptap->C_loc, "inner_C_loc_")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1729 PetscCall(MatProductSetType(ptap->C_loc, MATPRODUCT_AB)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1730 PetscCall(MatProductSetAlgorithm(ptap->C_loc, "default")); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1731 PetscCall(MatProductSetFill(ptap->C_loc, fill)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1732 PetscCall(MatProductSetFromOptions(ptap->C_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1733 PetscCall(MatProductSymbolic(ptap->C_loc)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1735 c_loc = (Mat_SeqAIJ *)ptap->C_loc->data; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1845 PetscCall(PetscCalloc1(pN, &ptap->apa)); in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1848 Cmpi->product->data = ptap; in MatPtAPSymbolic_MPIAIJ_MPIAIJ()
1862 MatProductCtx_APMPI *ptap; in MatPtAPNumeric_MPIAIJ_MPIAIJ() local
1872 ptap = (MatProductCtx_APMPI *)C->product->data; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1873 …PetscCheck(ptap, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot be comput… in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1874 …PetscCheck(ptap->AP_loc, PetscObjectComm((PetscObject)C), PETSC_ERR_ARG_WRONGSTATE, "PtAP cannot b… in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1878 if (ptap->reuse == MAT_REUSE_MATRIX) { in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1879 PetscCall(MatTranspose(p->A, MAT_REUSE_MATRIX, &ptap->Rd)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1880 PetscCall(MatTranspose(p->B, MAT_REUSE_MATRIX, &ptap->Ro)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1884 AP_loc = ptap->AP_loc; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1888 if (ptap->reuse == MAT_REUSE_MATRIX) { in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1890 …tGetBrowsOfAoCols_MPIAIJ(A, P, MAT_REUSE_MATRIX, &ptap->startsj_s, &ptap->startsj_r, &ptap->bufa, … in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1891 PetscCall(MatMPIAIJGetLocalMat(P, MAT_REUSE_MATRIX, &ptap->P_loc)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1896 p_loc = (Mat_SeqAIJ *)ptap->P_loc->data; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1897 if (ptap->P_oth) p_oth = (Mat_SeqAIJ *)ptap->P_oth->data; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1905 PetscCall(MatSeqAIJGetArrayRead(ptap->P_loc, &dummy3)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1906 if (ptap->P_oth) PetscCall(MatSeqAIJGetArrayRead(ptap->P_oth, &dummy4)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1909 …AProw_nonscalable(i, ad, ao, p_loc, p_oth, ptap->apa); // Directly access the value arrays from th… in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1913 apa[j + ap->i[i]] = ptap->apa[col]; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1914 ptap->apa[col] = 0.0; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1920 PetscCall(MatSeqAIJRestoreArrayRead(ptap->P_loc, &dummy3)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1921 if (ptap->P_oth) PetscCall(MatSeqAIJRestoreArrayRead(ptap->P_oth, &dummy4)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1927 PetscCall(MatProductNumeric(ptap->C_loc)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1928 PetscCall(MatProductNumeric(ptap->C_oth)); in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1929 C_loc = ptap->C_loc; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1930 C_oth = ptap->C_oth; in MatPtAPNumeric_MPIAIJ_MPIAIJ()
1983 ptap->reuse = MAT_REUSE_MATRIX; in MatPtAPNumeric_MPIAIJ_MPIAIJ()