Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimizing communications when redistributing models #32

Open
1 task
JordiManyer opened this issue Aug 7, 2023 · 0 comments
Open
1 task

Optimizing communications when redistributing models #32

JordiManyer opened this issue Aug 7, 2023 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@JordiManyer
Copy link
Member

Current implementation:

  • When creating an N-processor sub-communicator, we are always picking N the processors with lowest id (i.e [1,...,N]).
  • When redistributing a mesh using P4est, we are partitioning cells using a so-called Z-space-filling curve. This assigns cell ids to processors in a consecutive way using the numbering given by the Z-space-filling curve.

This leads to certain situations with obvious sub-optimal communications. For instance, consider a cartesian mesh distributed between 2 processors that gets redistributed to 4 processors:

image

The current implementation returns a communication pattern 1 -> [2], 2 -> [3,4] which involves moving 75% of the mesh every time we want to redistribute information. The optimal communication pattern would be 1 -> [3], 2 -> [4], which would only communicate 50% of the mesh every time.

Changing the behavior of the z-space-filling curve is quite involved, so to solve this issue we might want to have a look a how the sub-communicators are created. For instance taking [1,3] as the coarse sub-communicator would potentially yield a better communication pattern for the example above.

To-Do:

  • Use profilers to identify if this problem is indeed a bottleneck. Compare performance with topology-optimized communicators.
@JordiManyer JordiManyer added the enhancement New feature or request label Aug 7, 2023
@JordiManyer JordiManyer self-assigned this Aug 7, 2023
@amartinhuertas amartinhuertas self-assigned this Aug 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants