dataflow可谓是FPGA性能体现的绝佳表现方式,数据在硬件中能流动起来,靠的就是dataflow!
下面我们将探究SDAccel OpenCL开发方式下两种dataflow的实现方式:pipe
传输方式与function
传输方式。
以及SDAccel HLS 开发方式下两种dataflow的编程风格:loop
与stream
SDAccel Dataflow 那点事(一)
SDAccel Dataflow 那点事(二)
SDAccel Dataflow 那点事(三)
SDAccel Dataflow 那点事(四)
dataflow function 方式简介
下图是Dataflow
优化的示意图。在不做Dataflow
之前,func_C
的输入需要依赖func_A
和func_B
的计算处理,8个时钟周期才能完成一次fun_C
的计算结果输出。在做完Dataflow
之后,func_A
和func_C
的启动间隔加快,使得5个周期就可以完成一次func_C
的计算结果输出。从理论上上来说,Dataflow
也属于更高层次上的一种Pipeline
。
代码实现
下面我们通过一个简单的向量乘法的例子来说明dataflow的function层面的实现。
- 实现示意图
1 | Data Flow based Adder will be implemented as below: |
- host端代码
1 |
|
- device端代码
1 |
|
实验结果
- 硬件仿真波形图
参考
xilinx github SDAccel_Examples/getting_started/dataflow/
ug1253 SDx Pragma Reference Guide 2017.2
ug1207 SDAccel Environment Optmizaton Guide