IgorBaratta / local_operator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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