Narrative of assemble comparison with FFC
jorgensd opened this issue · comments
FFC was one of the early form compilers. It was developed from scratch, where the first problems (and natural research problem), the Poisson problem and projections.
However, for more complex forms such as adding a Coefficient, Mixed Elements (Stokes problem) or "exotic" finite elements (Nedelec, curl-curl), or higher order finite elements, the strategy for generating integration kernels does not yield good performance.
Things FFC did:
- Prune zeros (Reduces FLOPS, but one cannot fuse loops).
- Tensor contraction of dofmaps (which cant be vectorized)
- Unrolled loops by hand (which cant be vectorized)
LSSH:
FFC did not rely on the compilers being clever. With the wide span of architectures in HPC computing (and in general) we profile these operations with GodBolt, and show comparisons of FFC and FFCx