Lines Matching refs:baij
9 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatDestroy_MPIBAIJ() local
15 PetscCall(MatDestroy(&baij->A)); in MatDestroy_MPIBAIJ()
16 PetscCall(MatDestroy(&baij->B)); in MatDestroy_MPIBAIJ()
18 PetscCall(PetscHMapIDestroy(&baij->colmap)); in MatDestroy_MPIBAIJ()
20 PetscCall(PetscFree(baij->colmap)); in MatDestroy_MPIBAIJ()
22 PetscCall(PetscFree(baij->garray)); in MatDestroy_MPIBAIJ()
23 PetscCall(VecDestroy(&baij->lvec)); in MatDestroy_MPIBAIJ()
24 PetscCall(VecScatterDestroy(&baij->Mvctx)); in MatDestroy_MPIBAIJ()
25 PetscCall(PetscFree2(baij->rowvalues, baij->rowindices)); in MatDestroy_MPIBAIJ()
26 PetscCall(PetscFree(baij->barray)); in MatDestroy_MPIBAIJ()
27 PetscCall(PetscFree2(baij->hd, baij->ht)); in MatDestroy_MPIBAIJ()
28 PetscCall(PetscFree(baij->rangebs)); in MatDestroy_MPIBAIJ()
145 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatCreateColmap_MPIBAIJ_Private() local
146 Mat_SeqBAIJ *B = (Mat_SeqBAIJ *)baij->B->data; in MatCreateColmap_MPIBAIJ_Private()
151 PetscCall(PetscHMapICreateWithSize(baij->nbs, &baij->colmap)); in MatCreateColmap_MPIBAIJ_Private()
152 for (i = 0; i < nbs; i++) PetscCall(PetscHMapISet(baij->colmap, baij->garray[i] + 1, i * bs + 1)); in MatCreateColmap_MPIBAIJ_Private()
154 PetscCall(PetscCalloc1(baij->Nbs + 1, &baij->colmap)); in MatCreateColmap_MPIBAIJ_Private()
155 for (i = 0; i < nbs; i++) baij->colmap[baij->garray[i]] = i * bs + 1; in MatCreateColmap_MPIBAIJ_Private()
242 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatSetValues_MPIBAIJ() local
244 PetscBool roworiented = baij->roworiented; in MatSetValues_MPIBAIJ()
251 Mat A = baij->A; in MatSetValues_MPIBAIJ()
256 Mat B = baij->B; in MatSetValues_MPIBAIJ()
282 if (!baij->colmap) PetscCall(MatCreateColmap_MPIBAIJ_Private(mat)); in MatSetValues_MPIBAIJ()
284 PetscCall(PetscHMapIGetWithDefault(baij->colmap, in[j] / bs + 1, 0, &col)); in MatSetValues_MPIBAIJ()
287 col = baij->colmap[in[j] / bs] - 1; in MatSetValues_MPIBAIJ()
289 if (col < 0 && !((Mat_SeqBAIJ *)baij->B->data)->nonew) { in MatSetValues_MPIBAIJ()
293 B = baij->B; in MatSetValues_MPIBAIJ()
313 if (!baij->donotstash) { in MatSetValues_MPIBAIJ()
409 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatSetValuesBlocked_MPIBAIJ() local
411 MatScalar *barray = baij->barray; in MatSetValuesBlocked_MPIBAIJ()
412 PetscBool roworiented = baij->roworiented; in MatSetValuesBlocked_MPIBAIJ()
413 PetscInt i, j, ii, jj, row, col, rstart = baij->rstartbs; in MatSetValuesBlocked_MPIBAIJ()
414 PetscInt rend = baij->rendbs, cstart = baij->cstartbs, stepval; in MatSetValuesBlocked_MPIBAIJ()
415 PetscInt cend = baij->cendbs, bs = mat->rmap->bs, bs2 = baij->bs2; in MatSetValuesBlocked_MPIBAIJ()
420 baij->barray = barray; in MatSetValuesBlocked_MPIBAIJ()
428 …k(im[i] < baij->Mbs, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Block indexed row too large %" Pe… in MatSetValuesBlocked_MPIBAIJ()
452 … PetscCall(MatSetValuesBlocked_SeqBAIJ_Inlined(baij->A, row, col, barray, addv, im[i], in[j])); in MatSetValuesBlocked_MPIBAIJ()
456 …in[j] < baij->Nbs, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Block indexed column too large %" P… in MatSetValuesBlocked_MPIBAIJ()
458 if (!baij->colmap) PetscCall(MatCreateColmap_MPIBAIJ_Private(mat)); in MatSetValuesBlocked_MPIBAIJ()
461 PetscCall(PetscHMapIGetWithDefault(baij->colmap, in[j] + 1, 0, &col)); in MatSetValuesBlocked_MPIBAIJ()
464 col = baij->colmap[in[j]] < 1 ? -1 : (baij->colmap[in[j]] - 1) / bs; in MatSetValuesBlocked_MPIBAIJ()
466 if (col < 0 && !((Mat_SeqBAIJ *)baij->B->data)->nonew) { in MatSetValuesBlocked_MPIBAIJ()
471 … PetscCall(MatSetValuesBlocked_SeqBAIJ_Inlined(baij->B, row, col, barray, addv, im[i], in[j])); in MatSetValuesBlocked_MPIBAIJ()
476 if (!baij->donotstash) { in MatSetValuesBlocked_MPIBAIJ()
494 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatSetValues_MPIBAIJ_HT() local
495 PetscBool roworiented = baij->roworiented; in MatSetValues_MPIBAIJ_HT()
498 PetscInt rend_orig = mat->rmap->rend, Nbs = baij->Nbs; in MatSetValues_MPIBAIJ_HT()
499 PetscInt h1, key, size = baij->ht_size, bs = mat->rmap->bs, *HT = baij->ht, idx; in MatSetValues_MPIBAIJ_HT()
501 MatScalar **HD = baij->hd, value; in MatSetValues_MPIBAIJ_HT()
502 PetscInt total_ct = baij->ht_total_ct, insert_ct = baij->ht_insert_ct; in MatSetValues_MPIBAIJ_HT()
542 } else if (!baij->donotstash) { in MatSetValues_MPIBAIJ_HT()
551 baij->ht_total_ct += total_ct; in MatSetValues_MPIBAIJ_HT()
552 baij->ht_insert_ct += insert_ct; in MatSetValues_MPIBAIJ_HT()
559 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatSetValuesBlocked_MPIBAIJ_HT() local
560 PetscBool roworiented = baij->roworiented; in MatSetValuesBlocked_MPIBAIJ_HT()
562 PetscInt rstart = baij->rstartbs; in MatSetValuesBlocked_MPIBAIJ_HT()
563 …PetscInt rend = mat->rmap->rend, stepval, bs = mat->rmap->bs, bs2 = baij->bs2, nbs2 = n … in MatSetValuesBlocked_MPIBAIJ_HT()
564 PetscInt h1, key, size = baij->ht_size, idx, *HT = baij->ht, Nbs = baij->Nbs; in MatSetValuesBlocked_MPIBAIJ_HT()
566 MatScalar **HD = baij->hd, *baij_a; in MatSetValuesBlocked_MPIBAIJ_HT()
568 PetscInt total_ct = baij->ht_total_ct, insert_ct = baij->ht_insert_ct; in MatSetValuesBlocked_MPIBAIJ_HT()
577 …Check(im[i] < baij->Mbs, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %" PetscIn… in MatSetValuesBlocked_MPIBAIJ_HT()
636 if (!baij->donotstash) { in MatSetValuesBlocked_MPIBAIJ_HT()
646 baij->ht_total_ct += total_ct; in MatSetValuesBlocked_MPIBAIJ_HT()
647 baij->ht_insert_ct += insert_ct; in MatSetValuesBlocked_MPIBAIJ_HT()
654 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatGetValues_MPIBAIJ() local
669 PetscCall(MatGetValues_SeqBAIJ(baij->A, 1, &row, 1, &col, v + i * n + j)); in MatGetValues_MPIBAIJ()
671 if (!baij->colmap) PetscCall(MatCreateColmap_MPIBAIJ_Private(mat)); in MatGetValues_MPIBAIJ()
673 PetscCall(PetscHMapIGetWithDefault(baij->colmap, idxn[j] / bs + 1, 0, &data)); in MatGetValues_MPIBAIJ()
676 data = baij->colmap[idxn[j] / bs] - 1; in MatGetValues_MPIBAIJ()
678 if (data < 0 || baij->garray[data / bs] != idxn[j] / bs) *(v + i * n + j) = 0.0; in MatGetValues_MPIBAIJ()
681 PetscCall(MatGetValues_SeqBAIJ(baij->B, 1, &row, 1, &col, v + i * n + j)); in MatGetValues_MPIBAIJ()
691 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatNorm_MPIBAIJ() local
692 Mat_SeqBAIJ *amat = (Mat_SeqBAIJ *)baij->A->data, *bmat = (Mat_SeqBAIJ *)baij->B->data; in MatNorm_MPIBAIJ()
693 PetscInt i, j, bs2 = baij->bs2, bs = baij->A->rmap->bs, nz, row, col; in MatNorm_MPIBAIJ()
698 if (baij->size == 1) { in MatNorm_MPIBAIJ()
699 PetscCall(MatNorm(baij->A, type, nrm)); in MatNorm_MPIBAIJ()
719 PetscInt *jj, *garray = baij->garray; in MatNorm_MPIBAIJ()
735 PetscCall(MatCreateVecs(baij->B, &bcol, NULL)); in MatNorm_MPIBAIJ()
801 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatCreateHashTable_MPIBAIJ_Private() local
802 Mat A = baij->A, B = baij->B; in MatCreateHashTable_MPIBAIJ_Private()
805 PetscInt ht_size, bs2 = baij->bs2, rstart = baij->rstartbs; in MatCreateHashTable_MPIBAIJ_Private()
806 PetscInt cstart = baij->cstartbs, *garray = baij->garray, row, col, Nbs = baij->Nbs; in MatCreateHashTable_MPIBAIJ_Private()
815 if (baij->ht) PetscFunctionReturn(PETSC_SUCCESS); in MatCreateHashTable_MPIBAIJ_Private()
817 baij->ht_size = (PetscInt)(factor * nz); in MatCreateHashTable_MPIBAIJ_Private()
818 ht_size = baij->ht_size; in MatCreateHashTable_MPIBAIJ_Private()
821 PetscCall(PetscCalloc2(ht_size, &baij->hd, ht_size, &baij->ht)); in MatCreateHashTable_MPIBAIJ_Private()
822 HD = baij->hd; in MatCreateHashTable_MPIBAIJ_Private()
823 HT = baij->ht; in MatCreateHashTable_MPIBAIJ_Private()
885 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatAssemblyBegin_MPIBAIJ() local
889 if (baij->donotstash || mat->nooffprocentries) PetscFunctionReturn(PETSC_SUCCESS); in MatAssemblyBegin_MPIBAIJ()
892 PetscCall(MatStashScatterBegin_Private(mat, &mat->bstash, baij->rangebs)); in MatAssemblyBegin_MPIBAIJ()
902 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatAssemblyEnd_MPIBAIJ() local
903 Mat_SeqBAIJ *a = (Mat_SeqBAIJ *)baij->A->data; in MatAssemblyEnd_MPIBAIJ()
904 PetscInt i, j, rstart, ncols, flg, bs2 = baij->bs2; in MatAssemblyEnd_MPIBAIJ()
912 if (!baij->donotstash && !mat->nooffprocentries) { in MatAssemblyEnd_MPIBAIJ()
933 r1 = baij->roworiented; in MatAssemblyEnd_MPIBAIJ()
935 r3 = ((Mat_SeqBAIJ *)baij->B->data)->roworiented; in MatAssemblyEnd_MPIBAIJ()
937 baij->roworiented = PETSC_FALSE; in MatAssemblyEnd_MPIBAIJ()
939 ((Mat_SeqBAIJ *)baij->B->data)->roworiented = PETSC_FALSE; in MatAssemblyEnd_MPIBAIJ()
957 baij->roworiented = r1; in MatAssemblyEnd_MPIBAIJ()
959 ((Mat_SeqBAIJ *)baij->B->data)->roworiented = r3; in MatAssemblyEnd_MPIBAIJ()
962 PetscCall(MatAssemblyBegin(baij->A, mode)); in MatAssemblyEnd_MPIBAIJ()
963 PetscCall(MatAssemblyEnd(baij->A, mode)); in MatAssemblyEnd_MPIBAIJ()
971 if (!((Mat_SeqBAIJ *)baij->B->data)->nonew) { in MatAssemblyEnd_MPIBAIJ()
977 PetscCall(MatAssemblyBegin(baij->B, mode)); in MatAssemblyEnd_MPIBAIJ()
978 PetscCall(MatAssemblyEnd(baij->B, mode)); in MatAssemblyEnd_MPIBAIJ()
981 if (baij->ht && mode == MAT_FINAL_ASSEMBLY) { in MatAssemblyEnd_MPIBAIJ()
982 …sh Table Search in MatSetValues = %5.2f\n", (double)((PetscReal)baij->ht_total_ct) / baij->ht_inse… in MatAssemblyEnd_MPIBAIJ()
984 baij->ht_total_ct = 0; in MatAssemblyEnd_MPIBAIJ()
985 baij->ht_insert_ct = 0; in MatAssemblyEnd_MPIBAIJ()
988 if (baij->ht_flag && !baij->ht && mode == MAT_FINAL_ASSEMBLY) { in MatAssemblyEnd_MPIBAIJ()
989 PetscCall(MatCreateHashTable_MPIBAIJ_Private(mat, baij->ht_fact)); in MatAssemblyEnd_MPIBAIJ()
995 PetscCall(PetscFree2(baij->rowvalues, baij->rowindices)); in MatAssemblyEnd_MPIBAIJ()
997 baij->rowvalues = NULL; in MatAssemblyEnd_MPIBAIJ()
1000 …if ((!mat->was_assembled && mode == MAT_FINAL_ASSEMBLY) || !((Mat_SeqBAIJ *)baij->A->data)->nonew)… in MatAssemblyEnd_MPIBAIJ()
1001 PetscObjectState state = baij->A->nonzerostate + baij->B->nonzerostate; in MatAssemblyEnd_MPIBAIJ()
1010 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatView_MPIBAIJ_ASCIIorDraworSocket() local
1011 PetscMPIInt rank = baij->rank; in MatView_MPIBAIJ_ASCIIorDraworSocket()
1029 PetscCall(MatGetInfo(baij->A, MAT_LOCAL, &info)); in MatView_MPIBAIJ_ASCIIorDraworSocket()
1031 PetscCall(MatGetInfo(baij->B, MAT_LOCAL, &info)); in MatView_MPIBAIJ_ASCIIorDraworSocket()
1036 PetscCall(VecScatterView(baij->Mvctx, viewer)); in MatView_MPIBAIJ_ASCIIorDraworSocket()
1053 … PetscInt M = mat->rmap->N, N = mat->cmap->N, *ai, *aj, col, i, j, k, *rvals, mbs = baij->mbs; in MatView_MPIBAIJ_ASCIIorDraworSocket()
1070 Aloc = (Mat_SeqBAIJ *)baij->A->data; in MatView_MPIBAIJ_ASCIIorDraworSocket()
1077 rvals[0] = bs * (baij->rstartbs + i); in MatView_MPIBAIJ_ASCIIorDraworSocket()
1080 col = (baij->cstartbs + aj[j]) * bs; in MatView_MPIBAIJ_ASCIIorDraworSocket()
1089 Aloc = (Mat_SeqBAIJ *)baij->B->data; in MatView_MPIBAIJ_ASCIIorDraworSocket()
1094 rvals[0] = bs * (baij->rstartbs + i); in MatView_MPIBAIJ_ASCIIorDraworSocket()
1097 col = baij->garray[aj[j]] * bs; in MatView_MPIBAIJ_ASCIIorDraworSocket()
1384 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatRestoreRow_MPIBAIJ() local
1387 PetscCheck(baij->getrowactive, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "MatGetRow not called"); in MatRestoreRow_MPIBAIJ()
1388 baij->getrowactive = PETSC_FALSE; in MatRestoreRow_MPIBAIJ()
1502 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)A->data; in MatTranspose_MPIBAIJ() local
1506 PetscInt bs = A->rmap->bs, mbs = baij->mbs; in MatTranspose_MPIBAIJ()
1522 Aloc = (Mat_SeqBAIJ *)baij->A->data; in MatTranspose_MPIBAIJ()
1529 rvals[0] = bs * (baij->rstartbs + i); in MatTranspose_MPIBAIJ()
1532 col = (baij->cstartbs + aj[j]) * bs; in MatTranspose_MPIBAIJ()
1542 Aloc = (Mat_SeqBAIJ *)baij->B->data; in MatTranspose_MPIBAIJ()
1547 rvals[0] = bs * (baij->rstartbs + i); in MatTranspose_MPIBAIJ()
1550 col = baij->garray[aj[j]] * bs; in MatTranspose_MPIBAIJ()
1569 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatDiagonalScale_MPIBAIJ() local
1570 Mat a = baij->A, b = baij->B; in MatDiagonalScale_MPIBAIJ()
1579 PetscCall(VecScatterBegin(baij->Mvctx, rr, baij->lvec, INSERT_VALUES, SCATTER_FORWARD)); in MatDiagonalScale_MPIBAIJ()
1591 PetscCall(VecScatterEnd(baij->Mvctx, rr, baij->lvec, INSERT_VALUES, SCATTER_FORWARD)); in MatDiagonalScale_MPIBAIJ()
1592 PetscUseTypeMethod(b, diagonalscale, NULL, baij->lvec); in MatDiagonalScale_MPIBAIJ()
1665 Mat_SeqBAIJ *baij = (Mat_SeqBAIJ *)l->B->data; in MatZeroRowsColumns_MPIBAIJ() local
1666 PetscInt bs = A->rmap->bs, bs2 = baij->bs2; in MatZeroRowsColumns_MPIBAIJ()
1714 count = (baij->i[row / bs + 1] - baij->i[row / bs]) * bs; in MatZeroRowsColumns_MPIBAIJ()
1715 aa = baij->a + baij->i[row / bs] * bs2 + (row % bs); in MatZeroRowsColumns_MPIBAIJ()
1724 for (j = baij->i[row]; j < baij->i[row + 1]; ++j) { in MatZeroRowsColumns_MPIBAIJ()
1726 col = bs * baij->j[j] + k; in MatZeroRowsColumns_MPIBAIJ()
1728 aa = baij->a + j * bs2 + (i % bs) + bs * k; in MatZeroRowsColumns_MPIBAIJ()
2078 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in MatGetGhosts_MPIBAIJ() local
2079 Mat_SeqBAIJ *B = (Mat_SeqBAIJ *)baij->B->data; in MatGetGhosts_MPIBAIJ()
2083 if (ghosts) *ghosts = baij->garray; in MatGetGhosts_MPIBAIJ()
3362 Mat_MPIBAIJ *baij; in MatSetHashTableFactor_MPIBAIJ() local
3365 baij = (Mat_MPIBAIJ *)mat->data; in MatSetHashTableFactor_MPIBAIJ()
3366 baij->ht_fact = fact; in MatSetHashTableFactor_MPIBAIJ()
3422 Mat_MPIBAIJ *baij = (Mat_MPIBAIJ *)mat->data; in matmpibaijsetvaluesblocked_() local
3424 MatScalar *barray = baij->barray; in matmpibaijsetvaluesblocked_()
3425 PetscBool roworiented = baij->roworiented; in matmpibaijsetvaluesblocked_()
3426 PetscInt i, j, ii, jj, row, col, rstart = baij->rstartbs; in matmpibaijsetvaluesblocked_()
3427 PetscInt rend = baij->rendbs, cstart = baij->cstartbs, stepval; in matmpibaijsetvaluesblocked_()
3428 PetscInt cend = baij->cendbs, bs = mat->rmap->bs, bs2 = baij->bs2; in matmpibaijsetvaluesblocked_()
3443 baij->barray = barray; in matmpibaijsetvaluesblocked_()
3451 …Check(im[i] < baij->Mbs, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row too large, row %" PetscIn… in matmpibaijsetvaluesblocked_()
3474 … PetscCall(MatSetValuesBlocked_SeqBAIJ_Inlined(baij->A, row, col, barray, addv, im[i], in[j])); in matmpibaijsetvaluesblocked_()
3478 …heck(in[j] < baij->Nbs, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Column too large, col %" Petsc… in matmpibaijsetvaluesblocked_()
3480 if (!baij->colmap) PetscCall(MatCreateColmap_MPIBAIJ_Private(mat)); in matmpibaijsetvaluesblocked_()
3486 PetscCall(PetscHMapIGetWithDefault(baij->colmap, in[j] + 1, 0, &data)); in matmpibaijsetvaluesblocked_()
3490 …PetscCheck((baij->colmap[in[j]] - 1) % bs == 0, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Incorrect colmap… in matmpibaijsetvaluesblocked_()
3494 PetscCall(PetscHMapIGetWithDefault(baij->colmap, in[j] + 1, 0, &col)); in matmpibaijsetvaluesblocked_()
3497 col = (baij->colmap[in[j]] - 1) / bs; in matmpibaijsetvaluesblocked_()
3499 if (col < 0 && !((Mat_SeqBAIJ *)baij->A->data)->nonew) { in matmpibaijsetvaluesblocked_()
3504 … PetscCall(MatSetValuesBlocked_SeqBAIJ_Inlined(baij->B, row, col, barray, addv, im[i], in[j])); in matmpibaijsetvaluesblocked_()
3508 if (!baij->donotstash) { in matmpibaijsetvaluesblocked_()