Enable float16 support for the P1 functionspace
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