FEniCS / FEniCS/dolfinx

Add more fine-grained control over communication when zeroing matrix rows

Open
#1,418 1 comment 0 reactions 0 assignees View on GitHub
performance roadmap
Dominant language
C++
Stars
1.2k
Forks
261
Avg merge
1d 19h
Merged PRs (30d)
71

Description

The change in #1417 introduces a flush step for PETSc matrices during assembly. Since this is now required, some other things can. be changed:

1. Split the assembly and row ident/zero calls in Python to still allow the lowest levels of control.
2. Use a dedicated lambda function to zero rows and place 1 on the diagonal, e.g. in the case of PETSc capture ` MatZeroRowsLocal`.
3. Reconsider if we still want to zero rows during assembly. The advantage of zeroing rows during assembly is that a call to subsequently set 1 on the diagonal can be strictly local and not require communication.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.