- changed status to wontfix
DirichletBC is MPI blocking
Issue #582
wontfix
The interface for DirichletBC.apply is MPI blocking. I propose extending the functionality with a non-blocking apply_local method, which does not call assembly-routines on vector or matrices.
This is useful when a set of different DirichletBC are to be applied, with each only living on a subset of processors, e.g.:
bcs = [<list of N DirichletBC instances>]
for bc in bcs:
bc.apply(A,x) # Waiting on all processes before continuing
An alternative could be:
for bc in bcs:
bc.apply_local(A,x)
A.apply("insert") # Here is the first block
x.apply("insert")
I'm sketching up some changes to this, and will provide results on a test case on >100 cores to see if there are any improvements.
Comments (2)
-
-
- removed milestone
Removing milestone: 1.7 (automated comment)
- Log in to comment
Discussion concluded this isn't possible. Plus, using SystemAssembler avoids the whole issue anyway.