Lines Matching refs:mmdata
6979 MatMatMPIAIJBACKEND *mmdata = *(MatMatMPIAIJBACKEND **)data; in MatProductCtxDestroy_MatMatMPIAIJBACKEND() local
6983 PetscCall(PetscFree2(mmdata->startsj_s, mmdata->startsj_r)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6984 PetscCall(PetscFree(mmdata->bufa)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6985 PetscCall(PetscSFFree(mmdata->sf, mmdata->mtype, mmdata->coo_v)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6986 PetscCall(PetscSFFree(mmdata->sf, mmdata->mtype, mmdata->coo_w)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6987 PetscCall(MatDestroy(&mmdata->P_oth)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6988 PetscCall(MatDestroy(&mmdata->Bloc)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6989 PetscCall(PetscSFDestroy(&mmdata->sf)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6990 for (i = 0; i < mmdata->cp; i++) PetscCall(MatDestroy(&mmdata->mp[i])); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6991 PetscCall(PetscFree2(mmdata->mp, mmdata->mptmp)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6992 PetscCall(PetscFree(mmdata->own[0])); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6993 PetscCall(PetscFree(mmdata->own)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6994 PetscCall(PetscFree(mmdata->off[0])); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6995 PetscCall(PetscFree(mmdata->off)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
6996 PetscCall(PetscFree(mmdata)); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
7031 MatMatMPIAIJBACKEND *mmdata; in MatProductNumeric_MPIAIJBACKEND() local
7037 mmdata = (MatMatMPIAIJBACKEND *)C->product->data; in MatProductNumeric_MPIAIJBACKEND()
7038 if (!mmdata->reusesym) { /* update temporary matrices */ in MatProductNumeric_MPIAIJBACKEND()
7039 …mmdata->P_oth) PetscCall(MatGetBrowsOfAoCols_MPIAIJ(C->product->A, C->product->B, MAT_REUSE_MATRIX… in MatProductNumeric_MPIAIJBACKEND()
7040 …if (mmdata->Bloc) PetscCall(MatMPIAIJGetLocalMatMerge(C->product->B, MAT_REUSE_MATRIX, NULL, &mmda… in MatProductNumeric_MPIAIJBACKEND()
7042 mmdata->reusesym = PETSC_FALSE; in MatProductNumeric_MPIAIJBACKEND()
7044 for (i = 0; i < mmdata->cp; i++) { in MatProductNumeric_MPIAIJBACKEND()
7045 …k(mmdata->mp[i]->ops->productnumeric, PetscObjectComm((PetscObject)mmdata->mp[i]), PETSC_ERR_PLIB,… in MatProductNumeric_MPIAIJBACKEND()
7046 PetscCall((*mmdata->mp[i]->ops->productnumeric)(mmdata->mp[i])); in MatProductNumeric_MPIAIJBACKEND()
7048 for (i = 0, n_d = 0, n_o = 0; i < mmdata->cp; i++) { in MatProductNumeric_MPIAIJBACKEND()
7051 PetscCall(PetscIntCast(mmdata->off[i + 1] - mmdata->off[i], &noff)); in MatProductNumeric_MPIAIJBACKEND()
7052 if (mmdata->mptmp[i]) continue; in MatProductNumeric_MPIAIJBACKEND()
7056 PetscCall(PetscIntCast(mmdata->own[i + 1] - mmdata->own[i], &nown)); in MatProductNumeric_MPIAIJBACKEND()
7057 PetscCall(MatSeqAIJCopySubArray(mmdata->mp[i], noff, mmdata->off[i], mmdata->coo_w + n_o)); in MatProductNumeric_MPIAIJBACKEND()
7058 PetscCall(MatSeqAIJCopySubArray(mmdata->mp[i], nown, mmdata->own[i], mmdata->coo_v + n_d)); in MatProductNumeric_MPIAIJBACKEND()
7062 Mat_SeqAIJ *mm = (Mat_SeqAIJ *)mmdata->mp[i]->data; in MatProductNumeric_MPIAIJBACKEND()
7064 PetscCall(MatSeqAIJCopySubArray(mmdata->mp[i], mm->nz, NULL, mmdata->coo_v + n_d)); in MatProductNumeric_MPIAIJBACKEND()
7068 if (mmdata->hasoffproc) { /* offprocess insertion */ in MatProductNumeric_MPIAIJBACKEND()
7069 PetscCall(PetscSFGatherBegin(mmdata->sf, MPIU_SCALAR, mmdata->coo_w, mmdata->coo_v + n_d)); in MatProductNumeric_MPIAIJBACKEND()
7070 PetscCall(PetscSFGatherEnd(mmdata->sf, MPIU_SCALAR, mmdata->coo_w, mmdata->coo_v + n_d)); in MatProductNumeric_MPIAIJBACKEND()
7072 PetscCall(MatSetValuesCOO(C, mmdata->coo_v, INSERT_VALUES)); in MatProductNumeric_MPIAIJBACKEND()
7083 MatMatMPIAIJBACKEND *mmdata; in MatProductSymbolic_MPIAIJBACKEND() local
7153 PetscCall(PetscNew(&mmdata)); in MatProductSymbolic_MPIAIJBACKEND()
7154 mmdata->reusesym = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7158 …ckend_mergeB", "Merge product->B local matrices", "MatMatMult", mmdata->abmerge, &mmdata->abmerge,… in MatProductSymbolic_MPIAIJBACKEND()
7159 …atmult_backend_pothbind", "Bind P_oth to CPU", "MatBindToCPU", mmdata->P_oth_bind, &mmdata->P_oth_… in MatProductSymbolic_MPIAIJBACKEND()
7163 …ckend_mergeB", "Merge product->B local matrices", "MatMatMult", mmdata->abmerge, &mmdata->abmerge,… in MatProductSymbolic_MPIAIJBACKEND()
7164 …orithm_backend_pothbind", "Bind P_oth to CPU", "MatBindToCPU", mmdata->P_oth_bind, &mmdata->P_oth_… in MatProductSymbolic_MPIAIJBACKEND()
7170 …atptap_backend_pothbind", "Bind P_oth to CPU", "MatBindToCPU", mmdata->P_oth_bind, &mmdata->P_oth_… in MatProductSymbolic_MPIAIJBACKEND()
7174 …orithm_backend_pothbind", "Bind P_oth to CPU", "MatBindToCPU", mmdata->P_oth_bind, &mmdata->P_oth_… in MatProductSymbolic_MPIAIJBACKEND()
7189 …owsOfAoCols_MPIAIJ(A, P, MAT_INITIAL_MATRIX, &mmdata->startsj_s, &mmdata->startsj_r, &mmdata->bufa… in MatProductSymbolic_MPIAIJBACKEND()
7192 …if (mmdata->abmerge) { /* P's diagonal and off-diag blocks are merged to one matrix, then multipli… in MatProductSymbolic_MPIAIJBACKEND()
7194 PetscCall(MatMPIAIJGetLocalMatMerge(P, MAT_INITIAL_MATRIX, &glob, &mmdata->Bloc)); in MatProductSymbolic_MPIAIJBACKEND()
7195 PetscCall(MatProductCreate(a->A, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7241 if (mmdata->P_oth) { in MatProductSymbolic_MPIAIJBACKEND()
7242 …PetscCall(MatSeqAIJCompactOutExtraColumns_SeqAIJ(mmdata->P_oth, &P_oth_l2g)); /* make P_oth use lo… in MatProductSymbolic_MPIAIJBACKEND()
7244 PetscCall(MatSetType(mmdata->P_oth, ((PetscObject)a->B)->type_name)); in MatProductSymbolic_MPIAIJBACKEND()
7245 PetscCall(MatBindToCPU(mmdata->P_oth, mmdata->P_oth_bind)); in MatProductSymbolic_MPIAIJBACKEND()
7246 PetscCall(MatProductCreate(a->B, mmdata->P_oth, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7265 PetscCall(MatMPIAIJGetLocalMatMerge(A, MAT_INITIAL_MATRIX, &glob, &mmdata->Bloc)); in MatProductSymbolic_MPIAIJBACKEND()
7267 PetscCall(MatProductCreate(mmdata->Bloc, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7284 PetscCall(MatProductCreate(p->A, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7299 PetscCall(MatProductCreate(p->B, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7317 …owsOfAoCols_MPIAIJ(A, P, MAT_INITIAL_MATRIX, &mmdata->startsj_s, &mmdata->startsj_r, &mmdata->bufa… in MatProductSymbolic_MPIAIJBACKEND()
7319 PetscCall(MatMPIAIJGetLocalMatMerge(P, MAT_INITIAL_MATRIX, &glob, &mmdata->Bloc)); in MatProductSymbolic_MPIAIJBACKEND()
7320 PetscCall(MatProductCreate(a->A, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7336 if (mmdata->P_oth) { in MatProductSymbolic_MPIAIJBACKEND()
7337 PetscCall(MatSeqAIJCompactOutExtraColumns_SeqAIJ(mmdata->P_oth, &P_oth_l2g)); in MatProductSymbolic_MPIAIJBACKEND()
7339 PetscCall(MatSetType(mmdata->P_oth, ((PetscObject)a->B)->type_name)); in MatProductSymbolic_MPIAIJBACKEND()
7340 PetscCall(MatBindToCPU(mmdata->P_oth, mmdata->P_oth_bind)); in MatProductSymbolic_MPIAIJBACKEND()
7341 PetscCall(MatProductCreate(a->B, mmdata->P_oth, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7352 PetscCall(MatProductCreate(mmdata->Bloc, mp[1], NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7376 PetscCall(PetscMalloc2(cp, &mmdata->mp, cp, &mmdata->mptmp)); in MatProductSymbolic_MPIAIJBACKEND()
7378 mmdata->mp[i] = mp[i]; in MatProductSymbolic_MPIAIJBACKEND()
7379 mmdata->mptmp[i] = mptmp[i]; in MatProductSymbolic_MPIAIJBACKEND()
7381 mmdata->cp = cp; in MatProductSymbolic_MPIAIJBACKEND()
7382 C->product->data = mmdata; in MatProductSymbolic_MPIAIJBACKEND()
7387 mmdata->mtype = PETSC_MEMTYPE_HOST; in MatProductSymbolic_MPIAIJBACKEND()
7391 if (iscuda) mmdata->mtype = PETSC_MEMTYPE_CUDA; in MatProductSymbolic_MPIAIJBACKEND()
7392 else if (iship) mmdata->mtype = PETSC_MEMTYPE_HIP; in MatProductSymbolic_MPIAIJBACKEND()
7393 else if (iskokk) mmdata->mtype = PETSC_MEMTYPE_KOKKOS; in MatProductSymbolic_MPIAIJBACKEND()
7402 for (cp = 0, ncoo_d = 0, ncoo_o = 0, ncoo_oown = 0; cp < mmdata->cp; cp++) { in MatProductSymbolic_MPIAIJBACKEND()
7434 PetscCall(PetscCalloc1(mmdata->cp + 1, &mmdata->off)); /* +1 to make a csr-like data structure */ in MatProductSymbolic_MPIAIJBACKEND()
7435 PetscCall(PetscCalloc1(mmdata->cp + 1, &mmdata->own)); in MatProductSymbolic_MPIAIJBACKEND()
7442 PetscCall(PetscMalloc1(ncoo_o, &mmdata->off[0])); in MatProductSymbolic_MPIAIJBACKEND()
7443 PetscCall(PetscMalloc1(ncoo_oown, &mmdata->own[0])); in MatProductSymbolic_MPIAIJBACKEND()
7446 for (cp = 0, ncoo_o = 0; cp < mmdata->cp; cp++) { in MatProductSymbolic_MPIAIJBACKEND()
7448 PetscInt *idxoff = mmdata->off[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7449 PetscInt *idxown = mmdata->own[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7482 mmdata->off[cp + 1] = idxoff; in MatProductSymbolic_MPIAIJBACKEND()
7483 mmdata->own[cp + 1] = idxown; in MatProductSymbolic_MPIAIJBACKEND()
7486 PetscCall(PetscSFCreate(PetscObjectComm((PetscObject)C), &mmdata->sf)); in MatProductSymbolic_MPIAIJBACKEND()
7489 …PetscCall(PetscSFSetGraphLayout(mmdata->sf, C->rmap, incoo_o /*nleaves*/, NULL /*ilocal*/, PETSC_O… in MatProductSymbolic_MPIAIJBACKEND()
7490 PetscCall(PetscSFGetMultiSF(mmdata->sf, &msf)); in MatProductSymbolic_MPIAIJBACKEND()
7494 …PetscCall(PetscSFGatherBegin(mmdata->sf, MPIU_INT, coo_i, coo_i2 + ncoo_d + ncoo_oown)); /* put (i… in MatProductSymbolic_MPIAIJBACKEND()
7495 PetscCall(PetscSFGatherEnd(mmdata->sf, MPIU_INT, coo_i, coo_i2 + ncoo_d + ncoo_oown)); in MatProductSymbolic_MPIAIJBACKEND()
7496 PetscCall(PetscSFGatherBegin(mmdata->sf, MPIU_INT, coo_j, coo_j2 + ncoo_d + ncoo_oown)); in MatProductSymbolic_MPIAIJBACKEND()
7497 PetscCall(PetscSFGatherEnd(mmdata->sf, MPIU_INT, coo_j, coo_j2 + ncoo_d + ncoo_oown)); in MatProductSymbolic_MPIAIJBACKEND()
7500 …PetscCall(PetscSFMalloc(mmdata->sf, mmdata->mtype, ncoo_o * sizeof(PetscScalar), (void **)&mmdata-… in MatProductSymbolic_MPIAIJBACKEND()
7507 PetscCall(PetscSFCreate(PetscObjectComm((PetscObject)C), &mmdata->sf)); in MatProductSymbolic_MPIAIJBACKEND()
7508 PetscCall(PetscSFSetGraph(mmdata->sf, 0, 0, NULL, PETSC_OWN_POINTER, NULL, PETSC_OWN_POINTER)); in MatProductSymbolic_MPIAIJBACKEND()
7509 PetscCall(PetscSFSetUp(mmdata->sf)); in MatProductSymbolic_MPIAIJBACKEND()
7511 mmdata->hasoffproc = hasoffproc; in MatProductSymbolic_MPIAIJBACKEND()
7514 for (cp = 0, ncoo_d = 0; cp < mmdata->cp; cp++) { in MatProductSymbolic_MPIAIJBACKEND()
7567 …PetscCall(PetscSFMalloc(mmdata->sf, mmdata->mtype, ncoo * sizeof(PetscScalar), (void **)&mmdata->c… in MatProductSymbolic_MPIAIJBACKEND()