Using MatCreateSBAIJ and MatZeroRowsColumns in parallel
Hello, I have system matrix which is symmetric and thought I could make use of MatCreateSBAIJ. I don’t understand how to set the blocksize bs. I believe it has taken into account, when having multiple components/dofs per node. (i) Currently, I have only one scalar field to solve so I set bs = 1 as below. Is it correct? ierr = MatCreateSBAIJ(PETSC_COMM_WORLD, 1, PETSC_DECIDE, PETSC_DECIDE, N, N, d_nz, PETSC_NULL, o_nz, PETSC_NULL, &A); CHKERRQ(ierr); ierr = MatCreateVecs(A, &right, &left);CHKERRQ(ierr); (ii) If you multiple components/dofs per node, say 2, is the then block size = 2? (iii) To apply homogenous Dirichlet boundary condition, I make use of MatZeroRowsColumns. It works in serial but while applying in parallel the following error is thrown, [0]PETSC ERROR: No method zerorowscolumns for Mat of type mpisbaij How do I fix it? (iv) Is there performance again, when using MatCreateSBAIJ for large symmetric system matrix? I read there is more communication involved. Best, Karthik. This email and any attachments are intended solely for the use of the named recipients. If you are not the intended recipient you must not use, disclose, copy or distribute this email or any of its attachments and should notify the sender immediately and delete this email from your system. UK Research and Innovation (UKRI) has taken every reasonable precaution to minimise risk of this email or any attachments containing viruses or malware but the recipient should carry out its own virus and malware checks before opening the attachments. UKRI does not accept any liability for any losses or damages which the recipient may sustain due to presence of any viruses.
On Fri, Dec 2, 2022 at 7:48 AM Karthikeyan Chockalingam - STFC UKRI via petsc-users <[email protected]> wrote:
Hello,
I have system matrix which is symmetric and thought I could make use of MatCreateSBAIJ. I don’t understand how to set the blocksize bs. I believe it has taken into account, when having multiple components/dofs per node.
(i) Currently, I have only one scalar field to solve so I set bs = 1 as below. Is it correct?
ierr = MatCreateSBAIJ(PETSC_COMM_WORLD, 1, PETSC_DECIDE, PETSC_DECIDE, N, N, d_nz, PETSC_NULL, o_nz, PETSC_NULL, &A); CHKERRQ (ierr);
ierr = MatCreateVecs(A, &right, &left);CHKERRQ(ierr);
(ii) If you multiple components/dofs per node, say 2, is the then block size = 2?
(iii) To apply homogenous Dirichlet boundary condition, I make use of MatZeroRowsColumns. It works in serial but while applying in parallel the following error is thrown,
[0]PETSC ERROR: No method zerorowscolumns for Mat of type mpisbaij
How do I fix it?
(iv) Is there performance again, when using MatCreateSBAIJ for large symmetric system matrix? I read there is more communication involved.
For block size 1, there is no improvement. Even for 2 I would say it is small. The SBAIJ matrix will do the same number of flops and use about the same bandwidth, but it will save on storage. Unless storage is a big deal for you, I would use AIJ, get everything working, and profile to see how important various operations are. Thanks, Matt
Best,
Karthik.
This email and any attachments are intended solely for the use of the named recipients. If you are not the intended recipient you must not use, disclose, copy or distribute this email or any of its attachments and should notify the sender immediately and delete this email from your system. UK Research and Innovation (UKRI) has taken every reasonable precaution to minimise risk of this email or any attachments containing viruses or malware but the recipient should carry out its own virus and malware checks before opening the attachments. UKRI does not accept any liability for any losses or damages which the recipient may sustain due to presence of any viruses.
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
participants (2)
-
Karthikeyan Chockalingam - STFC UKRI -
Matthew Knepley