# Multi-Criteria Mesh Partitioning for an Explicit Temporal Adaptive Task-Distributed Finite-Volume Solver

Alice Lasserre, Jean Marie Couteyen Carpaye, Abdou Guermouche, Raymond Namyst

<figure><img src="image_1.png" /></figure>

## ► To cite this version:

Alice Lasserre, Jean Marie Couteyen Carpaye, Abdou Guermouche, Raymond Namyst. Multi-Criteria Mesh Partitioning for an Explicit Temporal Adaptive Task-Distributed Finite-Volume Solver. Journée annuelle de l'EDMI 2024 - Réunion annuelle de l'ensemble des doctorantes et doctorants de l'EDMI, Apr 2024, Bordeaux, France. hal-04895715

HAL Id: hal-04895715

https://inria.hal.science/hal-04895715v1

Submitted on 18 Jan 2025

HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d'enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Multi-Criteria Mesh Partitioning for an Explicit Temporal Adaptive Task-Distributed Finite-Volume Solver

Alice Lasserre - Jean-Marie Couteyen-Carpaye, Abdou Guermouche, Raymond Namyst

STORM - Inria, Airbus CRT, Univ. Bordeaux, LaBRI, France

LaBRI

## High-performance numerical simulation of fluid dynamics

* Valuable insights and aiding in the understanding of **complex fluid flow phenomena**

* difficult to analyze using analytical methods or physical experiments alone

* ARIANEGROUP and AIRBUS uses the **FLUSEPA parallel compressible Navier-Stokes solver**

AGARD propeller (FLUSEPA-code) - Uinf = 50 m/s AoA = 0° AoS = 0° pitch point = 29°
Q criteria Iso-surface (Q = 5000) colored by U (velocity)

<figure><img src="image_3.png" /></figure>

<figure><img src="image_4.png" /></figure>

## The FLUSEPA Fluid Dynamics Solver

<figure><img src="image_5.png" /><figcaption>Figure: Solver Simulation Process</figcaption></figure>

* **FLUSEPA** applies the *finite volume method* to generate meshes and then proceeds to partition the resulting meshes using **Scotch** or **Metis**. Task scheduling is managed by **StarPU**, while internode communication is handled by **MPI**.

## Modeling complex phenomena with heterogeneous meshes

<figure><img src="image_6.png" /></figure>

* As turbulence intensifies at the phenomenon's center, cells decrease in size and densify.

* As part of the adaptive temporal integration scheme, cells are assigned a **temporal level $\tau$**.

## Adaptive Explicit Temporal Integration Method

<figure><img src="image_7.png" /><figcaption>Figure: Decomposition of an iteration into subiterations using an adaptive local time stepping algorithm. Active cells and faces are color-coded by **temporal level**.</figcaption></figure>

## Analysis of an execution trace

<figure><img src="image_8.png" /></figure>

* Execution traces reveal a **significant amount of core idleness** across iterations, with **repetitive patterns** of inactivity.

## Load-aware mesh partitioning

<figure><img src="image_9.png" /></figure>

* **Single Criteria Partitioning** weights each cell by its workload.

## Temporal levels-aware mesh partitioning

<figure><img src="image_10.png" /></figure>

* **Multi-Criteria Partitioning** weights cells using a vector of constraints encapsulating their temporal context.

* Efficient execution is achieved by balancing **the active cells of each subiteration** across domains through **temporal levels**.

## Within the FLUSEPA code itself

<figure><img src="image_11.png" /></figure>

* Implementing the **temporal-aware partitioning strategy** (bottom trace) yields a **20% gain in the production code** compared to the original (top trace).

## Conclusion

* Balancing **ALL temporal levels** seems to be the key to improving parallelism between MPI processes

* Currently working on a more innovative and versatile **parallel compressible Navier-Stokes solver**