HLS for-loop循环优化

文章目录

 

1. 基本性能指标

HLS for-loop循环优化

2.performance matrics

loop trip count :循环执行了几次
loop interation latency :循环一次用了几个cycle
loop interation latency(Loop II) :两次循环直接间隔了几个cycle
loop latency:整个for循环的latency
function latency
function initial interval(II)
HLS for-loop循环优化
HLS for-loop循环优化

pipeline

HLS for-loop循环优化
流水线为什么是这样,为什么不能完全并行呢?
因为memory端口只有一个?

HLS for-loop循环优化

unrolling

默认用同一套电路,分时复用
unroll就是 对电路进行复制,复制几份是可以选择的HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化

HLS for-loop循环优化

3.循环合并

HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化

4.数据流

A simple example

HLS for-loop循环优化
有依赖关系,不能合并
dataflow
HLS for-loop循环优化
HLS for-loop循环优化
默认是pingpongram
dataflow的限制
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
变量一定是在一个for循环中被使用
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化

5.嵌套的for循环

three types of nested loop

perfect loop :循环边界是固定常数,循环体只会在最内层出现
HLS for-loop循环优化
semi-perfect loop nest
外循环为变量,内循环为常数,循环体在内循环中
HLS for-loop循环优化
imperfect loop有两种类型
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
希望通过代码优化将imperfect loop转化成semiperfect loop
A simple example of perfect loop

HLS for-loop循环优化
对外部for循环做pipeline,外部for循环下面的所有for循环都会被打开
如果对inner loop 做pipeline,会对outer loop进行flattening
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
比较
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
优化后
HLS for-loop循环优化
HLS for-loop循环优化

6.其他优化方法

the issue regarding loop parallelism

merge

HLS for-loop循环优化
注意merge的条件。

把for循环封装成函数

HLS for-loop循环优化
如图所示,依然是分时复用,节省了资源,但并没有减少latency。
有没有办法实现并行呢?

make functions run in parallel

用allocation 实现并行,accumulator limit=2就是函数复制了两份。
HLS for-loop循环优化
HLS for-loop循环优化

loop pipeline with rewind option

HLS for-loop循环优化
example
HLS for-loop循环优化
HLS for-loop循环优化
multiple loops with rewindHLS for-loop循环优化
包含多个for循环,不能使用rewind
automatic loop pipelining
如何自动对for循环添加pipelining
HLS for-loop循环优化

some approaches to code with variable loop bounds

HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化
HLS for-loop循环优化