[发明专利]针对粗颗粒度流应用的流水并行化方法无效
申请号: | 201210107527.5 | 申请日: | 2012-04-12 |
公开(公告)号: | CN103377035A | 公开(公告)日: | 2013-10-30 |
发明(设计)人: | 刘鹏;黄春明;史册;于绩洋;刘扬帆;郭俊;姚庆栋 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/48 |
代理公司: | 杭州宇信知识产权代理事务所(普通合伙) 33231 | 代理人: | 张宇娟 |
地址: | 310027 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 针对 颗粒 应用 流水 并行 方法 | ||
技术领域
本发明涉及一种计算机应用领域,特别涉及一种对粗颗粒度的流应用实现流水并行化的方法。
背景技术
为了充分利用多核系统的资源,必须解决并行化编程的问题。由于C语言的流行和长期以来程序员既定的串行编程思维使得大量C程序代码遗留下来,而这些应用程序又常常作为多核系统的上层应用或者其软件工具。目前大约有85%的嵌入式系统开发员仍然在使用C/C++编写程序。如果让程序员用新的并行编程语言来重写这类应用,则开发难度大、开发周期长。因此目前需要迫切提高串行C程序在多核系统上的并行执行效率。然而实际情况是目前还缺乏对C/C++并行化的有效方法。
在嵌入式领域被广泛应用的流应用,如音频、视频、加密和信号处理等程序中,这类程序具有丰富的并行性,他们具有一些共同的特点:1)数据驱动;2)包含丰富的循环结构,且多为多层循环体;3)函数间存在复杂控制依赖关系。因此,要提取流应用中隐藏的并行性,需要合理高效的流水化处理方法。
目前提取应用程序中的流水并行化方法可归为三类:IMT(IndependentMulti-Threading)、CMT(CyclicMulti-Threading)和PMT(Pipelined Multi-Threading)。其中IMT技术不允许线程间依赖存在,这种技术最初被用在基于数组的科学计算中,最著名的IMT技术是DOALL,它只适用于循环内各个迭代间不存在依赖关系的情况。CMT技术是对IMT技术的补充和扩展,主要是为了能适用于迭代间存在依赖关系的情况,DOACROSS属于CMT技术,它通过插入了同步机制保证迭代间的数据交互。DSWP(Decoupled Software Pipeline)技术属于PMT技术,DSWP技术旨在开发循环体的流水并行性。DSWP技术相比DOACROSS技术的处理方式不同,DSWP技术是将循环代码进行切割,划分成不同的线程分配到不同的处理器核上,各个线程按照流水并行的方式排布。但以上方法存在以下缺陷:1)他们主要是用于提取细颗粒度线程级并行性,他们对控制依赖的处理采取聚合的方法,这一点对于粗颗粒度应用程序来说极易形成过大粒度的任务集合,成为性能瓶颈;2)以上方法只适用于对最内层循环的开发,对于多层嵌套循环的结构效果不理想;3)DOACROSS技术和DOALL技术只适用于具有规律的存储访问和简单的控制依赖的应用,类似于科学计算,而大部分的应用程序具有不规律的控制流和复杂的存储访问,如指针访问。
也有一些研究工作从对源程序的结构剖析来提取并行性,但这类工作往往侧重在对程序的结构进行建模和信息搜集,而缺少对于各个模块间的依赖关系的变换,在提取并行性方面依靠程序员人工完成而没有系统的方法做指导。
发明内容
本发明所要解决的技术问题是提供一种可针对粗颗粒度流应用的流水并行化方法,适用于多层嵌套循环的结构,可提取多层循环的并行性。
为解决上述技术问题,本发明所采用的技术方案是提供一种针对粗颗粒度流应用的流水并行化方法,包括以下步骤:
A)对串行C代码进行典型数据剖析得到计算热点区域;
B)将计算热点区域进行依赖分析得到任务依赖图TDG;
C)对任务依赖图进行依赖变换得到有向无环图TDGAT;
D)建立目标硬件平台的硬件模型得到体系特征图ACG;
E)针对体系特征图对有向无环图进行任务调度得到任务调度结果SR;
F)判断任务调度结果是否满足性能要求,若满足要求,则执行步骤G)及后续步骤,若不满足要求,则对有向无环图中的任务进行聚合和拆分,得到新的有向无环图,选择新的有向无环图中计算开销最大的任务,得到新的计算热点区域,再返回步骤B)继续执行;
G)根据任务调度结果对串行C代码进行分割、修改得到并行C代码;
H)使用适用于目标硬件平台的编译器编译生成并行可执行文件;
I)将所述并行可执行文件加载到目标硬件平台上执行。
步骤A)中所述“对串行C代码进行典型数据剖析得到计算热点区域”包括以下步骤:
a)在串行C代码中插入调试信息,编译生成串行可执行文件;
b)让所述串行可执行文件在计算机平台上执行,搜集运行时环境的基本信息,具体为获取内存访问、函数调用关系以及分支选择的相关信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210107527.5/2.html,转载请声明来源钻瓜专利网。