  In this work, we present how code generation techniques significantly improve
the performance of the computational kernels in the HyTeG software framework.
This HPC framework combines the performance and memory advantages of
matrix-free multigrid solvers with the flexibility of unstructured meshes. The
pystencils code generation toolbox is used to replace the original abstract C++
kernels with highly optimized loop nests. The performance of one of those
kernels (the matrix-vector multiplication) is thoroughly analyzed using the
Execution-Cache-Memory (ECM) performance model. We validate these predictions
by measurements on the SuperMUC-NG supercomputer. The experiments show that the
performance mostly matches the predictions. In cases where the prediction does
not match, we discuss the discrepancies. Additionally, we conduct a node-level
scaling study which shows the expected behavior for a memory-bound compute
kernel.
