vivado HLS入门(4)

vivado HLS入门

  • 简介
  • 15th-24th
    • 15 for循环的优化
    • 16 循环合并
    • 17 数据流
    • 18 嵌套循环
    • 19 rewind与变量边界
    • 20 数组的分割
    • 21 map and reshape
    • 22 ROM
    • 23 函数层面优化
  • 总结

简介

针对最常见循环和数组的优化;

15th-24th

15 for循环的优化

基本指标术语
vivado HLS入门(4)_第1张图片
c循环边界的处理与rtl边界的处理是不同的!参考计数器原理
vivado HLS入门(4)_第2张图片
1 流水操作
2 循环展开(完全展开或部分展开)

vivado HLS入门(4)_第3张图片
vivado HLS入门(4)_第4张图片

16 循环合并

3 循环合并 利用rtl的并行性将多个循环进行合并
分以下情形
循环边界相同
循环边界不同
一个循环边界为变量 无法合并
都为变量 通过修改代码合并
vivado HLS入门(4)_第5张图片
vivado HLS入门(4)_第6张图片
vivado HLS入门(4)_第7张图片
vivado HLS入门(4)_第8张图片

17 数据流

Task之间存在依赖关系 不适合循环合并 但适合dataflow(乒乓操作)
使相邻for循环并行(流水)
vivado HLS入门(4)_第9张图片
vivado HLS入门(4)_第10张图片
vivado HLS入门(4)_第11张图片
vivado HLS入门(4)_第12张图片
vivado HLS入门(4)_第13张图片

18 嵌套循环

vivado HLS入门(4)_第14张图片
vivado HLS入门(4)_第15张图片
vivado HLS入门(4)_第16张图片
unroll 与flat意义不通
vivado HLS入门(4)_第17张图片
vivado HLS入门(4)_第18张图片
vivado HLS入门(4)_第19张图片
矩阵的优化
vivado HLS入门(4)_第20张图片
vivado HLS入门(4)_第21张图片
vivado HLS入门(4)_第22张图片

19 rewind与变量边界

默认情况,HLS对多个循环任务做顺序执行
vivado HLS入门(4)_第23张图片
vivado HLS入门(4)_第24张图片
vivado HLS入门(4)_第25张图片
vivado HLS入门(4)_第26张图片
vivado HLS入门(4)_第27张图片
vivado HLS入门(4)_第28张图片
vivado HLS入门(4)_第29张图片
vivado HLS入门(4)_第30张图片
vivado HLS入门(4)_第31张图片
vivado HLS入门(4)_第32张图片

20 数组的分割

vivado HLS入门(4)_第33张图片
vivado HLS入门(4)_第34张图片
vivado HLS入门(4)_第35张图片
vivado HLS入门(4)_第36张图片

21 map and reshape

vivado HLS入门(4)_第37张图片
vivado HLS入门(4)_第38张图片
中间可以添加offset, 调整结构
vivado HLS入门(4)_第39张图片
vivado HLS入门(4)_第40张图片
vivado HLS入门(4)_第41张图片
vivado HLS入门(4)_第42张图片

22 ROM

vivado HLS入门(4)_第43张图片
vivado HLS入门(4)_第44张图片
vivado HLS入门(4)_第45张图片
vivado HLS入门(4)_第46张图片
数组的初始化

vivado HLS入门(4)_第47张图片
vivado HLS入门(4)_第48张图片

23 函数层面优化

数据类型
vivado HLS入门(4)_第49张图片
inline
vivado HLS入门(4)_第50张图片
allocation
vivado HLS入门(4)_第51张图片
dataflow
vivado HLS入门(4)_第52张图片
vivado HLS入门(4)_第53张图片
vivado HLS入门(4)_第54张图片
vivado HLS入门(4)_第55张图片

总结

vivado HLS入门(4)_第56张图片
vivado HLS入门(4)_第57张图片
vivado HLS入门(4)_第58张图片
vivado HLS入门(4)_第59张图片

你可能感兴趣的:(HLS)