Dahlia Programmability
There are cases that some loop is not unrollable but if we split part of it out, we have it.
This loop is not unrollable since it involves dynamic indexing of array
b
.However, it would be fine if we split it into two loops, we might get some kind of speed up since the second part is unrollable now.
There are cases that the loop is not satisfying:
We can only unroll by 2 in this case:
But we can also increase loop number. But there could be a tradeoff since we introduce more hardware and need to recover original values.
Trade of between inner loop and outer loop.
Examples can be found here - https://github.com/cucapra/fuse-benchmarks-sdaccel/blob/master/experiments/dahlia-dse/machsuite-stencil-stencil2d-inner/stencil.fuse and here - https://github.com/cucapra/fuse-benchmarks-sdaccel/tree/master/experiments/dahlia-dse/machsuite-stencil-stencil2d-outer/stencil.fuse
Notice HLS can do the second case automatically (completely unroll inner loops and then partially unroll outer loops) but in Dahlia we need to specify it.
Last updated
Was this helpful?