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

文档序号:6374124阅读:193来源:国知局
专利名称:面向片式多核处理器的流编译优化方法
技术领域
本发明属于计算机编译技术领域,具体涉及一种面向片式多核处理器的流编译优化方法。
背景技术
随着半导体技术的发展,多核处理器已经被验证为开发并行性的一个可行平台。片式结构(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=l
p=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)之间不需要数据传输操作。本实施例中采用分支界定或割平面法等经典整数线型规划算法求解Stepl中的整数线型规划问题模型,得到变量d(.)和a(.),其中d(.)为变量du,v,p的集合,a(.)为变量av,p的集合。根据上述变量集合,即可得到每个计算任务分配到的处理核即虚拟处理核,完成任务划分。(I. 2)阶段分配。该子步骤为每个计算任务(节点)和数据传输操作DTA分别分配其在流水线中的阶段号,具体步骤如下首先,对数据流图中的结点进行拓扑排序,形成拓扑序列;其次,对序列中的每个节点将其结点的阶段号初始化为0,然后,判断其与前驱结点是否在同一个处理核上,如果在,那么它与前驱节点的阶段相同,如果不在,那么其阶段号比前驱结点阶段号大2,数据传输操作DTA的阶段号比前驱结点大I。通过遍历整个拓扑序列,对所有结点和数据传输操作DTA进行阶段赋值。
(I. 3)构造流水线调度。将任务划分和阶段分配的结果构造流水线调度表。如图2所示,横坐标代表资源包括处理核和DTA通信部件,纵坐标代表阶段号。(2)存储访问优化该步骤主要是对步骤(I)的流水调度结果在片上SPM和主存上分配缓存,尽可能将存储分配在SPM上,溢出部分分配在主存。包括三个子步骤计算存储容量、混合缓存分配和存储拷贝消除。对缓冲区总和超过片上SPM限制的处理核,将其上的所有缓冲区降序排列。默认所有的缓冲区放在主存上,在满足SPM大小限制的情况下,将缓冲区逐个放在SPM上,并对该缓冲区进行标记。当缓冲区分配完成后,为所有处理核上分配在SPM上的缓冲区分配SPM起始地址,对分配在主存上的缓冲区不必分配地址。遍历同步数据流图,对同一条边上的两个缓冲区同时分配在主存上时,将这两个缓冲区合并为一个缓冲区,消除流水线中冗余的拷贝过程,并调整流水线,按照阶段赋值的思想,更新同步数据流图中结点的阶段号。 该步骤具体过程如下(2. I)计算存储容量。以步骤(I)软件流水调度表为输入,为每对节点或者节点与传输操作DTA计算其间所需缓冲区(Buffer Group, BG)容量,计算方法如下(stage (p)-stage (C)+1) Xt,其中stage (p)为起始节点分配到的阶段号,stage (c)为终止节点分配到的阶段号,t为BG中单个缓存的容量。(2. 2)混合缓存分配。首先,为每个处理核累计所分配到的所有BG总缓存容量如图3 (a)所示,如果两个计算节点分配到了同一个处理核上,两个计算节点之间BG分配到该处理器上;如图3 (b)所示,对于计算节点和DTA操作之间的BG,将在计算节点所在的处理核上为其分配存储空间。其次;找出总缓存容量超出片上SPM容量的所有处理核,并对分配到其上的所有BG按其缓存容量从大到小挑出分配到主存,直到该处理器的SPM容量能够容下所有剩下的所有BG总缓存容量为止。(2. 3)拷贝消除。对于所有在步骤(2. 2)中被分配到主存中的BG,查找之间存在DTA数据传输操作的BG对,合并成一个BG,同时消除该两个BG间的DTA数据传输操作。如图3(c)所示,为对图3(b)进行拷贝消除后的存储分配。( 3 )核间映射的通信优化在步骤(I)中,通过整数线性规划的方法将计算节点划分成了负载均衡的计算节点组,不同的组映射到不同的虚拟核上。在本步骤中,将把所有的虚拟核映射到片式多核架构的物理核上,其目的是减小通信和同步开销。映射的过程就是将虚拟核上的计算节点组映射到物理核上。本过程使用模拟退火算法来实现映射过程,需要获得扰动函数、概率接受函数和代价函数。模拟退火算法通过一个扰动函数得到一种映射状态,通过代价函数计算该映射状态下的代价值,并与当前的代价值进行比较,新的映射状态概率性地取代原有的映射状态,否则,继续执行扰动函数得到下一个状态。当扰动函数执行1000遍代价值仍然无变化时,结束模拟退火过程。通信优化的输出为虚拟处理核号与物理处理核号的一组对应关系。该过程步骤如下(3. I)确定扰动函数。其中该扰动函数中当前映射状态的下一个映射如下确定随机选择两个虚拟处理核并交换它们所对应的物理核,得到的映射状态即为当前映射状态的下一个映射状态。(3. 2)概率接受函数。本实施例中采用传统模拟退火的指数退避函数作为概率接受函数,用来判断扰动函数生成的映射状态是否会被接受。(3. 3)代价函数。其用于计算每一种映射状态下的通信和同步开销代价。采用以下公式作为代价函数的计算
权利要求
1.一种面向片式多核处理器的流编译优化方法,包括 生成软件流水调度表的软件流水调度步骤; 根据所述软件流水调度表将计算任务所需的数据在所述片式多核处理器片上的便笺式存储器(SPM)和主存上进行缓存分配的存储访问优化步骤; 根据所述片式多核处理器的片上网络拓扑结构确定通信量最小的映射方式,以将所述软件流水调度表中各个虚拟处理核根据所述映射方式调度映射到实际物理核上的通信优化步骤。
2.根据权利要求I所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述的软件流水调度步骤具体为 首先,对同步数据流图进行任务划分,确定每个计算任务分配到的对应虚拟处理核;其次,进行阶段分配,即根据各计算任务间的依赖关系,为每个计算任务及其之间的数据传输操作(DTA)分配其在流水线中的阶段号; 最后,根据上述对应的虚拟处理核和阶段号,构造软件流水调度表。
3.根据权利要求2所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述任务划分通过将其转化为整数线性规划问题,并利用求解其对应的整数线性规划问题模型而得到。
4.根据权利要求3所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述整数线性规划问题模型的目标为最小化流水线启动间隔,所述整数线性规划问题模型的限制条件为 P -I ^max 1 Σ a^p=1 P=o VvgV du,v,p>^p-aup ^ d^p ^ av p.iL .p ^1 - a .P V(〃,v) e O < p < IlaxΣ%χ卿呶如/J0彡p〈Pmax j\ __ 7-1丄llldA (u,v)sE 式中,流水线启动间隔II为整数变量,该整数线型规划问题模型的目标为Min II,Pmax为多核处理器的处理核数,P为处理核序号,G= (V, E)为同步数据流图,V和E分别代表图中的结点集和边集,V是同步数据流图中的任意结点,V e V, (U,V)为同步数据流图中任意边,(U,V) e E,变量au,p、av,p和du,v,p为0-1变量,work(v)、comm(u, V)分别为计算结点即计算任务的工作量和边通信量; 根据上述格式,求解变量集合d(.)和a(.),其中d(.)为变量du,v,p的集合,a(.)为变量av,p的集合,根据上述变量集合,即可得到每个计算任务分配到的处理核即虚拟处理核,完成任务划分。
5.根据权利要求3或4所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述进行阶段分配的具体过程如下 首先,对数据流图中的结点进行拓扑排序,形成拓扑序列;其次,对拓扑序列中的每个节点将其结点的阶段号初始化为O,然后,判断其与前驱结点是否在同一个处理核上,如果在,那么它与前驱节点的阶段相同,如果不在,那么其阶段号比前驱结点阶段号大2,数据传输操作(DTA)的阶段号比前驱结点大1,通过遍历整个拓扑序列,对所有结点和数据传输操作(DTA)进行阶段号赋值。
6.根据权利要求1-5之一所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述的存储访问优化步骤具体为 首先,计算流水线运行所需要的存储容量;然后,根据片式结构多核处理器上的层次性存储结构,将计算任务所需的数据进行优化分配,将尽可能多次访问的数据分配到片上便笺式存储器(SPM),溢出数据放在主存;最后,对软件流水调度中分配在主存的数据拷贝操作进行消除。
7.根据权利要求6所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述存储容量计算通过为每对节点或者节点与数据传输操作(DTA)计算其间所需的缓冲区(BG)容量得到,其计算公式为(stage(P)-stage(c)+1)Xt 其中stage(p)为起始节点分配到的阶段号,stage(c)为终止节点分配到的阶段号,t为缓冲区(BG)中单个缓存的容量。
8.根据权利要求6或7所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述进行优化分配的具体过程为 首先,为每个处理核统计所分配到的所有缓冲区(BG)的总缓存容量,其中,如果两个计算任务节点分配到了同一个处理核上,两个计算任务节点之间缓冲区(BG)分配到该处理器上;对于计算任务节点和DTA操作之间的缓冲区(BG),将在计算任务节点所在的处理核上为其分配存储空间。
其次,找出总缓存容量超出片上便笺式存储器(SPM)容量的所有处理核,并对分配到其上的所有缓冲区(BG)按其缓存容量从大到小挑出分配到主存,直到该处理器的便笺式存储器(SPM)容量能够容下所有剩下的所有缓冲区(BG)总缓存容量为止。
9.根据权利要求6-8之一所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述对拷贝操作进行消除的具体过程为对于所有被分配到主存中的缓冲区(BG),查找之间存在数据传输操作(DTA)的缓冲区(BG)对,合并成一个缓冲区(BG),同时消除该缓冲区(BG)对之间的数据传输操作(DTA)。
10.根据权利要求1-4之一所述的一种面向片式多核处理器的流编译优化方法,其特征在于,所述通信优化步骤中,采用模拟退火的方法确定通信量最小的映射方式,具体为 (3. I)确定扰动函数,其中该扰动函数中当前映射状态的下一个映射如下确定随机选择两个虚拟处理核并交换它们所对应的物理核,得到的映射状态即为当前映射状态的下一个映射状态; (3. 2)确定概率接受函数,以模拟退火的指数退避函数作为概率接受函数,用以判断所述扰动函数生成的映射状态是否会被接受; (3. 3)确定代价函数,用于计算每一种映射状态下的通信和同步开销代价;采用以下公式作为代价函数的计算
全文摘要
本发明公开了一种面向片式多核处理器的流编译优化方法,包括生成软件流水调度表的软件流水调度步骤;根据软件流水调度表将计算任务所需的数据在片式多核处理器片上的SPM和主存上进行缓存分配的存储访问优化步骤;根据片式多核处理器的片上网络拓扑结构确定通信量最小的映射方式,以将软件流水调度表中各个虚拟处理核根据映射方式调度映射到实际物理核上的通信优化步骤。本发明的方法结合了流程序与系统结构相关的优化技术,充分发挥高负载均衡性以及软件流水代码在多核处理器上的高并行性,而且针对片式多核处理器上的层次性存储与通信方式,对程序的存储访问和通信传输进行了优化,进一步地提高了程序的执行性能,具有更小的执行时间。
文档编号G06F9/38GK102855153SQ20121026561
公开日2013年1月2日 申请日期2012年7月27日 优先权日2012年7月27日
发明者于俊清, 魏海涛, 秦明康, 余华飞 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1