[发明专利]一种面向X86多核处理器的数据流程序调度方法有效
| 申请号: | 201410185971.8 | 申请日: | 2014-05-05 | 
| 公开(公告)号: | CN103970602B | 公开(公告)日: | 2017-05-10 | 
| 发明(设计)人: | 于俊清;李鹤;唐九飞;何云峰;管涛 | 申请(专利权)人: | 华中科技大学 | 
| 主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 | 
| 代理公司: | 华中科技大学专利中心42201 | 代理人: | 梁鹏 | 
| 地址: | 430074 湖北*** | 国省代码: | 湖北;42 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 面向 x86 多核 处理器 数据流 程序 调度 方法 | ||
技术领域
本发明属于计算机编译技术领域,具体涉及一种面向X86多核处理器的数据流程序调度方法。
背景技术
随着半导体技术的发展,多/众核平台作为新的计算平台,它为各类应用提供了强大的并行计算能力,但它也将如何充分挖掘程序的并行性以及如何充分利用资源等问题暴露给了编程人员。数据流编程模型提供了一种可行的方法来开发多核架构的并行性。多媒体处理领域的主流应用像视频/图像处理、绘图、信号和网络等激发了像StreamIt,Brook,CUDA,SPUR和Cg等流编程语言。在数据流编程模型中,目标应用被表示为一个数据流图,图中的顶点表示计算任务,而顶点间的有向边表现计算任务间的通信。采用数据流编程模型,开发人员只要实现领域相关的算法,而数据流程序的调度工作主要由第三方开发的编译优化系统完成。
面向多核平台的数据流程序调度的核心是提高多核处理器计算资源的利用率。它的实现依赖于两个关键技术:并行调度与缓存优化。
多核并行调度的负载均衡性直接关系到多核处理器的利用率。虽然数据流程序存在任务并行性、数据并行性和流水并行性,但是并行调度算法必须考虑各个并行控制流之间的同步开销、通信开销以及并行粒度是否适用于目标系统,并确保各个处理器核间的任务负载均衡。软件流水调度被认为是能够充分利用数据流程序特有并行性实现高吞吐率的有效方法。软件流水调度需要完成数据流程序计算任务的划分,然而常用任务分配策略都没有充分利用数据流程序的特有并行性。Manjunath等人采用计算单元的水平分裂策略,充分利用了数据流程序的数据并行性优化划分结果的负载均衡。另外,为了满足数据流程序计算任务间的数据依赖关系,软件流水调度需要在时间维度上指定计算任务间的相对计算顺序。阶段赋值算法根据任务划分结果和计算任务间的数据依赖性为目标程序构造软件流水线调度。软件流水调度策略虽然充分利用了数据流程序的流水并行性,但是必须为计算单元分配通信缓冲区,提高了存储消耗。Jongsoo等人提出Team调度算法解决该问题,根据计算任务的计算通信开销对目标程序的计算任务进行分组,以组为单位进行划分和调度。
对于多核共同竞争主存访问带宽的多核平台,缓存优化的有效性在很大程度上决定了程序的性能。首先,根据缓存系统的原理,局部性高的程序缓存命中率更高。但是当前的编译器无法提供复杂的基于缓存优化的转换,因而缓存优化工作变成了程序员的负担。Janis等人提出了一种基于数据复用距离(Data Reuse Distance,DRD)分析技术进行缓存优化。DRD分析方法将缓存存储器模拟为一个栈,如果对同一数据两次访问时刻点之间访问的数据大小超过缓存存储容量,则表示缓存未命中。Yunlia等人扩展了在传统单核处理器平台上程序的DRD分析方法,提出了并发复用距离方法。另外,缓存系统是以缓存行为单位进行缓存的,底层系统必须采用诸如MESI协议保证核间缓存行的一致性。当映射到同一个缓存行的不同变量被多个处理器核并发访问时,多个处理器核更新同一缓存行,这就会导致缓存伪共享的发生。缓存伪共享不仅加重了处理器核对总线带宽的竞争,而且将导致缓存行数据的更新,降低缓存系统的利用率,严重降低系统的性能。
虽然面向多核处理器的数据流程序任务调度与缓存优化取得了很大的进步,但是还有许多问题需要克服。一方面,任务划分能够保证处理器核间的负载均衡,但是并没有充分利用数据流程序的局部性特征,不但使得缓存系统的利用率低,而且程序在运行时并行粒度太小,同步开销的比重过大。另一方面,多核并行调度时不同核间会相互干扰,如何利用数据流程序中计算任务间的通信信息实现核间优化也是当前所缺乏的。
发明内容
本发明的目的在于提供一种面向多核处理器的数据流程序调度方法,其目的在于通过优化并行调度的负载均衡和并行粒度,并针对多核处理器的缓存特征进行缓存优化,解决多核处理器并行调度与主存访问延迟问题。
本发明采用的优化方法以数据流编译器前端产生的中间表示—同步数据流图作为输入,对其依次进行任务划分与调度和核间缓存优化两级处理,最后生成可执行代码。具体步骤如下:
(1)确定计算任务与处理器核映射的任务划分与调度步骤
数据流图中的结点代表计算任务,边代表计算任务间的通信。首先,根据目标程序的计算量和通信量对数据流程序进行扩大调度,从而提高程序的局部性和并行粒度。然后,针对通信量大的相邻计算单元进行融合操作,减少通信开销。最后,利用计算任务的数据并行性,采用迭代水平分裂算法改进负载均衡,并构造软件流水调度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410185971.8/2.html,转载请声明来源钻瓜专利网。





