Removing the L2 cache bottleneck via the SplitCK scheme not only leads to direct performance increases compared to the LoG scheme – it enables further improvements by increasing the ratio of vectorized floating point operations.
To achieve this, we address the AoS-vs.-SoA data layout conflict by introducing a hybrid data layout that can serve as AoS for the GEMM kernels and also as SoA for the user functions. Similar hybrid data layouts were also explored in the PyFR Navier–Stokes solver [1]} and are used by the YATeTo code generator [2]} to optimize complex tensor operations.
