Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W waLBerla
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 49
    • Issues 49
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 14
    • Merge requests 14
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • waLBerla
  • waLBerla
  • Merge requests
  • !446

Code Generation for Lattice Boltzmann In-Place Streaming Patterns

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Frederik Hennig requested to merge da15siwa/walberla:inplace_streaming_codegen into master Apr 14, 2021
  • Overview 4
  • Commits 27
  • Pipelines 10
  • Changes 26

This MR introduces an extension to the pystencils/lbmpy code generation system of waLBerla, providing an intuitive interface to generate the Even/Odd-timestep alternating sweeps required for in-place LBM streaming patterns, like the AA-Pattern and EsoTwist.

The pystencils_walberla codegen module is extended by the generation of selective sweeps, where multiple kernels are compiled into the same sweep class. The kernel to be executed is then selected at runtime by a generated if/else cascade, according to a number of selection arguments passed to the sweep.

In the lbmpy_walberla module, generate_alternating_lbm_sweep uses the selective sweep codegen interface to generate an Even/Odd alternating LBM sweep. The correct kernel is selected according to an integer argument. A high-level interface to the sweep hides this argument by instead accepting an instance of the walberla::lbm::TimestepTracker class, which tracks Even/Odd timesteps in the waLBerla timeloop.


To Do

  • Selective Sweep Codegen for Sweeps
  • Alternating LB Sweep
  • Selective Sweep Codegen for Boundaries
  • Alternating LB boundary
  • Test Case
  • Flow Around Sphere Benchmark App
Edited Apr 30, 2021 by Frederik Hennig
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: inplace_streaming_codegen