Open zzzDavid opened 1 year ago
Right, this is a bit tricky. Do we have any use cases that require to access those loops?
I received this feedback from a HeteroCL user, their use case is also convolution:
For example, my original conv layer had 4 outer layers and 4 inner layers of loops. After applying "reuse_at" with a buffer to this conv layer, some new loops have been added. I would like to perform operations like pipeline on these new loops. Now the question is whether there is a way to apply "reuse_at" and access the new loops after these changes.
We can represent such imperfect loop nests as trees, but I'm not sure if we want to do that
Currently user doesn't have access to some new loops created by
reuse_at
. For example, this 2D convolution with line buffer and window buffer:The
v9
loop that shifts the window buffer (see below for generated HLS code) is not directly accessible inB.axis
list.I think the axis list loop nest representation makes sense for perfectly nested loops but I'm not sure for imperfect loop nests. Loop
v9
and loopr
are at the same level, nested in loopx
.