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).UsePsAstNode.clone()
instead ofdeepcopy
to generate vectorized and platform-independent kernels. -
Implement (and call) AST pass which removes unused declarations.
Edited by Daniel Bauer