Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • sac2c sac2c
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 393
    • Issues 393
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 15
    • Merge requests 15
  • Deployments
    • Deployments
    • Releases
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • sac-group
  • sac2csac2c
  • Issues
  • #2456
Closed
Open
Created Feb 21, 2025 by Thomas Koopman@thomasDeveloper

Stripping out blocking

The AST contains wlblock and wlublock nodes that are generated, but that are not reachable from any other node. The code seems to be written by Dietmar Kreye in 1998 - 2000.

While blocking is definitely an important optimisation, I don't think that this is practical to do this with compiler transformations because it depends on the algorithm structure as well as cache sizes and backends. (See also the failure of polyhedral optimisations.) Since 25 years ago we have learned that many of these optimisations can be elegantly expressed by encoding the blocking in the array shapes.

This code complicates the compilation of with-loops. I spent a lot of time reverse engineering things for the distmem backend that turned out were never generated, so this hurts the maintainability of the compiler.

Given this, and that the blocking currently does not work anyway, I think we should remove it. I have stripped it out in !360 (merged)

Edited Feb 28, 2025 by Thomas Koopman
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking