一种可重构编译器中循环流水迭代间启动间距优化方法技术

技术编号:12741632 阅读:63 留言:0更新日期:2016-01-21 03:28
本发明专利技术公开了一种可重构编译器中循环流水迭代间启动间距优化方。对计数类循环进行RAW数据依赖关系分析,得到RAW_DDA模型;遍历RAW_DDA模型中的[NEXT]集合,对依赖关系next中的Load指令按照ALAP调度算法进行流水段延后;遍历RAW_DDA模型中的[NEXT]集合,对依赖关系next中的Store指令按照ASAP调度算法进行流水段提前;实现启动间距优化。本发明专利技术是针对细粒度可重构编译器ASCRA而开发的一种循环流水启动间距的自动优化算法,可以有效改善可重构编译器对可重构计算应用的部署效率,还能有效提高循环流水硬件结构的性能。

【技术实现步骤摘要】

本专利技术属于可重构编译器优化领域,尤其涉及高层次综合过程中的,一种可重构 编译器中循环流水迭代间启动间距优化方法。
技术介绍
面向CPU-FPGA异构加速平台的可重构自动化编译工具已经成为了可重构计算领 域研究的热点。相对于多核处理器的高功耗及并行粒度过低、ASIC芯片成本过于昂贵,基 于CPU-FPGA的异构加速系统更加适应嵌入式系统中对性能、功耗、成本均比较苛刻的计算 密集型应用,例如图像压缩、模式识别、数字信号处理等应用,兼顾了通用计算的灵活性和 定制计算的高效性,计算密集型应用中85%左右的程序执行时间都集中在其中多层循环部 分。如何实现循环流水迭代间启动间距的自动优化技术是可重构编译器研究的难点是可重 构编译器研究的难点。 正是基于以上问题,本专利技术提出了一种可重构编译器中循环流水迭代间启动间距 优化方法,并在基于ARM-FPGA异构加速平台的细粒度可重构编译器ASCRA上展开相关设计 与验证。
技术实现思路
本专利技术的目的是提供一种能够有效改善可重构编译器对可重构计算应用的部署 效率的,可重构编译器中循环流水迭代间启动间距优化方法 -种可重构编译器中循环流水迭代间启动间距优化方法,包括以下步骤, 步骤一:对计数类循环进行RAW数据依赖关系分析,得到RAW_DDA模型:RAW_DDA =(statement, I, , ),其中RAW_DDA表示循环流水迭代间数据依赖关系分析 结果,statement表示多层循环程序中的一个循环体_〃(石)的声明;I表示循环体索 弓丨变量U 1彡r彡m ; 是与索引变量U目关的RAW数据依赖关系涉及到的数组集 合;表示statement声明中所有迭代间RAW数据依赖关系集合; 步骤二:遍历RAW_DDA模型中的集合,对依赖关系next中的Load指令按 照ALAP调度算法进行流水段延后; 步骤三:遍历RAW_DDA模型中的集合,对依赖关系next中的Store指令按 照ASAP调度算法进行流水段提前; 步骤四:实现启动间距优化。 本专利技术,还可以包括: 计数类循环描述为:索引变量向量其中m为多层循环的最 大深度;L〇〇p(r)表示索引变量为L的循环,其中1彡r彡m,循环体用表示, ?,·={ΙνΙτΙ3,一?:>,表示循环体由索引向量石控制,索引变量I r= (Pr, qr, Θ r),其中,pjp qr 分别表示索引变量L的初值和终值,且是(I u 12, . . .,L i)的整值函数,Θ ^表示循环变量 乙的增量且Θ1^为常数。 有益效果: 在现有细粒度可重构编译器中,例如:Vivado HLS、ROCCC、ImpulseC等,尚不具备 针对启动间距的自动优化技术,往往需要使用人工输入指导语句方法控制循环并行流水硬 件结构自动映射所需启动间距信息的生成,因此不能充分发挥并行流水硬件结构的性能, 同时编译效率以及质量都不甚理想。本专利技术是针对细粒度可重构编译器ASCRA而开发的一 种循环流水启动间距的自动优化算法,可以有效改善可重构编译器对可重构计算应用的部 署效率,还能有效提高循环流水硬件结构的性能。 本专利技术所提出的,在面 向ARM-FPGA异构加速平台的可重构编译器ASCRA上进行了部署实施,并且针对测试集 PolyBench-3. 2中的经典循环程序进行了实验和分析,对比本专利技术所提出的循环流水迭代 间启动间距优化方法与现有HLS工具采用的制导语句控制方式,测试循环程序在FPGA硬件 中流水执行时消耗的时钟节拍数,并分析随着循环程序迭代空间的变大,本专利技术方法对循 环程序性能加速效果的变化。 本专利技术采用jacobi-lD、jacobi_2D、Seidel_2D三个经典循环程序进行测试。其 中,jacobi-lD是一个单层循环,索引变量I 1= (0,N,1),jacobi_2D和Seidel_2D是一个 两层循环,循环索引变量向量均为心电,这三个测试程序的共同特征是不同 深度循环的索引变量迭代次数均是常量。与采用制导语句控制方式的现有HLS工具相比, 本专利技术方法能够有效减少循环流水执行时的时钟节拍数。实验结果如表1所示,N表示循 环索引变量迭代次数,表1中的测试程序不同深度循环的索引变量迭代次数均为N,clock cycles表示循环流水执行时消耗的时钟节拍数。根据如图7中实验结果,可以得知,随着 迭代空间的增大,采用本专利技术提出的循环流水迭代间启动间距优化方法,能够有效提高具 有常量迭代次数索引变量的循环程序的性能,并且能够保持稳定的性能加速比。与采用制 导语句方式的现有HLS工具相比,采用循环流水跌代间启动间距优化方法的可重构编译器 ASCRA分别获得了 20 %、33. 3 %、42. 86 %的稳定加速比。【附图说明】 图1为启动间距优化实例;图I (a)为间距向量为(0, 1,4, 1,4, · · ·);图I (b) 为间距向量为(0, 1,3, 1,3,· · ·); 图2为计数类多层循环伪代码描述; 图3为计数类循环伪代码递归描述; 图4为计数类多层循环示例代码; 图5为示例代码的SCoPs结构; 图6为ASCRA系统架构图; 图7为索引变量边界值为常量时实验结果表; 图8为多层循环启动间距优化算法。【具体实施方式】 下面将结合附图对本专利技术做进一步详细说明。 在进行多层循环流水执行迭代间启动间距自动优化方法研究的时候,发现最内层 循环的执行时间对整个循环性能影响最大,因此本专利技术从降低最内层循环循环体迭代间启 动间距向量值方法入手,提出了一种采用流水线调度技术进行启动间距优化的方法,为了 能更加直观地展示本专利技术针对上述问题的改进之处,本部分采用一个多层嵌套循环的实例 描述问题所在。 如附图1所示,附图I (a)和附图I (b)中的RAW数据依赖关系均为NEXTa= {A - A,δ = 2},而迭代间流水段延时Aa= 4, Δ b= 3,所得到的迭代间流水 启动间距向量,?ζ*,(1.1Λ1Λ1Λ .)。通过降低数组A产生的RAW数据依赖关系在 循环体中所跨过的流水延时,能够降低循环流水迭代间启动间距,有效的提高循环程序的 数据吞吐率。 针对这一实例所描述的问题所在,本专利技术建立了一套支持对循环流水迭代间启动 间距自动优化的描述模型。该循环流水迭代间启动间距自动优化描述模型由四部分组成: 1)计数类多层循环 定义:索引变量向量…,其中m为多层循环的最大深度;Loop (r)表示索 引变量为L的循环,其中K r < m,循环体用·病:)表示,…O表示循环体由索引向 量?控制,索引变量I1= (Ρ? l·,Θ J,其中,P,qj别表示索引变量I』勺初值和终值,且 是(I1, 12, . . .,L D的整值函数,Θ ^表示循环变量L的增量且Θ ^为常数。 为了建立循环流水启动间距信息模型,需要将附图2所描述的多层循环Loop抽象 成如附图3所示多个单层循环递归表示的形式。其中Loop (m)表示最内层循环。 在细粒度可重构编译器ASCRA中是对中间代码IR进行数据依赖关系分析,将附图 2所示的高级语言描述形式转换成LLVM能够进行分析的数据结构,通过LLVM PASS将多层 循环描述成一种抽象语法树(Abstra本文档来自技高网...

【技术保护点】
一种可重构编译器中循环流水迭代间启动间距优化方法,其特征在于:包括以下步骤,步骤一:对计数类循环进行RAW数据依赖关系分析,得到RAW_DDA模型:RAW_DDA=(statement,I,[Array],[NEXT]),其中RAW_DDA表示循环流水迭代间数据依赖关系分析结果,statement表示多层循环程序中的一个循环体的声明;I表示循环体索引变量Ir,1≤r≤m;[Array]是与索引变量Ir相关的RAW数据依赖关系涉及到的数组集合;[NEXT]表示statement声明中所有迭代间RAW数据依赖关系集合;步骤二:遍历RAW_DDA模型中的[NEXT]集合,对依赖关系next中的Load指令按照ALAP调度算法进行流水段延后;步骤三:遍历RAW_DDA模型中的[NEXT]集合,对依赖关系next中的Store指令按照ASAP调度算法进行流水段提前;步骤四:实现启动间距优化。

【技术特征摘要】

【专利技术属性】
技术研发人员:吴艳霞郭振华张国印谢东良
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1