Feature Request

Planned Features

  • Edge/Faces values for FVM
  • Loop transformations blocking, tilling for Phase-Field values
  • Loop reduction for LBM evaluation/debugging/output (i.e. max, sum ...)
  • LLVM?, PACXXX??
  • LBM list kernel+++
  • Vectorisierung
  • LROP (Sparse Phases)
  • Boundaries
  • CSE???
  • Communication code for LBM
  • Layouts for LBM

Planned Architecture

  • Stage 1: ordered list of sympy equations,

    • this stage should remain unchanged (interface stability)
    • contains Field.Access objects
    • contains sp.Piecewise functions to represent ifs
    • in the future it might also contain reduction markers to do reductions in the same step as the computation. for example: a lattice boltzmann kernel somewhere computes velocity: a reduction can be defined to compute the maximal velocity over all cells
    • may also contain TypedSymbols i.e. sympy symbols that are annotated with their type
  • Stage 2:

    • Type untyped Symbols
  • Stage 3: AST with as few transformation done as possible

    • loops are written around equations - loop over all cells - indexed kernels: (x,y,z) is loaded from an index fields (struct support!)
    • KernelFunction node (which should be fully functional already, knows parameters etc) is the outermost node
    • field accesses are not yet resolved, however the loop counters are introduced to make relative to absolute indices f[1,-1] gets f[ctr0 + 1, ctr1 - 1]
  • Stage 4: Field accesses are resolved to pointer arithmetic

    • can be splitted into resolveArrayAccesses and resolveStructAccesses
    • no information should be lost in this stage, i.e. the Indexed nodes should still know their field
  • Stage 5: Typing of all expressions with a dict and insertion of cast nodes

Transformations

  • move constants before loop (after stage 5)
  • cache blocking of loops (after stage 5)
  • loop peeling to make main loop pointer access aligned (after stage 5)
  • loop splitting for LBM split kernels (currently done after Stage 3, can this also be moved after stage 5?)
Edited by Jan Hönig