image frame

星际旅行日志

彼汾一曲,言采其藚.彼其之子,美如玉.美如玉,殊异乎公族.

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 用于一轮循环内的语句并行优化,不需要等待上一条语句执行完毕就可以执行下一条语句。

HLS 基础 (五 复合数据类型)

Struct

当struct作为顶层函数的参数时:

  • scalar变量成员会被映射为标准的scalar端口
  • 数组会被默认映射为存储器端口

结构体在头文件中声明。

HLS为结构体中的元素提供了一些优化方式:

  • Byte_pad
    • field_level
    • struct_level
阅读更多...
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信