Lines Matching refs:product

1050 static PetscErrorCode MatProductSymbolic_MPIAIJKokkos_AtB(Mat_Product *product, Mat A, Mat B, MatMatStruct_AtB *mm)
1128 static PetscErrorCode MatProductNumeric_MPIAIJKokkos_AtB(Mat_Product *product, Mat A, Mat B, MatMatStruct_AtB *mm)
1164 + product - Mat_Product which carried out the computation. Passed in to access info about this mat product.
1169 static PetscErrorCode MatProductSymbolic_MPIAIJKokkos_AB(Mat_Product *product, Mat A, Mat B, MatMatStruct_AB *mm)
1240 static PetscErrorCode MatProductNumeric_MPIAIJKokkos_AB(Mat_Product *product, Mat A, Mat B, MatMatStruct_AB *mm)
1274 Mat_Product *product;
1280 MatCheckProduct(C, 1); // make sure C is a product
1281 product = C->product;
1282 pdata = static_cast<MatProductCtx_MPIAIJKokkos *>(product->data);
1283 ptype = product->type;
1284 A = product->A;
1285 B = product->B;
1296 PetscCall(MatProductNumeric_MPIAIJKokkos_AB(product, A, B, pdata->mmAB));
1298 PetscCall(MatProductNumeric_MPIAIJKokkos_AtB(product, A, B, pdata->mmAtB));
1300 PetscCall(MatProductNumeric_MPIAIJKokkos_AB(product, A, B, pdata->mmAB));
1301 PetscCall(MatProductNumeric_MPIAIJKokkos_AtB(product, B, pdata->Z, pdata->mmAtB));
1311 Mat_Product *product;
1323 product = C->product;
1324 PetscCheck(!product->data, comm, PETSC_ERR_PLIB, "Product data not empty");
1325 ptype = product->type;
1326 A = product->A;
1327 B = product->B;
1349 SETERRQ(comm, PETSC_ERR_PLIB, "Not for product type %s", MatProductTypes[ptype]);
1358 pdata->reusesym = product->api_user;
1362 PetscCall(MatProductSymbolic_MPIAIJKokkos_AB(product, A, B, mmAB));
1366 PetscCall(MatProductSymbolic_MPIAIJKokkos_AtB(product, A, B, mmAtB));
1372 PetscCall(MatProductSymbolic_MPIAIJKokkos_AB(product, A, B, mmAB)); // Z stored as mmAB->{Cd, Co}
1384 PetscCall(MatProductSymbolic_MPIAIJKokkos_AtB(product, B, Z, mmAtB)); // final result C stored as mmAtB->{Cd, Co}
1416 PetscCall(MatSetBlockSizesFromMats(C, A, product->C));
1430 C->product->data = pdata;
1431 C->product->destroy = MatProductCtxDestroy_MPIAIJKokkos;
1438 Mat_Product *product = mat->product;
1444 if (!product->A->boundtocpu && !product->B->boundtocpu) PetscCall(PetscObjectTypeCompare((PetscObject)product->B, ((PetscObject)product->A)->type_name, &match));
1446 switch (product->type) {
1448 if (product->api_user) {
1459 if (product->api_user) {
1470 if (product->api_user) {
1486 switch (product->type) {
1778 y vector for the matrix-vector product y = Ax.
1780 x vector for the matrix-vector product y = Ax. (or `PETSC_DECIDE` to have