Lines Matching refs:cp
6949 PetscInt cp; /* number of intermediate products */ member
6990 for (i = 0; i < mmdata->cp; i++) PetscCall(MatDestroy(&mmdata->mp[i])); in MatProductCtxDestroy_MatMatMPIAIJBACKEND()
7044 for (i = 0; i < mmdata->cp; i++) { in MatProductNumeric_MPIAIJBACKEND()
7048 for (i = 0, n_d = 0, n_o = 0; i < mmdata->cp; i++) { in MatProductNumeric_MPIAIJBACKEND()
7089 PetscInt i, j, cp, m, n, M, N, *coo_i, *coo_j; in MatProductSymbolic_MPIAIJBACKEND() local
7186 cp = 0; in MatProductSymbolic_MPIAIJBACKEND()
7195 PetscCall(MatProductCreate(a->A, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7196 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AB)); in MatProductSymbolic_MPIAIJBACKEND()
7197 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7198 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7199 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7200 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7201 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7202 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7203 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7205 rmapt[cp] = 1; in MatProductSymbolic_MPIAIJBACKEND()
7206 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7207 cmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7208 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7209 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7211 PetscCall(MatProductCreate(a->A, p->A, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7212 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AB)); in MatProductSymbolic_MPIAIJBACKEND()
7213 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7214 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7215 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7216 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7217 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7218 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7219 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7220 rmapt[cp] = 1; in MatProductSymbolic_MPIAIJBACKEND()
7221 cmapt[cp] = 1; in MatProductSymbolic_MPIAIJBACKEND()
7222 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7223 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7224 PetscCall(MatProductCreate(a->A, p->B, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7225 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AB)); in MatProductSymbolic_MPIAIJBACKEND()
7226 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7227 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7228 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7229 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7230 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7231 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7232 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7233 rmapt[cp] = 1; in MatProductSymbolic_MPIAIJBACKEND()
7234 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7235 cmapa[cp] = p->garray; in MatProductSymbolic_MPIAIJBACKEND()
7236 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7237 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7246 PetscCall(MatProductCreate(a->B, mmdata->P_oth, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7247 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AB)); in MatProductSymbolic_MPIAIJBACKEND()
7248 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7249 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7250 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7251 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7252 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7253 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7254 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7255 rmapt[cp] = 1; in MatProductSymbolic_MPIAIJBACKEND()
7256 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7257 cmapa[cp] = P_oth_idx; in MatProductSymbolic_MPIAIJBACKEND()
7258 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7259 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7267 PetscCall(MatProductCreate(mmdata->Bloc, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7268 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AtB)); in MatProductSymbolic_MPIAIJBACKEND()
7269 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7270 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7271 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7272 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7273 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7274 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7275 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7277 rmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7278 rmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7279 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7280 cmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7281 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7282 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7284 PetscCall(MatProductCreate(p->A, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7285 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AtB)); in MatProductSymbolic_MPIAIJBACKEND()
7286 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7287 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7288 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7289 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7290 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7291 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7292 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7294 rmapt[cp] = 1; in MatProductSymbolic_MPIAIJBACKEND()
7295 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7296 cmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7297 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7298 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7299 PetscCall(MatProductCreate(p->B, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7300 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AtB)); in MatProductSymbolic_MPIAIJBACKEND()
7301 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7302 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7303 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7304 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7305 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7306 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7307 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7308 rmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7309 rmapa[cp] = p->garray; in MatProductSymbolic_MPIAIJBACKEND()
7310 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7311 cmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7312 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7313 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7320 PetscCall(MatProductCreate(a->A, mmdata->Bloc, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7321 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_PtAP)); in MatProductSymbolic_MPIAIJBACKEND()
7322 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7323 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7324 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7325 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7326 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7327 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7328 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7330 rmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7331 rmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7332 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7333 cmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7334 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7335 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7341 PetscCall(MatProductCreate(a->B, mmdata->P_oth, NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7342 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AB)); in MatProductSymbolic_MPIAIJBACKEND()
7343 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7344 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7345 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7346 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7347 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7348 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7349 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7350 mptmp[cp] = PETSC_TRUE; in MatProductSymbolic_MPIAIJBACKEND()
7351 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7352 PetscCall(MatProductCreate(mmdata->Bloc, mp[1], NULL, &mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7353 PetscCall(MatProductSetType(mp[cp], MATPRODUCT_AtB)); in MatProductSymbolic_MPIAIJBACKEND()
7354 PetscCall(MatProductSetFill(mp[cp], product->fill)); in MatProductSymbolic_MPIAIJBACKEND()
7355 PetscCall(PetscSNPrintf(pprefix, sizeof(pprefix), "backend_p%" PetscInt_FMT "_", cp)); in MatProductSymbolic_MPIAIJBACKEND()
7356 PetscCall(MatSetOptionsPrefix(mp[cp], prefix)); in MatProductSymbolic_MPIAIJBACKEND()
7357 PetscCall(MatAppendOptionsPrefix(mp[cp], pprefix)); in MatProductSymbolic_MPIAIJBACKEND()
7358 mp[cp]->product->api_user = product->api_user; in MatProductSymbolic_MPIAIJBACKEND()
7359 PetscCall(MatProductSetFromOptions(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7360 PetscCall((*mp[cp]->ops->productsymbolic)(mp[cp])); in MatProductSymbolic_MPIAIJBACKEND()
7361 rmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7362 rmapa[cp] = globidx; in MatProductSymbolic_MPIAIJBACKEND()
7363 cmapt[cp] = 2; in MatProductSymbolic_MPIAIJBACKEND()
7364 cmapa[cp] = P_oth_idx; in MatProductSymbolic_MPIAIJBACKEND()
7365 mptmp[cp] = PETSC_FALSE; in MatProductSymbolic_MPIAIJBACKEND()
7366 cp++; in MatProductSymbolic_MPIAIJBACKEND()
7374 …for (i = 0; i < cp; i++) PetscCheck(rmapt[i] != 2 || hasoffproc, PETSC_COMM_SELF, PETSC_ERR_PLIB, … in MatProductSymbolic_MPIAIJBACKEND()
7376 PetscCall(PetscMalloc2(cp, &mmdata->mp, cp, &mmdata->mptmp)); in MatProductSymbolic_MPIAIJBACKEND()
7377 for (i = 0; i < cp; i++) { in MatProductSymbolic_MPIAIJBACKEND()
7381 mmdata->cp = cp; in MatProductSymbolic_MPIAIJBACKEND()
7402 for (cp = 0, ncoo_d = 0, ncoo_o = 0, ncoo_oown = 0; cp < mmdata->cp; cp++) { in MatProductSymbolic_MPIAIJBACKEND()
7403 Mat_SeqAIJ *mm = (Mat_SeqAIJ *)mp[cp]->data; in MatProductSymbolic_MPIAIJBACKEND()
7404 if (mptmp[cp]) continue; in MatProductSymbolic_MPIAIJBACKEND()
7405 …if (rmapt[cp] == 2 && hasoffproc) { /* the rows need to be scatter to all processes (might include… in MatProductSymbolic_MPIAIJBACKEND()
7406 const PetscInt *rmap = rmapa[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7407 const PetscInt mr = mp[cp]->rmap->n; 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()
7446 for (cp = 0, ncoo_o = 0; cp < mmdata->cp; cp++) { in MatProductSymbolic_MPIAIJBACKEND()
7447 Mat_SeqAIJ *mm = (Mat_SeqAIJ *)mp[cp]->data; in MatProductSymbolic_MPIAIJBACKEND()
7448 PetscInt *idxoff = mmdata->off[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7449 PetscInt *idxown = mmdata->own[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7450 if (!mptmp[cp] && rmapt[cp] == 2) { /* row map is sparse */ in MatProductSymbolic_MPIAIJBACKEND()
7451 const PetscInt *rmap = rmapa[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7452 const PetscInt *cmap = cmapa[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7456 const PetscInt mr = mp[cp]->rmap->n; in MatProductSymbolic_MPIAIJBACKEND()
7469 if (!cmapt[cp]) { /* already global */ in MatProductSymbolic_MPIAIJBACKEND()
7471 } else if (cmapt[cp] == 1) { /* local to global for owned columns of C */ in MatProductSymbolic_MPIAIJBACKEND()
7482 mmdata->off[cp + 1] = idxoff; in MatProductSymbolic_MPIAIJBACKEND()
7483 mmdata->own[cp + 1] = idxown; in MatProductSymbolic_MPIAIJBACKEND()
7514 for (cp = 0, ncoo_d = 0; cp < mmdata->cp; cp++) { in MatProductSymbolic_MPIAIJBACKEND()
7515 Mat_SeqAIJ *mm = (Mat_SeqAIJ *)mp[cp]->data; in MatProductSymbolic_MPIAIJBACKEND()
7520 const PetscInt *cmap = cmapa[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7521 const PetscInt *rmap = rmapa[cp]; in MatProductSymbolic_MPIAIJBACKEND()
7522 const PetscInt mr = mp[cp]->rmap->n; in MatProductSymbolic_MPIAIJBACKEND()
7527 if (mptmp[cp]) continue; in MatProductSymbolic_MPIAIJBACKEND()
7528 if (rmapt[cp] == 1) { /* consecutive rows */ in MatProductSymbolic_MPIAIJBACKEND()
7535 if (!cmapt[cp]) { /* type-0, already global */ in MatProductSymbolic_MPIAIJBACKEND()
7537 …} else if (cmapt[cp] == 1) { /* type-1, local to global for consecutive col… in MatProductSymbolic_MPIAIJBACKEND()
7543 } else if (rmapt[cp] == 2) { /* sparse rows */ in MatProductSymbolic_MPIAIJBACKEND()
7550 if (!cmapt[cp]) { /* type-0, already global */ in MatProductSymbolic_MPIAIJBACKEND()
7552 } else if (cmapt[cp] == 1) { /* local to global for owned columns of C */ in MatProductSymbolic_MPIAIJBACKEND()