Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W waLBerla
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 38
    • Issues 38
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 10
    • Merge requests 10
  • 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

Merged
Created Apr 14, 2021 by Frederik Hennig@da15siwaContributor6 of 6 tasks completed6/6 tasks

Code Generation for Lattice Boltzmann In-Place Streaming Patterns

  • 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
Reviewer
Request review from
Time tracking
Source branch: inplace_streaming_codegen