HLS基础 (十五 for循环优化数据流)

DataFlow for “for-Loop”

image-20220509154555200

image-20220509155055103

Dataflow的限制

image-20220509155133686

Single-producer-consumer Model

image-20220509155310174

此时由于temp1同时在loop2loop3中使用,故不能使用DataFlow

解决方法:将temp1复制到temp2temp3,然后再loop2loop3中分别使用,就可以使用DataFlow优化。

image-20220509160026625

Bypassing Tasks Model

image-20220509160241300

上例子中不能使用Loop Merge,因为loop2中的temp3loop3中被使用了;同时DataFlow也不能使用,因为Loop2Loop3中用到的资源都来自Loop1.

image-20220509160634411

Configuring DataFlow Memory Channels

image-20220509162642890

image-20220509162731368

Summary

image-20220509162806317

个人总结:

Dataflow用于循环体之间的并行优化,使得两个有先后顺序的循环体,后一个循环体不需要前一个完全执行完毕后再执行,当前一个循环体有输出之后,后一个循环体就可以开始执行,从而减少 latency

Pipeline用于循环体内中的几轮循环,下一次循环不需要等待上一轮执行结束就可以开始执行。

Unroll 用于一轮循环内的语句并行优化,不需要等待上一条语句执行完毕就可以执行下一条语句。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信