一、对函数三种优化情况对比
对函数默认情况下;对函数进行pipeline优化;对函数使用dataflow优化。
这三种情况对比,可以看latency和吞吐量差异。
二、使用dataflow对函数优化
上图中,如果不使用dataflow优化,两个for循环是串行执行的;使用了dataflow优化后,两个for循环是并行的,第一个循环产生了数据,第二个for循环即可开启操作。
三、pipeline和dataflow的区别
1.首先关于dataflow
hls在block代码块插入channel;
这里测block块可以是function函数,也可以是loop块;
channel一般是data buffer,可以是FIFO或者ping-pang buffer.
对于数据,channel使用memory来存储样本。
对于scalar,channel使用寄存器来hand-shake握手
2.pipeline实现是基于FSM状态机管控的,dataflow是使用分布式
handshake握手的。
pipeline是使用FSM状态机来控制各个task工作的。
dataflow是使用channel管道和管道的empty,full等一些控制信号控制
前后级block块的。
四、乒乓buffer
乒乓buffer要使用两个RAM来轮询
乒乓buffer最好不要用,因为资源多,latency大,能不用乒乓buffer就不要去用。
五、dataflow应用
六、dataflow应用案例二