论文笔记(7.FCCM.2016)(多面体优化部分需要重新看)

Information

  • Paper:Loop Splitting for Efficient Pipelining in High-Level Synthesis
  • Author: Junyi Liu
  • Key words: memory dependencies,loop pipeline,parametric polyhedral analysis

Backgrounds

When complex memory dependencies appear in a loop, commercial HLS tools are still not able to maximize pipeline performance.

Although there are many SOTA tools for automatic loop pipelining,they can only handle limited memory dependence patterns.With regard to loop pipelining, the performance gap between fully-automatic HLS and expert-tuned design is still considerable.

Work

这篇论文主要对 “complex memory dependencies” 进行分析,针对loop pipeline进行优化。对以下两种复杂Memory dependency进行处理:

  • Uncertain dependencies:
    在这里插入图片描述
    When m ≥ 1, HLS tools cannot determine at compile time how many iterations can be overlapped in the pipeline without violating a read-after-write (RAW) memory dependency.
    在上面的例子中,第m+1次,2m+1次,第km+1次都有可能会发生读写冲突
    解决思路:在合适的位置插入 pipeline bubble(pipeline stalling)在这里插入图片描述

  • Non-uniform dependencies:
    在这里插入图片描述
    定义了Dependence distance,即从写到读经历的迭代次数,在上述例子中,d=i。
    定义好d之后,根据一次循环所经历的时钟和依赖关系,对数组进行split。
    在本例中,假设一次迭代耗费时钟周期L=15,除了第一次迭代A[0],比较容易得出,当1 ≤ d ≤ L − 1时,2rd和15th迭代符合d的范围,所以以这两个为边界,将循环分割成三个部分:
    在这里插入图片描述
    第一和三块显然可以使用 II=1 进行pipeline,实现最大程度并行化。
    bottleneck在第二块的处理上,第二块中会引发读写冲突,解决方法时将第二部分分块,每个块的大小等于其第一次迭代的Dependence distance。比如第一块的第一个迭代是整体的3rd,d=2,之后第二块从5th开始,而且要在第二块前插入bubble来防止冲突,第二块是5th-8th,第三块可以包含8个迭代,但是只剩余7个,即9th-15th。
    在这里插入图片描述

Summary:

以上是这篇论文分析问题的思路,所采用的方法是 parametric polyhedral analysis and transformation:

We prototyped our proposed optimization in a source-to-source code transformation framework which is compatible with commercial HLS tools such as Vivado HLS.

框架用到的其他辅助工具:
In our tool flow,PoTHoLeS is used to implement our custom polyhedral analysis and transformation with the support of ISL. In PoTHoLeS, the SCoP model( the model of static control parts)of the input loop is generated by the Polyhedral Extraction Tool (PET). Xilinx Vivado HLS is used as the back-end tool for generating RTL code.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值