面向片式多核处理器的流编译优化方法技术

技术编号:8161446 阅读:183 留言:0更新日期:2013-01-07 19:29
本发明专利技术公开了一种面向片式多核处理器的流编译优化方法,包括:生成软件流水调度表的软件流水调度步骤;根据软件流水调度表将计算任务所需的数据在片式多核处理器片上的SPM和主存上进行缓存分配的存储访问优化步骤;根据片式多核处理器的片上网络拓扑结构确定通信量最小的映射方式,以将软件流水调度表中各个虚拟处理核根据映射方式调度映射到实际物理核上的通信优化步骤。本发明专利技术的方法结合了流程序与系统结构相关的优化技术,充分发挥高负载均衡性以及软件流水代码在多核处理器上的高并行性,而且针对片式多核处理器上的层次性存储与通信方式,对程序的存储访问和通信传输进行了优化,进一步地提高了程序的执行性能,具有更小的执行时间。

【技术实现步骤摘要】

本专利技术属于计算机编译
,具体涉及一种。
技术介绍
随着半导体技术的发展,多核处理器已经被验证为开发并行性的一个可行平台。片式结构(tile)多核处理器因为其良好的可扩展性(单块芯片上集成了数十个到几百个核)和低能耗性已经成为一种重要的多核设计。片式结构多核处理器提供了强大的计算处 理能力,同时也将更多的负担交给了编译器和程序员以有效地开发核间的粗粒度并行。流编程提供了一种可行的方法来开发多核架构的并行性。在这种模型中,每个结点代表了一个计算任务,每条边代表了计算任务之间的数据流动。每个计算任务都是一个独立的计算单元。它有独立的指令流和地址空间,计算任务之间的数据流动通过先进先出的通信队列来实现。流编程模型以数据流模型为基础,以流编程语言为实现方式。流编译即将流编程语言转换为底层目标可执行程序所涉及到的编译技术。其中,编译优化对流程序在目标处理核上的运行性能起到了决定性作用。麻省理工学院编译实验室公开了一种流编程语言Streamlt。该语言基于Java,弓丨入了 Filter概念。Filter是最基本的计算单元,它是一个单输入单输出的程序块。Filter中各个处理过程用Work来描述,每个Work之间米用Push、Pop和Peek操作以FIFO方式进行通信。同时,针对下一代高性能计算机提出了一种流编译优化技术首先,编译器采用数据分裂和融合相结合的方法,对计算结点进行分裂与融合,以增加计算与通信开销比;然后把处理过后的计算结点映射到各个处理核上,达到负载均衡,各处理核采用流水线的执行方式,处理核间采用显示的通信来实现数据传输。StreamIt的流编译优化技术为流编程模型在多核处理器上的调度问题提出了一种解决方案。通过将计算任务分配到各个处理核上,实现了负载均衡,确保了计算任务在处理核上的并行执行。但是,存在以下缺陷(1)调度到处理核核上的各个计算和通信是分离的,在流水线中单独为其分配了独立的通信时间,因此增加了通信的开销;(2)没有考虑到处理核的底层存储分配优化问题;(3)编译优化方法没有针对片式多核处理器底层的体系架构特性进行优化。总之,对片式多核处理器而言,它在提供强大计算能力的同时,也向程序员开放了其层次性的存储结构与软件通信机制。现有的流编译优化方法,并没有考虑到底层的体系架构,没有充分利用系统硬件资源如存储资源来提高程序的执行效率。
技术实现思路
本专利技术的目的在于提供一种面向片式结构多核处理器的流编译优化方法,针对片式多核处理器的架构,对流程序进行优化处理,较大程度地提高了流程序的执行性能。本专利技术采用的优化方法以流编译器前端产生的中间表示一同步数据流图作为输入,对其依次进行软件流水调度、存储访问优化和通信优化三级处理,最后生成可执行代码。具体步骤如下(1)软件流水调度数据流图中的结点代表计算任务,边代表计算任务间的通信。首先,对同步数据流图进行任务划分,该子步骤形式化为一个整数线性规划问题,目标为最大化流水线吞吐率,通过求得整数线性规划问题的解,确定每个计算任务分配到的对应处理核,即虚拟处理核。其次,根据计算任务间的依赖关系,为每个计算任务(结点)以及其之间的数据传输操作(DTA)分别分配其在流水线中的阶段号;最后,利用以上两种信息,构造软件流水调度表。(2)存储访问优化存储访问优化以步骤(I)的结果软件流水调度表为输入,计算流水线运行所需要的存储容量;然后,根据片式结构多核处理器上的层次性存储结构,将计算任务所需的数据进行优化分配,将尽可能多次访问的数据分配到片上便笺式存储器(SPM),溢出数据放在主存;最后,对软件流水调度中分配在主存的数据拷贝操作进行消除。(3)通信优化当计算任务(结点)分配到处理核上后,各个处理核之间的数据通过片上网络进行传输。对片式多核处理器的片上网络拓扑结构进行分析,采用模拟退火的方法,确定一种通信量最小的映射方式,将步骤(I)中的软件流水调度表中各个虚拟处理核调度映射到实际物理核上。本专利技术将数据流调度与片式多核处理器体系结构相关优化结合起来,实现了对流程序的三级优化过程,具体包括软件流水调度,存储访问优化和核间映射的通信优化,提高了流程序在目标平台上的执行性能。具体而言,本专利技术具有以下优点(1)提高了程序的并行性。通过对问题的形式化描述,本专利技术将数据流图调度到处理核上形式化为一个整数线型规划问题,从而为数据流程序构造了最优化软件流水调度模型,将任务均分到每个处理核上,实现负载均衡,提高了程序的并行性。(2)减小开销。本专利技术提出了一个混合存储分配算法来充分利用系统上的存储资源并对软件流水中冗余的缓冲区拷贝进行消除,同时,对多核平台上复杂的网络通信进行了优化,进一步减小网络负载,降低通信开销。附图说明图1为本专利技术方法在流编译系统中的结构框架图。图2为软件流水调度中,任务划分、阶段赋值和流水执行的示例图。图3为软件流水在片上便笺式存储器和主存上的存储分配原理图。具体实施例方式下面结合附图和具体实施例对本专利技术作进一步详细的说明。如图1所示为本实施例在流编译系统中的结构框架图,流程序经过流编译器前端解析之后会生成一个中间表示一同步数据流图,随后依次经过软件流水调度,存储访问优化和通信优化三级优化过程,最后生成目标代码,完成编译。(1)软件流水调度该步骤包括三个子步骤任务划分、阶段分配和构造流水线调度表。使用整数线性规划问题对流程序的任务划分问题进行建模,该模型以同步数据流图中结点的计算量,结点间的通信量以及处理核的个数为输入,以结点在处理核上的分布为输出。模型考虑了处理核上计算量和通信量的重叠问题,以通信量和计算量的最大值为当前软件流水线的迭代周期。任务划分完成后,进行阶段赋值,构建软件流水线。阶段赋值时将第一结点的阶段号初始化为0,对所有的后继结点,判断他与前驱结点是否在同一个处理核上,如果在,那么他们阶段相同,如果不在,那么后继结点比前驱结点阶段号大2,边的阶段号比前驱结点大I。通过遍历整个同步数据流,对所有结点和边进行阶段赋值。具体步骤如下(I. I)任务划分。将问题形式化描述为整数线型规划问题模型,其中,整数线型规划问题模型的目标为Min II 模型的限制条件为 户細-上2>v’P=lp=o VvgFd;a'、P-%,pdiivp<avp .V(i/,v)e£,0</Xi3maxZ a'、P x work(V) ^11 p〈P眶 veVZ x comm(u, v)<IIQ^ p〈p (u,v)^E式中,G=(V,E)为数据流图,V和E分别代表图中的结点集和边集,V是图中的任意结点,V(〃,v)G E为图中任意边,work(v)、comm(u, v)分别为计算结点工作量和边通信量,Pmax为最大处理核数。II为整数变量,0-1变量av,p表示结点V是否分配在处理核p上,如果av,p为I表示结点V在处理核p上,否则不在。变量au,p为0-1变量,其中au,p=l表示节点u在处理核P上,au,P=O表示不在。0-1变量du,v,p定义如下如果du,v,p=l,表示V分配到处理核p上,而u没有分配到处理核p上,及任意边(u,v)之间需要数据传输,且该传输由处理核P发起;如果du,v,p=0,表示边(u,v)之间不需要数据传输操作。本文档来自技高网
...

【技术保护点】
一种面向片式多核处理器的流编译优化方法,包括:生成软件流水调度表的软件流水调度步骤;根据所述软件流水调度表将计算任务所需的数据在所述片式多核处理器片上的便笺式存储器(SPM)和主存上进行缓存分配的存储访问优化步骤;根据所述片式多核处理器的片上网络拓扑结构确定通信量最小的映射方式,以将所述软件流水调度表中各个虚拟处理核根据所述映射方式调度映射到实际物理核上的通信优化步骤。

【技术特征摘要】

【专利技术属性】
技术研发人员:于俊清魏海涛秦明康余华飞
申请(专利权)人:华中科技大学
类型:发明
国别省市:

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

1