← Research

EuroHPC · 2021–2024

exaFOAM

Exploiting exascale systems for open-source CFD in mainstream industry. Wikki developed the coherent mesh and file format for parallel I/O, made the pre- and post-processing of a 489-million-cell combustor case 31 times cheaper and led the work on 30 public HPC benchmarks.

Rendering of the flame in the DLR combustor, the exaFOAM Grand Challenge case

exaFOAM, Exploitation of Exascale Systems for Open-Source Computational Fluid Dynamics by Mainstream Industry, was a EuroHPC project from April 2021 to March 2024. A European consortium of industry, universities and HPC centres, coordinated by ESI Group (now Keysight Technologies), set out to remove the bottlenecks that keep OpenFOAM® from scaling on massively parallel HPC systems, all in open source.

Highlights

The coherent I/O format

OpenFOAM’s file formats were designed for a few hundred processors. A mesh is stored already decomposed for a fixed number of processors, either as one file per processor and field or collated into large files that are written by a serial tool. For the 489-million-cell combustor, decomposing the mesh into 32,768 partitions took about 19 hours, and 65,536 partitions were impossible within the 24-hour job limit.

In the coherent format, the mesh is stored independently of the decomposition. Cells, faces and points are ordered so that each partition reads one contiguous section of each list, and the boundaries between processors are created when the mesh is read. The same mesh can therefore be read by any number of MPI ranks, and results no longer need to be reconstructed. The data are written in parallel through the ADIOS2 library, so a case consists of a handful of files instead of hundreds of thousands.

Bar chart of decomposition wall time against the number of partitions: up to 19 hours for the collated format, about 20 minutes for the coherent format
Time to decompose the 489-million-cell combustor mesh on one core. Collated format: up to 19 hours for 32,768 partitions. Coherent format: about 20 minutes for any number of partitions, including 65,536 and 131,072, which were not possible before.

Over a typical workflow of decomposing, renumbering and reconstructing the combustor case on LUMI, the cost fell from 7,843 to 252 core-hours. The coherent format is available as a preview release for OpenFOAM v2412; its latest development state is on GitLab. Wikki provides tutorials, and a training session from the 18th OpenFOAM Workshop introduces the format. Its integration into the official release is being discussed with the OpenFOAM developers.

Combustor Grand Challenge

Wikki set up one of the project’s Grand Challenge cases: a large-eddy simulation of a combustor built at the Institute of Combustion Technology of the German Aerospace Center (DLR). It uses a recirculation-stabilised jet flame (FLOX), a technology developed for industrial furnaces with great potential for gas turbines. The geometry is scripted in FreeCAD, and meshes with 3, 24, 189 and 489 million cells were created with snappyHexMesh. The 24-million-cell case was validated against the experiment.

Profiling by BSC revealed an expensive MPI communication in the van Driest damping of the turbulence model at every time step. An algorithmic fix by ESI removed it and led to superlinear speed-up. The coherent format then made the decompositions for 65,536 and 131,072 cores possible.

Strong scaling plot of the 489-million-cell combustor from 1,024 to 131,072 cores, comparing pre-exaFOAM and exaFOAM-coherent versions with ideal scaling
Strong scaling of the 489-million-cell combustor from 1,024 to 131,072 cores. Before exaFOAM, the case stopped scaling at 8,192 cores. With the improved turbulence model and the coherent format it scales to 131,072 cores, 30 times faster than the best pre-exaFOAM result.

Benchmarks for the community

Wikki led the work on the project’s benchmark suite and created four micro-benchmarks: a 3D lid-driven cavity, the ERCOFTAC conical diffuser in a RANS and an LES version, and the Pitz & Daily combustor. Each micro-benchmark shows the characteristic HPC issues of a large case at a size where code development is still practical.

Rendering of vortical structures in the ERCOFTAC conical diffuser
Vortical structures in the ERCOFTAC conical diffuser. In the original ERCOFTAC workshop the finest mesh had 92,000 cells; the exaFOAM benchmark goes up to 145 million.

All 30 benchmarks of the project, from external aerodynamics to reactive flows, are published in the repository of the OpenFOAM HPC Technical Committee, together with instructions, key performance indicators and guidelines for contributions. Wikki redesigned the repository’s landing page to give an overview of all cases. Restart files for selected benchmarks are available on DaRUS, the data repository of the University of Stuttgart.

Collage of renderings and setups of the 30 benchmark cases, from a cavity and a diffuser to a car, a propeller and a combustor
The benchmark cases of the OpenFOAM HPC Technical Committee repository.

Dynamic load balancing

Wikki also developed a fine-grained dynamic load balancing for OpenFOAM. Matrix operations are split into chunks that idle MPI ranks can take over from busy ones on the same node, using a thread pool, a scheduler and non-blocking global reductions. The prototype reduces MPI idle time and can be introduced operation by operation.

Publications

Funding

exaFOAM has received funding from the European High-Performance Computing Joint Undertaking (JU) under grant agreement No 956416. The JU receives support from the European Union’s Horizon 2020 research and innovation programme and France, Germany, Spain, Italy, Croatia, Greece and Portugal.

← Back to research · Contact us about this project