下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HLS优化设计中pipeline以及unroll指令:细粒度并行优化的完美循环
HLS优化设计的最关键指令有两个:一个是流水线(pipeline)指令,一个是
数据流(dataflow)指令。正确地使用好这两个指令能够增强篁法地并行性,提
升吞吐量,降低延迟但是需要遵循一定的代码风格。展开(unroll)指令是只
针对for循环的展开指令,和流水线指令关系密切,所以我们放在一起首先我
们来看一下这三个指令在Xilinx官方指南中的定义:
Unroll:Unrollfor-loopstocreatemultipleinstancesoftheloop
bodyanditsinstructionsthatcanthenbescheduledindependently.
Pipeline:Reducestheinitiationintervalbyallowingtheoverlapped
executionofoperationswithinalooporfunction.
Dataflow:Enablestasklevelpipelining,allowingfunctionsandloops
toexecuteconcurrently.Usedtooptimizethroughoutputand/or
latency.
Unroll指令在for循环的代码区域进行优化,这个指令不包含流水线执行的
概念,单纯地将循环体展开使用更多地蝮性资源实现,保证并行循环体在调度
地过程中是彼此独立的。
Pipeline指令在循环和函数两个层级都可以使用,通过增加重复的操作指令
(如增加资源使用量等等)来减小初始化间隔。
Dataflow指令是一个任务级别的流水线指令,从更高的任务层次使得循环或函
数可以并行执行,目的在于减小延迟增加吞吐量。
Unroll和Pipeline由令相互重合的关系在于,当对函数进行流水线处理时,
以下层次结构中的所有循环都会自动展开,而使用展开指令的循环并没有给定
对H的约束。在最新版本的VitisHLS工具中,工具会自动分析数据之间的
流水线操作关系,以11=1为目标优化,但是还是会受限于设计本身的算法和
代码风格。下图非常清晰地阐明了Unroll和Pipeline指令的关系,
Pipeline指令放置的循环层次越高,循环展开的层次也越高,最终会导致使用
更大面积的资源去实现,同时并行性也更高。
voidfoo(inl(HJ,m2(l[],..){voidfoo(inHH].^2[][],...){
L1:for(l=1;i<N>*){L1:for(i=l;l<N;lw){
L2:for(j=O,j<Mj^){♦pragmaAPPIPELINE
#pragmaAPPIPELINEL2:for(j=O;j<M;)^){
out(i]0]-♦ln2[i]U];out(i)0]=in1[i]g]*in2[i]g],
))
})
))
ladder,3accessesUnrollsL2
Madders,3Maccesses
这里如果循环的边界是变量的话,则无法展开。这将组织函数被流水线化,可
以通过添加tripcount等指令,指定循环在综合时大概的最大最小边界。
在循环流水线优化的过程中,有一个完美循环,半完美循环和非完美循环的代
码风格概念,只有当流水线循环完美或半完美时,才可以将嵌套循环彻底并行
展开。
完美循环:只有最里面的循环才具有主体内容,在循环语句之间没有指定逻
辑,循环界限是恒定的。
半完美循环:只有最里面的循环才具有主体(内容),在循环语句之间没有指定
逻辑,只有最外面的循环边界可以是可变的。
非完美循环:循环的主体内容分布在循环的各个层次或内层循环的边界是变
量。
PerfectloopnestSemi-PerfectloopnestImperfectloopnest(1:
opouter
loop.outer:oop.out":
for(1«•;1or(1■
ConstantIVdOdblrCoristaiil
far
卜
iCanstanlIIOOPBODY
当我们要争去最大流水线循环的成功执行,就需要将非完美循环手动修改成完
美或半完美循环。以下代码例子给出了完美循环(左边)和非完美循环(右
边)在VitisHLS中的执行结果。
Perfectjoop
*include-loopperfect.h*
voidloopperfect(dintA[N],dout_tB[N]){
intij;voidloopimperfect(dintA[N],douttB[N]){
dinttacc;
intij;
LOOP_l:for(i=0;i<20;i++){dinttacc;
LOOPJ:for(j=O;j<20;j++){LOOP_l:for(i=0;i<20;i++){
if(j==O)acc=0;
acc=0;
acc+=A[j]*j;
if(j==19)(LOOPJ:for(j=O;j<20J++){
if(i%2==0)acc+=A[j]*j;
B[i]=acc/20:
}
else
if(i%2==0)
B[i]=0:
)B[i]=acc/20;
)else
)
B[i]=0;
♦Timing:♦Timing:
,Summary:♦Summary:
IClock|Target|E$ilmated|Uncertainty||ClockITarget|EstimatedIUncertainty!
|ap_clk|25.00n5|2.505n5|6.75n5|lap.clk|25.00ns|2.505ns|6.75ns|
*・♦・・・••・♦•・・・・・・••・・•.■•・・-a
♦LMemvUM^ey
•Surnrrnry
IL*iercy(cvcWt)|latercy|c:,、*|Pgne|ILMrr*ry|ryrit5>|IIrrcoHPECe|
Imr|ZK|mln|ma||trlr|m・|Type|Inwn|nvtM||z.|E、|-a|,YX|
|40f|102CCU5lOZCOg4O9|409none|IMl|Ui|im,|US25«a|R|5t2|e・|
•DM♦W
•LOOP:
LOOP:
IJS・G4必。IItetrkr.MdleuiM|TreII
IIMercyicyde^i|hermcr*ftt为mmtr-v*||Iloop|F。ma<|-y|SM-d|MrfH|d|力msE
loopNirwIEM|rwM|l»wcvI,滴|>.«:ICount|^ptlkwdl
I-LOOPJ|M3I、eo-I20|2
LOOr.l.LOOPJ|406|石«|1|1|400|VM||•IOC*_>|2>|U|S|1|20Ml
IName|RAM_W|0""|IS|UMM|IMmeIDW”IM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制造业供应链协同管理规范制度
- 2026年江苏无锡市新吴区下学期期中学业质量检测 八年级物理试卷(含答案)
- 5.《婴幼儿行为观察与指导》(第二版)试卷及答案
- 护理伦理学的教育挑战与对策
- 骨盆骨折护理专项试题(二)
- 护理评估:护理诊断的制定与实施
- 护理管理中的健康教育
- 第五章 排球教学设计初中体育与健康人教版八年级全一册-人教版
- 歧义句试题及答案
- Unit 8 Humankind and Nature教学设计高中英语冀教版选修八-冀教版2004
- 《SLT 377-2025水利水电工程锚喷支护技术规范》知识培训
- 河南省农村学校应用性教育科研课题鉴定结项材料格式与要求(含附件1-1,1-2,1-3,1-4)
- T-GXAS 480-2023 土壤和沉积物 硼的测定 电感耦合等离子体质谱法
- 拖欠工程款上访信范文
- 初中语文修改病句市公开课一等奖省赛课获奖课件
- HG∕T 4792-2014 工业用DL-酒石酸
- 2024新能源集控中心项目技术方案规划设计方案
- AQ1051-2008煤矿职业安全卫生个体防护用品配备标准
- 立夏养生中医养生
- 小儿推拿培训课件
- 2024年上海文化广场剧院管理有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论