Skip to content
Snippets Groups Projects
Commit 2ebfb3ec authored by Sergey Lesnik's avatar Sergey Lesnik
Browse files

Include exaFOAM benchmarks into README

- The main README.md file (landing page) provides
  now an overview of the benchmark suite
- Description of an individual case is provided in
  the README.md located in the root directory of
  the case. This description is linked within the
  landing page.
- For an intuitive navigation every case from the
  landing page is supplied with a thumbnail image
parent 7869a3d7
Branches
No related merge requests found
Showing
with 199 additions and 1 deletion
# Validation and assessment # OpenFOAM HPC Benchmark Suite
The repository is intended to be a shared repository with relevant data-sets and information created in order to:
- Provide user guides and initial scripts to set-up and run different data-sets on different HPC architectures.
- Provide the community a homogeneous term of reference to compare different hardware architectures, software environments, configurations, etc.
- Define a common set of metrics/KPI (Key Performance Indicators) to measure performances.
<details>
<summary>Structure of the Suite / Adding new benchmarks</summary>
- The file structure of the repository is aligned to the file structure of OpenFOAM tutorials (specifying type of the flow, particular solver, turbulence model etc.).
- The table structure within this overview is mainly organised according to the outline defined within the exaFOAM project (see the corresponding description).
- New benchmarks may be put in any of the provided (or newly defined) categories suitable for the case.
- Each benchmark case should provide a README.md file with a description and a thumbnail image to be included within this overview.
These files should be located in the root directory of the case.
- The thumbnail image has to be 50 pixels high, the width is not constrained.
</details>
<details>
<summary>exaFOAM Project</summary>
## Motivation
Computational Fluid Dynamics performance on HPC is notably worse than idealised algorithms, due to inherent bandwidth needs, three-dimensional and time-date handling with non-sparse matrix dependencies, spatial domain decomposition requirements, I/O challenges.
Independent software vendors (ISVs) have rightly concentrated their efforts on different customer demands such as complex physics modelling (turbulence, multi-phase, combustion/reactions, particulates, heat transfer).
However, we see increasingly now that there is a commercial need to improve performance of industrial software and codes.
There is an increasingly stated need to redress the balance between performance and functionality, perhaps even to re-learn the lessons of parallelism and vectorisation explored during the 1980s, due to the approaching of the hybrid pre-exascale era in HPC.
The ambitious exaFOAM project (2021-2024) aimed to overcome these limitations through the development and validation of a range of algorithmic improvements.
Improvements across the entire CFD process chain (pre-processing, simulation, I/O, post- processing) were developed.
## Benchmarks
The developments of the exaFOAM project are showcased by
- *Grand Challenges* (GC) that are designed to push available HPC systems to their limits and showcase the performance gains achieved over the duration of the project,
- *Industrial Applications* (B) that are primarily driven by the expectations of the project's industrial observer partners,
- *Microbenchmarks* (MB) that are derived from the Grand Challenges and Industrial and can be used for the continuous assessment of the software components during development.
The cases related to each other are identified via a separate column in the tables below.
For some of the benchmarks, grid and restart files are available in the DaRUS data repository of the University of Stuttgart.
## Key Performance Indicators
The KPIs defined during the project always represent the ratio of the KPI before and after (KPI_before / KPI_after) and are thus dimensionless. Common metrics are:
- TTS = time-to-solution
- CTS = cost-to-solution
- PTS = power-to-solution
- PMC = peak memory consumption
- SDU = scratch disc-space used
Non-quantifiable KPIs:
- ET = enabling technology: something that was impossible
- CBF = critical bug fix: a fix that is required to run the case
- EA = extending applicability: something that worked but was not usable for e.g. larger cases, HPC or depending on specific setups
</details>
# Grand Challenges
[comment]: # (The no-break-space &nbsp is used in tables to fix the width of the column for images. Otherwise the image size depends on the amount of text in other columns and the full resolution of the thumbnail may be unsused.)
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Case Study | Related Cases | Description | Links |
| :----------------------------------------------------------------------------------------------------------------------: | ------------------------------------- | ------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| ![tn](compressible/rhoPimpleFoam/LES/highLiftCommonResearchModelONERA_LRM-LDG-HV/thumbnail.png) | GC1 – High-lift Common Research Model | MB9 | rhoPimpleFoam – 3D compressible flow, WMLES turbulence modeling | [Case](compressible/rhoPimpleFoam/LES/highLiftCommonResearchModelONERA_LRM-LDG-HV) |
| ![tn](combustion/XiFoam/DLRCJH/thumbnail.png) | GC2 – DLR-CJH Combustor | MB11 | XiFoam – turbulent combustion, LES turbulence modeling | [Case](combustion/XiFoam/DLRCJH) [RestartFiles](https://doi.org/10.18419/darus-3699) |
# Industrial Applications
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Case Study | Related Cases | Description | Links |
| :----------------------------------------------------------------------------------------------------------------------: | ------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| ![tn](combustion/reactingFoam/LES/DLRCJH/thumbnail.png) | B1 – FLOX® Gas Turbine (DLR-CJH) | MB3 MB4 | reactingFoam – turbulent combustion with detailed chemistry and LES turbulence modeling | [Case](combustion/reactingFoam/LES/DLRCJH) |
| ![tn](incompressible/adjointOptimisationFoam/TMECar/thumbnail.png) | B2 – TME Car | MB6 | adjointOptimisationFoam – unsteady adjoint optimization, external flow, DDES turbulence modeling | [Case](incompressible/adjointOptimisationFoam/TMECar) [RestartFiles](https://doi.org/10.18419/darus-3714) |
| ![tn](viscoelastic/viscoelasticFluidFoam/complexProfileExtrusion/thumbnail.png) | B4 – Complex Profile Extrusion | MB7 MB19 | viscoelasticFluidFoam (customized) – 3D laminar, viscoelastic flow | [Case](viscoelastic/viscoelasticFluidFoam/complexProfileExtrusion) [RestartFiles](https://doi.org/10.18419/darus-3797) |
| ![tn](incompressible/pimpleFoam/LES/occDrivAerRotMesh/thumbnail.png) | B5 – DrivAer-rot | MB8 | pimpleFoam – incompressible, external flow with rotating wheels using ACMI, DDES turbulence modeling | [Case](incompressible/pimpleFoam/LES/occDrivAerRotMesh) |
| ![tn](incompressible/pimpleFoam/LES/offshorewindpark/thumbnail.png) | B6 – Offshore Wind Park | MB12 | pimpleFoam – incompressible flow, wind turbines using actuator line model, LES turbulence modeling with synthetic turbulence inlet condition turbulentDigitalFilterInlet | [Case](incompressible/pimpleFoam/LES/offshorewindpark) [RestartFiles](https://doi.org/10.18419/darus-3975) |
| ![tn](compressible/rhoPimpleFoam/LES/aeroacousticDrivAer/thumbnail.png) | B7 – Aeroacoustics DrivAer derivative | MB16 MB17 | rhoPimpleFoam – compressible external flow, acoustic impact on the driver’s side-class, SA-IDDES | [Case](compressible/rhoPimpleFoam/LES/aeroacousticDrivAer) [RestartFiles](https://doi.org/10.18419/darus-3736) |
| ![tn](combustion/fireFoam/RAS/stecklerWithSpray/thumbnail.png) | B8 – Modified “Steckler” fire | | fireFoam – turbulent combustion with RANS or LES turbulence modeling | [Case](combustion/fireFoam/RAS/stecklerWithSpray) |
| ![tn](incompressible/pimpleFoam/LES/aerodynamicsDrivAer/thumbnail.png) | B9 – DrivAer ExtAero Derivative | | pimpleFoam – incompressible external flow, MRF for wheel rotation, SA-DDES | [Case](incompressible/pimpleFoam/LES/aerodynamicsDrivAer) [RestartFiles](https://doi.org/10.18419/darus-3737) |
# Microbenchmarks
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Case Study | Related Cases | Description | Links |
| :----------------------------------------------------------------------------------------------------------------------: | ------------------------------------------ | ------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| ![tn](incompressible/icoFoam/cavity3D/thumbnail.png) | MB1 – Cavity 3D | | icoFoam – incompressible laminar flow | [Case](incompressible/icoFoam/cavity3D) |
| none | MB2 – Compressible starting square jet | | rhoPimpleFoam – compressible flow, LES turbulence modeling | [Case](compressible/rhoPimpleFoam/LES/forcedPlume) |
| ![tn](combustion/reactingFoam/laminar/counterFlowFlame/thumbnail.png) | MB3 – Laminar Diffusion Counter-Flow Flame | B1 | reactingFoam – laminar combustion with detailed chemistry | [Case](combustion/reactingFoam/laminar/counterFlowFlame) |
| ![tn](combustion/reactingFoam/LES/DLRJHC/thumbnail.png) | MB4 – DLR-JHC burner | B1 | reactingFoam – turbulent combustion with detailed chemistry and LES turbulence modeling | [Case](combustion/reactingFoam/LES/DLRJHC) |
| ![tn](incompressible/simpleFoam/conicalDiffuser/thumbnail.png) | MB5 – ERCOFTAC Conical diffuser | | simpleFoam – incompressible flow, RANS turbulence modeling | [Case](incompressible/simpleFoam/conicalDiffuser) |
| ![tn](incompressible/adjointOptimisationFoam/twoCylindersInLine/thumbnail.png) | MB6 – Two cylinders in line | B2 | adjointOptimisationFoam – unsteady adjoint optimization, 2D laminar flow | [Case](incompressible/adjointOptimisationFoam/twoCylindersInLine) |
| ![tn](viscoelastic/viscoelasticFluidFoam/lidDrivenCavity/thumbnail.png) | MB7 – Viscoelastic Lid-driven Cavity | B4 | viscoelasticFluidFoam – 2D laminar, viscoelastic flow | [Case](viscoelastic/viscoelasticFluidFoam/lidDrivenCavity) [RestartFiles](https://doi.org/10.18419/darus-3798) |
| ![tn](incompressible/pimpleFoam/LES/wheelRotMesh/thumbnail.png) | MB8 – Rotating Wheel | B5 | pimpleFoam – incompressible, external flow with rotating wheels using ACMI, DDES turbulence modeling | [Case](incompressible/pimpleFoam/LES/wheelRotMesh) |
| ![tn](compressible/rhoPimpleFoam/LES/highLiftConfiguration/thumbnail.png) | MB9 – High-lift airfoil | GC1 | rhoPimpleFoam – 2D compressible flow, DDES turbulence modeling | [Case](compressible/rhoPimpleFoam/LES/highLiftConfiguration) |
| ![tn](incompressible/pimpleFoam/LES/conicalDiffuser/thumbnail.png) | MB10 – ERCOFTAC Conical diffuser LES | | pimpleFoam – incompressible flow, LES turbulence modeling | [Case](incompressible/pimpleFoam/LES/conicalDiffuser) [RestartFiles](https://doi.org/10.18419/darus-3745) |
| ![tn](combustion/XiFoam/pitzDaily3D/thumbnail.png) | MB11 – Pitz&Daily Combustor | GC2 | XiFoam – turbulent combustion, LES turbulence modeling | [Case](combustion/XiFoam/pitzDaily3D) [RestartFiles](https://doi.org/10.18419/darus-3744) |
| ![tn](incompressible/pimpleFoam/LES/modelwindfarm/thumbnail.png) | MB12 – Model Wind Farm | B6 | pimpleFoam – incompressible flow, wind turbines using actuator disc model, LES turbulence modeling | [Case](incompressible/pimpleFoam/LES/modelwindfarm) |
| ![tn](compressible/rhoPimpleFoam/LES/marinePropeller/thumbnail.png) | MB13 – Marine Propeller | | rhoPimpleFoam – compressible flow, LES turbulence modelling | [Case](compressible/rhoPimpleFoam/LES/marinePropeller) |
| ![tn](compressible/rhoPimpleFoam/LES/hydroacousticSheddingCylinder/thumbnail.png) | MB14 – Hydroacoustic Shedding Cylinder | | rhoPimpleFoam – 2D compressible flow, LES turbulence modelling | [Case](compressible/rhoPimpleFoam/LES/hydroacousticSheddingCylinder) |
| ![tn](compressible/rhoPimpleFoam/laminar/hydroacousticWaveTrain/thumbnail.png) | MB15 – 1D Hydroacoustic Wave Train | | rhoPimpleFoam – 1D compressible laminar flow | [Case](compressible/rhoPimpleFoam/laminar/hydroacousticWaveTrain) |
| ![tn](compressible/rhoPimpleFoam/LES/simplifiedHMCAeroacousticVechicle/thumbnail.png) | MB16 – Simplified HMC Aeroacoustic Vehicle | B7 | rhoPimpleFoam – compressible flow, LES turbulence modelling | [Case](compressible/rhoPimpleFoam/LES/simplifiedHMCAeroacousticVechicle) [RestartFiles](https://doi.org/10.18419/darus-3735) |
| ![tn](compressible/rhoPimpleFoam/laminar/aeroacousticWaveTrain/thumbnail.png) | MB17 – 1D Aeroacoustic Wave Train | B7 | rhoPimpleFoam – 1D compressible laminar flow | [Case](compressible/rhoPimpleFoam/laminar/aeroacousticWaveTrain) |
| ![tn](lagrangian/sprayFoam/gasSprayPenetration/thumbnail.png) | MB18 – Gas / Spray Penetration | | sprayFoam – compressible multiphase flow with Lagrangian spray | [Case](lagrangian/sprayFoam/gasSprayPenetration) |
| ![tn](viscoelastic/viscoelasticFluidFoam/profileExtrusion/thumbnail.png) | MB19 – Profile Extrusion | B4 | viscoelasticFluidFoam (customized) – 3D laminar, viscoelastic flow | [Case](viscoelastic/viscoelasticFluidFoam/profileExtrusion) [RestartFiles](https://doi.org/10.18419/darus-3799) |
# Other Benchmarks
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Case Study | Description | Links |
| :----------------------------------------------------------------------------------------------------------------------: | ----------------------------- | ---------------------------------------------------------- | ------------------------------------------------------- |
| ![tn](incompressible/icoFoam/old/Lid_driven_cavity-3d/thumbnail.png) | Cavity 3D (PRACE White paper) | icoFoam – incompressible laminar flow | [Case](incompressible/icoFoam/old/Lid_driven_cavity-3d) |
| ![tn](incompressible/simpleFoam/HPC_motorbike/thumbnail.png) | Motorbike | simpleFoam – incompressible flow, RANS turbulence modeling | [Case](incompressible/simpleFoam/HPC_motorbike) |
combustion/XiFoam/DLRCJH/thumbnail.png

5.54 KiB

combustion/XiFoam/pitzDaily3D/thumbnail.png

6.04 KiB

combustion/fireFoam/RAS/stecklerWithSpray/thumbnail.png

11.5 KiB

combustion/reactingFoam/LES/DLRCJH/thumbnail.png

6.38 KiB

combustion/reactingFoam/LES/DLRJHC/thumbnail.png

1.66 KiB

combustion/reactingFoam/laminar/counterFlowFlame/thumbnail.png

841 B

compressible/rhoPimpleFoam/LES/aeroacousticDrivAer/thumbnail.png

15.2 KiB

compressible/rhoPimpleFoam/LES/highLiftCommonResearchModelONERA_LRM-LDG-HV/thumbnail.png

9.22 KiB

compressible/rhoPimpleFoam/LES/highLiftConfiguration/thumbnail.png

11.1 KiB

compressible/rhoPimpleFoam/LES/hydroacousticSheddingCylinder/thumbnail.png

3.32 KiB

compressible/rhoPimpleFoam/LES/marinePropeller/thumbnail.png

8.04 KiB

compressible/rhoPimpleFoam/LES/simplifiedHMCAeroacousticVechicle/thumbnail.png

7.75 KiB

compressible/rhoPimpleFoam/laminar/aeroacousticWaveTrain/thumbnail.png

3.23 KiB

compressible/rhoPimpleFoam/laminar/hydroacousticWaveTrain/thumbnail.png

4.1 KiB

incompressible/adjointOptimisationFoam/TMECar/thumbnail.png

6.78 KiB

incompressible/adjointOptimisationFoam/twoCylindersInLine/thumbnail.png

4.86 KiB

incompressible/icoFoam/cavity3D/thumbnail.png

4.36 KiB

The test-case is the 3-D version of the [Lid-driven cavity flow tutorial](https://www.openfoam.com/documentation/tutorial-guide/tutorialse2.php).
This test-case has a simple geometry and boundary conditions, involving transient, isothermal, incompressible laminar flow in a three-dimensional box domain. The *icoFoam* solver is used in such test-case.
It is intended to stress test the linear algebra solver, most of the time being spent in the pressure equation.
# Definition of geometrical and physical properties
In this simple geometry, all the boundaries of the box are walls. The top wall moves in the x-direction at the speed of 1 m/s while the other five are stationary.
Three different sizes have been selected:
- Small (S)
- Medium (M)
- Extra-Large (XL)
- Extra-extra Large (XXL)
The following table shows the geometrical and physical properties of the different test-cases, which have an increasing number of cells: 1 million (m) (S), 8 m (M) and 64 m (XL) of cells, obtained by halving ∆x when moving from the smaller to the bigger test-case.
The Courant number Co=(U ∆t)/∆x is kept under the stability limit, and it is halved when moving to bigger test-cases.
The time step ∆t is reduced proportionally to Co and ∆x, by 4 times. The physical time to reach steady-state in laminar flow is T= 0.5.
| Parameters / Test-case | **S** | **M** | **XL** |
| ----------------------------- | ----- | ------- | ------------- |
| ∆x (m.) | 0.001 | 0.0005 | 0.00025 |
| N. of cells tot. (m) | 1 | 8 | 64 |
| N. of cells lin. (m) | 100 | 200 | 400 |
| kinematic viscosity ν (m^2/s) | 0.01 | 0.01 | 0.01 |
| d (m) | 0.1 | 0.1 | 0.1 |
| Co | 1 | 0.5 | 0.25 |
| ∆t (s) | 0.001 | 0.00025 | 0.0000625 |
| Reynolds number | 10 | 10 | 10 |
| U (m/s) | 1 | 1 | 1 |
| n. of iter. | 500 | 2000 | 8000 (100) |
| End physical Time (s.) | 0.5 | 0.5 | 0.5 (0.00625) |
The test-case XL is used with a number of iteration equal to 100 to reduce the computational time.
# Set-up of linear algebra solvers
The set-up for the linear algebra solvers comprises the following:
Pressure:
- FOAM-DIC-PCG: is an OpenFOAM iterative solver that combines a Diagonal-based Incomplete-Cholesky (DIC) preconditioner with a Conjugate Gradient (PCG) solver. DIC is a common preconditioner in OpenFOAM for its easy configuration and high efficiency
- FOAM-GAMG-PCG: is an OpenFOAM iterative solver that uses a Conjugate Gradient (CG) accelerated by a generalized geometric-algebraic multigrid (GAMG) method that supports both geometrical and algebraic multigrid.
- PETSc-ICC-CG(*): is the PETSc counterpart of the FOAM-DIC-PCG method. ICC is the Incomplete Cholesky factorization implementation of PETSc
- PETSc-AMG-CG(*): is the PETSc counterpart of the FOAM-GAMG-PCG method. In this solver we use an algebraic multigrid method (***BoomerAMG***), provided by the third-party library of PETSc named Hypre.
- PETSc-AMG-CG(*) + caching: as above but the matrix is converted only at the beginning and cached together with the preconditioner for all the time-steps. In this particular case of constant-coefficients matrix, the numerical solution is equivalent to the case without caching.
(*) For the PETSc solvers, the [PETSc4FOAM library][readme petscfoam]
is used for embedding PETSc and its external dependencies (i.e. Hypre) into arbitrary OpenFOAM simulations.
Velocity:
- The solver/preconditioner pair for the momentum equation is keeping fixed by using a DILU-PBiCGStab that is a combination of Diagonal Incomplete LU (asymmetric) factorization for the preconditioner with a Stabilized Preconditioned (bi-)conjugate gradient solver.
The following Table summarizes the different preconditioner/solver pairs used to solve the pressure equation
| Method | Preconditioner | Solver |
| ------------- | --------------------------------------- | ------------------ |
| FOAM-DIC-PCG | Diagonal-based incomplete-Cholesky | Conjugate Gradient |
| FOAM-GAMG-PCG | Geometric-algebraic multigrid | Conjugate Gradient |
| PETSc-ICC-CG | Incomplete-Cholesky | Conjugate Gradient |
| PETSc-AMG-CG | Classic algebraic multigrid (BoomerAMG) | Conjugate Gradient |
The iterative method can be run using two different convergence criteria:
1. `fixedITER`: In this case the computational load is fixed, when running with the given solver. It is NOT representative of the real set-up. Used only for preliminary tests in the development phase or stress HPC architectures. This case is useful for comparing different hardware configurations by keeping constant the computational load.
2. `fixedNORM`: in this case the exit norm is fixed.
The two different options are selected by choosing one of the two configurations files, where <Method> keyword is selected according to the previous Table:
1. `system/fvSolution.<Method>.fixedITER`, with a constant number of iteration per time step for the pressure solver, different according to the test-case size. The velocity solver is set to 5 iteration per time step for the different test-cases.
2. `system/fvSolution.<Method>.fixedNORM`, with a fixed exit norm value of 10^{-4} for the pressure solver.
To use one of the selected method copy/rename the chosen file in
`fvSolution` or use the symbolic link of the unix environment.
For example,
```
cd system
ln -s fvSolution.<Method>.fixedITER fvSolution
```
![Figure](assets/time_3d.png "total time for PISO solver, XL Test case")
This figure shows the total time for solving PISO with different preconditioner/solver pairs reported in the Table above, for the XL test-case, with fixed exit norm configuration.
# References
[1] S. Bnà, I. Spisso, M. Olesen, G. Rossi *PETSc4FOAM: A Library to plug-in PETSc into the OpenFOAM
Framework* [PRACE White paper](https://prace-ri.eu/wp-content/uploads/WP294-PETSc4FOAM-A-Library-to-plug-in-PETSc-into-the-OpenFOAM-Framework.pdf)
----
[repo petscfoam]: https://develop.openfoam.com/modules/external-solver/
[readme petscfoam]: https://develop.openfoam.com/modules/external-solver/-/blob/develop/README.md
\ No newline at end of file
incompressible/icoFoam/old/Lid_driven_cavity-3d/thumbnail.png

2.9 KiB

0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment