Skip to content

Backend rework

Tracking issue for porting the code to the new pystencils backend (pycodegen/pystencils#73).

Development branch: bauerd/backend-rework.

  • Basic functionality (All kernel types, sawtooth, cse) (terraneo/hyteg-form-generator@52c44da2b0df86e499eab7079f0c54f7327e1457)
  • Hoisting of invariants (terraneo/hyteg-form-generator@0ce4d0a9dc2bc565aba52fa00415c42380f6d118)
  • Quadrature loops (c3a2d734)
  • Tabulations (640f6700)
  • Cubes loop (without loop cutting) (9b357196)
  • Loop cutting (#1) (9b357196)
  • Coefficients
  • Count operations (#28) (b4d6b3b0)
  • Simplification of conditionals (624e1ea2)
  • Vectorization (#17 (closed)) (9a533453, 4286b801)
  • Blending (3e03f845)
  • Generate vectorized/non-vectorized versions without cloning the AST (messes with the symbol table). Ideally, generate non-vectorized AST, emit C++-code, further transform AST, emit transformed code. This avoids duplicate work in building the AST (as we have now) and unnecessary work of cloning the AST (deepcopy is in fact quite expensive). Use PsAstNode.clone() instead of deepcopy to generate vectorized and platform-independent kernels.
  • Implement (and call) AST pass which removes unused declarations.
Edited by Daniel Bauer