Mixed Precision in HyTeG
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 tosrc/hytec/solvers/
in a future issue (TODO). - Some changes for the
memory
structure andP1 functionalities
to allow forfloat16
. (src/hyteg/gridtransformators/
andsrc/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.
- Printing the elements within a LaTeX
Table
in the scientific format. (src/hyteg/dataexport/LaTeX/Table.hpp
) - Including a getter function for only the inner global DoFs. (
src/hyteg/p<{1,2}>functionspace/<{VertexDoFFuntions,P2Function}>.hpp
) - Adding a label for the
ChebyshevSmoother
to theTimingTree
. (src/hyteg/solvers/ChebyshevSmoother.hpp
)
- Lastly, some changes related to #229 (closed), !669 (merged)
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