Skip to content

Enable float16 support for the P1 functionspace

Michael Zikeli requested to merge zikelim/P1Space-ExtensionFP16 into master

HyTeG was not able to work with float16 types. This merge request fixes this by adding the missing functionality for the P1 functionspace.

Necessary changes:

  • Template and explicit instantiate the following kernels that have been generated at some point <add, apply, assign, communicate>. The other two kernel types have not been templated yet, since they are not used for the generated operators.
  • Set standard to C++23 if half precision support is enabled, otherwise some basic asserts like is_floating_point will fail.
  • Add test that check if all necessary functionality of float16 is working properly.
  • Update walberla to support float16 support.
  • Make sure that WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT is enabled in the pipeline.
  • Make sure that the remote on the submodule walberla is the walberla repo and not a local fork.
  • Test the implementation and float16SupportTest for older compilers as well.
  • Some of the now templated kernels use copy by value, while reference is sufficient. Go back and add references.
  • Update the license in the modified files.

This merge request is dependent on the walberla merge request !643.

Edited by Michael Zikeli

Merge request reports