Skip to content
Snippets Groups Projects
Marcus Mohr's avatar
Marcus Mohr authored
Operators for bd38d653 (Adds mass and diffusion operators for P2PlusBubble FE space)

See merge request !30
354f6d27
History

Optimized operators for HyTeG

This repository contains optimized elementwise operators for HyTeG. The code under operators is generated using HOG. Each kernel has a platform independent and, where applicable, an AVX-vectorized version. The desired variant is configured in CMake.

All operators are described declaratively in operators-<operator-group>.toml. They are roughly split into groups for a better overview and faster integration tests.

How to generate operators

cd generate

python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

python generate.py -o ../operators ../operators-<operator-group>.toml

# To generate all operators you have to run the script repeatedly, each time with a different toml file.

Intended development workflow

Adding a new operator is as easy as adjusting one of the existing operators-<operator-group>.toml files, or adding a new one. If you want to update the generator, make the necessary changes in the generate directory. It is a good idea to test your changes locally. In your commit, do not include changes to the operators directory. After pushing your changes to the remote, our CI automatically regenerates all operators from all operators-<operator-group>.toml files present in the repository. In this process, any changes you made under operators will be lost. After the pipeline has passed, you can trigger the manual job submit-merge-request to create a new merge request including your changes and the freshly generated operators. Using the CI makes sure that the generated code is always in sync with the description of what and how to generate.