int MatCreateMPIBAIJ(MPI_Comm comm,int bs,int m,int n,int M,int N, int d_nz,int *d_nnz,int o_nz,int *o_nnz,Mat *A)Collective on MPI_Comm
comm | - MPI communicator |
bs | - size of blockk |
m | - number of local rows (or PETSC_DECIDE to have calculated if M is given) This value should be the same as the local size used in creating the y vector for the matrix-vector product y = Ax. |
n | - number of local columns (or PETSC_DECIDE to have calculated if N is given) This value should be the same as the local size used in creating the x vector for the matrix-vector product y = Ax. |
M | - number of global rows (or PETSC_DECIDE to have calculated if m is given) |
N | - number of global columns (or PETSC_DECIDE to have calculated if n is given) |
d_nz | - number of block nonzeros per block row in diagonal portion of local submatrix (same for all local rows) |
d_nzz | - array containing the number of block nonzeros in the various block rows of the in diagonal portion of the local (possibly different for each block row) or PETSC_NULL. You must leave room for the diagonal entry even if it is zero. |
o_nz | - number of block nonzeros per block row in the off-diagonal portion of local submatrix (same for all local rows). |
o_nzz | - array containing the number of nonzeros in the various block rows of the off-diagonal portion of the local submatrix (possibly different for each block row) or PETSC_NULL. |
The user can specify preallocated storage for the diagonal part ofthe local submatrix with either d_nz or d_nnz (not both). Setd_nz=PETSC_DEFAULT and d_nnz=PETSC_NULL for PETSc to control dynamicmemory allocation. Likewise, specify preallocated storage for theoff-diagonal part of the local submatrix with o_nz or o_nnz (not both).
Consider a processor that owns rows 3, 4 and 5 of a parallel matrix. Inthe figure below we depict these three local rows and all columns (0-11).
0 1 2 3 4 5 6 7 8 9 10 11 ------------------- row 3 | o o o d d d o o o o o o row 4 | o o o d d d o o o o o o row 5 | o o o d d d o o o o o o -------------------Thus, any entries in the d locations are stored in the d (diagonal) submatrix, and any entries in the o locations are stored in theo (off-diagonal) submatrix. Note that the d and the o submatrices arestored simply in the MATSEQBAIJ format for compressed row storage.
Now d_nz should indicate the number of block nonzeros per row in the d matrix, and o_nz should indicate the number of block nonzeros per row in the o matrix. In general, for PDE problems in which most nonzeros are near the diagonal, one expects d_nz >> o_nz. For large problems you MUST preallocate memoryor you will get TERRIBLE performance; see the users' manual chapter onmatrices.
Location: src/mat/impls/baij/mpi/mpibaij.c
Matrix Index
Table of Contents