Skip to content

Mixed Precision in HyTeG

Michael Zikeli requested to merge zikelim/merge-MT into master

This MR is the final version of my Masters's thesis, do to rebasing of HyTeGs codebase and the introduction of the hyteg_operators submodule and the HOG tool, merging my work was not as trivial.

The changes of this MR are divided into several parts:

  • The application of my master thesis, i.e. a Poisson problem using IR as a solver, GMG as inner-solver, 1st order Chebychev as smoother and CG as coarse grid solver. This part is quite lengthy and includes a lot of scripts and apps for benchmarking and profiling. If requested, the entire folder 2023-zikeli-mt/MT-apps/ can be taken out from this MR and included in another MR. This part also includes an IR solver, that is meant to be a standalone solver and will be added to src/hytec/solvers/ in a future issue (TODO).
  • Some changes for the memory structure and P1 functionalities to allow for float16. (src/hyteg/gridtransformators/ and src/hyteg/memory/)
  • Some casting statements for the solvers to allow for solvers using mixed precision. (src/hyteg/solvers/)
  • Some minor changes that could have been standalone MR but are too insignificant to do so, therefore, they are just added within this MR.
  1. Printing the elements within a LaTeX Table in the scientific format. (src/hyteg/dataexport/LaTeX/Table.hpp)
  2. Including a getter function for only the inner global DoFs. (src/hyteg/p<{1,2}>functionspace/<{VertexDoFFuntions,P2Function}>.hpp)
  3. Adding a label for the ChebyshevSmoother to the TimingTree. (src/hyteg/solvers/ChebyshevSmoother.hpp)

Note: Since at the time this work was done, the submodule hyteg_operators was not a thing yet, I needed to generate some operators and add them to the repository in the folder apps/2023-zikeli-mt/MT-apps/operators-used. At some point, they can be replaced by the submodule, but as of right now, there is no nice way to model various precisions with HOG and use them hyteg_operators. This will be part of a separate issue (TODO). Once this issue is fixed, they can be removed from the repository again.

Edited by Michael Zikeli

Merge request reports