4 ms·
Interesting! I saw Lava briefly and understood it as basically a DSL to describe logic; additional abstractions to build pipelines on top of that would be very
by cfallin 11y ago
Interesting! I saw Lava briefly and understood it as basically a DSL to describe logic; additional abstractions to build pipelines on top of that would be very cool. Looking forward to seeing what comes out of your work!
And yup, there's been a lot of past work on auto-pipelining, but my understanding of what's been done before is that it handles splitting logic into stages, but doesn't necessarily encapsulate more complex patterns -- e.g. no one has built a tool that understands stall logic or bypass networks or clears/restarts in a pipeline and can synthesize those patterns flexibly.
So you could see autopiper's main contribution as the "lowering" of a conventional SSA-based IR into pipelined logic, along with the primitives necessary to describe the actual semantic intent behind design patterns (ask/provide for bypass, killyounger and CFG backedges for pipeline restarts), and the insight that macros can use those primitives to build things like speculation.
If you know of any other past work I'd be really interested to see it!