FEniCS / FEniCS/dolfinx

Associate a `common::Scatterer` with `fem::FunctionSpace`

Open
#3,065 2 comments 1 reaction 0 assignees View on GitHub
discussion roadmap
Dominant language
C++
Stars
1.2k
Forks
261
Avg merge
1d 15h
Merged PRs (30d)
65

Description

At present, each `la::Vector` has it's own `common::Scatterer`. This allows overlapping non-blocking communication for `la::Vector`s because each scatter has its own buffers. A potential problem is that a code that creates a a lot of `Function`s can create a lot of (neighbourhood) communicators, and exhaust the available communicators.

A possibility is to:
1. Associate a `Scatterer` with each `FunctionSpace`.
2. Copy the `Scatterer` for `Function` vectors that need their own `Scatterer`.
3. For `Function` vectors that don't need their own `Scatterer`, let them share the FunctionSpace` `Scatterer`.

In any case, it's probably a good thing for a `FunctionSpace` to hold the necessary data to create a suitable `Scatterer` cheaply so the scatter details are not re-computed for every `Function` created on a space.\

See #3061.

@IgorBaratta , @chrisrichardson?

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.