Xyst

Image

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:

InciterNavier-Stokes solver for engineering flows
Implements multiple flow solvers for complex engineering geometries.

MeshConvTetrahedron-mesh converter
Converts large tetrahedron meshes between various formats.

UnitTestTest 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

GPL v3.

History

Xyst is forked from Quinoa. Compared to Quinoa, Xyst

  1. Removes the stochastic differential equation solver (walker),
  2. Implements different solvers,
  3. Uses Lua for input files, and
  4. Simplifies Quinoa's code and its build system.

Development on Quinoa and Xyst continues on different forks.

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.

Authors

Jozsef Bakosi - Aditya Pandare - Weizhao Li - Bob Bird - Marc Charest - Tanner Nielsen - Christoph Junghans - Francisco Gonzalez - Aditya Pakki - Robert Pavel - Brandon Rogers