Xyst
Xyst is a Navier-Stokes solver for engineering flows.
The goal of this project is to simulate engineering problems with a production-quality code that is extensible and maintainable, using hardware resources efficiently, even for problems with unpredictable, heterogeneous, and dynamic compute-load distribution.
The software implementation facilitates the effective use of hardware of any size, from laptops to the largest distributed-memory clusters, by combining data-, and task-parallelism on top of the Charm++ runtime system. Charm++'s execution model is asynchronous by default, allowing arbitrary overlap of computation and communication. Built-in automatic load balancing enables redistribution of heterogeneous computational load based on real-time CPU load measurement at negligible cost. The runtime system also features automatic checkpointing, fault tolerance, resilience against hardware failure, and supports power-, and energy-aware computation.
Tools
Xyst consists of the following tools:
Inciter — Navier-Stokes solver for engineering flows
Implements multiple flow solvers for complex engineering geometries.
MeshConv — Tetrahedron-mesh converter
Converts large tetrahedron meshes between various formats.
UnitTest — Test suite for (a)synchronous functions
Tests serial and (a)synchronous concurrent functions.
Build
Install prerequisites: Debian-based linux
apt install git cmake g++ ninja-build libopenmpi-dev libnetcdf-mpi-dev
Clone, build, test
git clone https://codeberg.org/xyst/xyst.git && cd xyst mkdir build && cd build && cmake -GNinja ../src && ninja && cd - cd build && ./charmrun +p4 Main/unittest && ctest -j4 && cd -
All executables will be under build/Main/
.
License
History
Xyst was forked in 2022 from Quinoa which was started from scratch in 2012. Compared to Quinoa, Xyst
- Removes the stochastic differential equation solver (walker),
- Implements different solvers,
- Uses Lua for input files, and
- Simplifies Quinoa's code and its build system.
Development on Quinoa and Xyst continues on different forks, targeting different families of problems.
Funding
This work is co-funded by the European Union and has received funding from the European High Performance Computing Joint Undertaking and Poland, Germany, Spain, Hungary, France under grant agreement number 101093457 via the HiDALGO2 project.