匹配于高性能计算机结构的多层嵌套负载平衡方法

文档序号:6635364阅读:279来源:国知局
匹配于高性能计算机结构的多层嵌套负载平衡方法
【专利摘要】本发明提供了一种匹配于高性能计算机结构的多层嵌套负载平衡方法,该方法包括:在计算机中,将计算区域划分为N个二级计算子区域,并将所述N个二级计算子区域一一对应地映射到计算机内部的N个计算节点上;在每个计算节点中,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,并将所述M个三级计算子区域一一对应地映射到该计算节点的M个CPU上。本发明解决了现有技术中仅考虑在CPU之间实现平衡而导致的系统开销大,计算速度慢,均衡效果不好的技术问题,达到了减少系统开销,提升程序的并行效率的技术效果。
【专利说明】匹配于高性能计算机结构的多层嵌套负载平衡方法

【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种匹配于高性能计算机结构的多层嵌套负载平衡方法。

【背景技术】
[0002]当前,高性能计算机系统结构呈现多级结构特点,主要包括:CPU内多核、计算结点内多CPU和计算结点三个层次,具体的:
[0003]CPU核层,位于CPU内,每个核一般具有单独的LI级Cache (缓存),所有核共享Last Level Cache (最底层缓存),在这两级缓存之间,可能还有其它的Cache,为部分核所共享,每个CPU可能都拥有一个内存控制器,控制自己所属的内存模块。
[0004]CPU层,CPU之间通过QP1、高速总线、交叉开关或其它方式连接,CPU访问远程内存的平均带宽小于访问本地内存的平均带宽,平均延迟大于访问本地内存的平均延迟,因此CPU访问远程内存的速度明显慢于访问本地内存的速度。
[0005]计算结点层,计算结点间通过网络互联,现代高性能计算机普遍采用torus结构或者树结构的互联网络,计算结点间CPU网络通信的平均带宽小于访问内存的平均带宽,平均延迟大于访问内存的平均延迟,因此CPU网络通信的速度明显慢于访问内存的速度。
[0006]这种体系结构导致数据访问的速度在CPU内与CPU间不同,在计算结点内与计算结点间不同,因此,对于并行程序需要合理分配子任务、仔细设计通信方法,以有效利用这种多级的系统结构特点,取得较好的并行性能。
[0007]负载平衡技术直接影响并行应用程序的空闲等待时间和数据移动开销,因此是影响数值模拟并行性能的关键因素之一。而且,随着模拟规模的扩大,负载不平衡对于并行应用程序的性能影响越来越大。具体的,在基于离散网格的数值模拟中,负载平衡技术需要完成如下任务:将计算区域的网格单元均匀地分配到计算资源(例如:CPU核)上。经过几十年的发展,已有一些负载平衡技术被用于基于离散网格的数值模拟中,这些技术在均衡分配网格单元的同时,极小化计算资源间的数据移动量。然而,由于数据访问的速度不同,因此,数据移动的开销不仅与数据移动量相关,也与数据移动的距离相关。
[0008]目前的匹配于高性能计算机体系结构的负载平衡技术主要有两类:
[0009]第一类:首先测量高性能计算机任意两个CPU之间的数据访问速度,然后根据测量得到的数据访问速度定义某种开销,最后遍历计算任务和处理器,将计算任务分配到开销最低的处理器上。
[0010]第二类:首先根据高性能计算机CPU之间的互连结构,将全部CPU映射到一个特定结构(例如,一维序列或树)。然后,根据计算任务之间的通信关系,将全部计算任务映射到相同的特定结构。最后,将两者进行匹配。这样就完成了计算任务的分配分配。
[0011]然而上述两类匹配于高性能计算机体系结构的负载平衡技术全部是串行算法,且平衡技术仅考虑在CPU之间的平衡,因此存在开销大、计算速度慢且平衡效果不好的技术问题。
[0012]针对上述问题,目前尚未提出有效的解决方案。


【发明内容】

[0013]本发明实施例提供了一种匹配于高性能计算机结构的多层嵌套负载平衡方法,以解决现有技术中仅考虑在CPU之间实现平衡而导致的系统开销大,计算速度慢,均衡效果不好的技术问题,该方法包括:
[0014]在计算机中,将计算区域划分为N个二级计算子区域,并将所述N个二级计算子区域一一对应地映射到计算机内部的N个计算节点上,其中,N为正整数;
[0015]在每个计算节点中,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,并将所述M个三级计算子区域一一对应地映射到该计算节点的M个CPU上,其中,M为正整数。
[0016]在一个实施例中,在将所述M个三级计算子区域--对应地映射到该计算节点的
M个CPU上之后,所述方法还包括:
[0017]在每个CPU中,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,并将所述Q个四级计算子区域一一对应地映射到该CPU的Q个CPU内核上,其中,Q为正整数。
[0018]在一个实施例中,所述N个计算节点,并行地将二级计算子区域划分为多个三级计算子区域,并行地将三级计算子区域一一对应地映射到CPU上;
[0019]和/或,M*N个CPU,并行地将三级计算子区域划分为多个四级计算子区域,并行地将四级计算子区域一一对应地映射到CPU内核上。
[0020]在一个实施例中,在计算机中,将计算区域划分为N个二级计算子区域,包括:
[0021]在计算机中,按照先保证减少数据移动,然后保证负载平衡的原则,将计算区域划分为N个二级计算子区域。
[0022]在一个实施例中,在每个计算节点中,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,包括:
[0023]在每个计算节点中,按照先保证负载平衡,然后保证减少数据移动的原则,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域。
[0024]在一个实施例中,在每个CPU中,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,包括:
[0025]在每个CPU中,按照先保证负载平衡,然后保证减少表面积的原则,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域。
[0026]在一个实施例中,将计算区域划分为N个二级计算子区域,包括:采用坐标递归对分法,将计算区域划分为N个二级计算子区域;
[0027]和/或,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,包括:采用坐标递归对分法,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域;
[0028]和/ 或,
[0029]将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,包括:
[0030]采用坐标递归对分法,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域。
[0031]在一个实施例中,坐标递归对分法包括:将计算区域中的网格单元投影到坐标轴上,形成一维序列;将所述一维序列均分成二部分,得到对应的网格单元的分解;递归执行上述步骤,将计算区域分为多个子区域。
[0032]在一个实施例中,每个计算节点对应的二级计算子区域使用一个patch domain数据结构的实例进行存储,patch domain数据结构的实例与计算节点--对应;
[0033]和或,每个CPU对应的三级计算子区域使用一个patch reg1n数据结构的实例进行存储,patch reg1n数据结构的实例与CPU--对应。
[0034]在一个实施例中,每个CPU核对应的四级计算子区域使用一个patch数据结构的实例进行存储,patch数据结构的实例与CPU核一一对应。
[0035]在本发明实施例中,将计算区域分为多个二级区域,然后将二级区域分给多个计算节点进行处理,在计算节点中,又将二级区域分为多个三级区域,然后将三级区域分给多个CPU进行处理,从而形成了嵌套式的负载平衡方式,解决了现有技术中仅考虑在CPU之间实现平衡而导致的系统开销大,计算速度慢,均衡效果不好的技术问题,达到了减少系统开销,提升程序的并行效率的技术效果。

【专利附图】

【附图说明】
[0036]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
[0037]图1是本发明实施例的匹配于高性能计算机结构的多层嵌套负载平衡方法的方法流程图;
[0038]图2是本发明实施例的高性能计算机与计算区域的映射示意图。

【具体实施方式】
[0039]为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
[0040]在本例中,提供了一种匹配于高性能计算机结构的多层嵌套负载平衡方法,如图1所示,包括以下步骤:
[0041 ] 步骤101:在计算机中,将计算区域划分为N个二级计算子区域,并将所述N个二级计算子区域--对应地映射到计算机内部的N个计算节点上,其中,N为正整数,具体而言,N表示计算机中计算节点的个数;
[0042]步骤102:在每个计算节点中,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,并将所述M个三级计算子区域--对应地映射到该计算节点的M个CPU
上,其中,M为正整数,具体而言,M表示每个计算节点中CPU的个数。
[0043]在上述实施例中,将计算区域分为多个二级区域,然后将二级区域分给多个计算节点进行处理,在计算节点中,又将二级区域分为多个三级区域,然后将三级区域分给多个CPU进行处理,从而形成了嵌套式的负载平衡方式,解决了现有技术中仅考虑在CPU之间实现平衡而导致的系统开销大,计算速度慢,均衡效果不好的技术问题,达到了减少系统开销,提升程序的并行效率的技术效果。
[0044]进一步的,发明人考虑到,计算机结构不仅是计算节点和CPU两层结构,在CPU中还存在多个CPU内核,因此,结合这种三层的计算机体系结构,可以增加CPU核层的负载均衡。具体的,如图1所示,在将所述M个三级计算子区域一一对应地映射到该计算节点的M个CPU上之后,上述方法还包括:
[0045]步骤103:在每个CPU中,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,并将所述Q个四级计算子区域一一对应地映射到该CPU的Q个CPU内核上,其中,Q为正整数,具体而言,Q表示每个CPU中CPU内核的个数。
[0046]为了提高数据平衡执行的速度,上述步骤102和步骤103可以采用并行方式,即N个计算节点,并行地将二级计算子区域划分为多个三级计算子区域,并行地将三级计算子区域一一对应地映射到CPU上;M*N个CPU,并行地将三级计算子区域划分为多个四级计算子区域,并行地将四级计算子区域一一对应地映射到CPU内核上。
[0047]在具体实现的过程中,在考虑负载平衡的同时,还需要考虑数据的移动,即需要同时考虑负载平衡和系统开销,为此,主要采取以下的原则进行区域划分和映射:
[0048]I)在计算机中,按照先保证减少数据移动,然后保证负载平衡的原则,将计算区域划分为N个二级计算子区域。
[0049]2)在每个计算节点中,按照先保证负载平衡,然后保证减少数据移动的原则,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域。
[0050]3)在每个CPU中,按照先保证负载平衡,然后保证减少面体比的原则,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域。
[0051]然而,值得注意的是:上述的划分和映射原则仅是示意性描述,还可以采用其它的原则,本申请对此不做限定。
[0052]在进行区域划分的时候,可以采用坐标递归对分法或者是贪婪法等划分方法,具体的,例如:
[0053]可以采用坐标递归对分法,将计算区域划分为N个二级计算子区域,可以采用坐标递归对分法,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,可以采用坐标递归对分法,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域。
[0054]具体的,上述坐标递归对分法包括:将计算区域中的网格单元投影到坐标轴上,形成一维序列;将所述一维序列均分成二部分,得到对应的网格单元的分解;递归执行上述步骤,将计算区域分为多个子区域。
[0055]然而,值得注意的是:上述的坐标递归对分法仅是区域剖分方法的一种示意性描述,还可以采用其它的区域剖分方法,本申请对此不做限定。
[0056]在将计算区域划分为二级计算子区域、三级计算子区域和四级计算子区域之后就需要对数据进行存储,具体的,对于每个计算节点对应的二级计算子区域可以使用一个patch domain (网格区)数据结构的实例进行存储,patch domain数据结构的实例与计算节点--对应;对于每个CPU对应的三级计算子区域可以使用一个patch reg1n(网格域)
数据结构的实例进行存储,patch reg1n数据结构的实例与CPU--对应,对于每个CPU核对应的四级计算子区域可以使用一个patch(网格片)数据结构的实例进行存储,patch数据结构的实例与CPU核一一对应。
[0057]在具体实现的时候,patch domain(网格区)数据结构的实例中主要存储有:二级计算子区域的索引范围,以及对应的一组patch reg1n (网格域),patch reg1n数据结构的实例中主要存储有:三级计算子区域的索引范围,以及对应的一组patch(网格片),patch数据结构的实例中主要存储有:四级计算子区域的索引范围,以及对应的物理量。
[0058]下面将结合一个具体实施例对上述匹配于高性能计算机结构的多层嵌套负载平衡方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本发明,并不构成对本发明的不当限定。
[0059]在本例中,提供了一种匹配于高性能计算机体系结构的多层嵌套负载平衡技术,通过该方法不但可以充分利用高性能计算机的多级体系结构,尽量将通信和负载迁移集中在每个CPU的多核之间,避免数据的长距离移动(例如,数据在高性能计算机的计算结点之间的移动),降低程序的通信开销,还可以快速地并行执行,从而提升程序的并行效率,该匹配于高性能计算机结构的多层嵌套负载平衡方法,主要包括以下步骤:
[0060]步骤1:计算结点层负载平衡;
[0061]步骤2:计算CPU层负载平衡;
[0062]步骤3:计算CPU核层负载平衡。
[0063]下面对上述三个步骤进行具体说明:
[0064]步骤1,如图2所示,在高性能计算机101中,将计算结点数记为Np,根据首先保证减小数据移动,然后保证负载平衡的原则,采用坐标递归对分法,将计算区域201剖分成Nq个二级计算子区域202,其中,Nq大于等于Np,并映射到计算结点102上。每个计算结点对应的二级计算子区域使用一个patch domain数据结构的实例进行存储,其中,patch domain
与计算结点--对应。
[0065]步骤2,在每个计算结点中,将CPU数记为Ndsm,根据首先保证负载平衡,然后保证减小数据移动的原则,采用坐标递归对分法,将二级计算子区域剖分成Ndsn个三级子区域203,其中,Ndsn大于等于Ndsm,并映射到该计算结点内的CPU103上。所有计算结点的剖分和映射操作并行执行,且每个CPU对应的三级计算子区域使用一个patch reg1n数据结构
[2]的实例进行存储,其中,patch reg1n与计算结点内的CPU--对应。
[0066]步骤3,在每个CPU内部,将CPU内核数记为Nsmp,根据首先保证负载平衡,然后保证减小面体比的原则,采用贪婪法,并行地将每个三级计算子区域剖分成Nsmp个四级计算子区域204,其中,每个四级计算子区域使用一个patch数据结构的实例进行存储,然后再将patch映射到该CPU的内核104上。
[0067]然而,值得注意的是,在本例中采用的三层负载平衡,具体实现的时候也可以采用计算结点层负载平衡和CPU层负载平衡两层负载平衡,而不使用CPU核层负载平衡,进一步的,还可以采用计算结点层负载平衡、CPU层负载平衡、CPU核层负载平衡三层以外的其它层的负载平衡。也可以采用其它的数据结构替代patch domain、patch reg1n、patch。
[0068]在本例中,基于高性能计算机的多级体系结构,使用多层嵌套负载平衡技术进行匹配,可以充分利用高性能计算机的多级体系结构,尽量将通信和负载迁移集中在每个CPU的多核之间,避免数据的大幅度移动,降低程序的通信开销,从而提升了程序的并行效率,因为上述步骤2和步骤3是并行执行的,因此还提高了负载平衡的执行速度。
[0069]从以上的描述中,可以看出,本发明实施例实现了如下技术效果:将计算区域分为多个二级区域,然后将二级区域分给多个计算节点进行处理,在计算节点中,又将二级区域分为多个三级区域,然后将三级区域分给多个CPU进行处理,从而形成了嵌套式的负载平衡方式,解决了现有技术中仅考虑在CPU之间实现平衡而导致的系统开销大,计算速度慢,均衡效果不好的技术问题,达到了减少系统开销,提升程序的并行效率的技术效果。
[0070]显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
[0071]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种匹配于高性能计算机结构的多层嵌套负载平衡方法,其特征在于,包括: 在计算机中,将计算区域划分为N个二级计算子区域,并将所述N个二级计算子区域一一对应地映射到计算机内部的N个计算节点上,其中,N为正整数; 在每个计算节点中,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,并将所述M个三级计算子区域——对应地映射到该计算节点的M个CPU上,其中,M为正整数。
2.如权利要求1所述的方法,其特征在于,在将所述M个三级计算子区域一一对应地映射到该计算节点的M个CPU上之后,所述方法还包括: 在每个CPU中,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,并将所述Q个四级计算子区域一一对应地映射到该CPU的Q个CPU内核上,其中,Q为正整数。
3.如权利要求2所述的方法,其特征在于: 所述N个计算节点,并行地将二级计算子区域划分为多个三级计算子区域,并行地将三级计算子区域——对应地映射到CPU上; 和/或,M*N个CPU,并行地将三级计算子区域划分为多个四级计算子区域,并行地将四级计算子区域一一对应地映射到CPU内核上。
4.如权利要求1所述的方法,其特征在于,在计算机中,将计算区域划分为N个二级计算子区域,包括: 在计算机中,按照先保证减少数据移动,然后保证负载平衡的原则,将计算区域划分为N个二级计算子区域。
5.如权利要求1所述的方法,其特征在于,在每个计算节点中,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,包括: 在每个计算节点中,按照先保证负载平衡,然后保证减少数据移动的原则,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域。
6.如权利要求2所述的方法,其特征在于,在每个CPU中,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,包括: 在每个CPU中,按照先保证负载平衡,然后减少表面积的原则,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域。
7.如权利要求2所述的方法,其特征在于: 将计算区域划分为N个二级计算子区域,包括:采用坐标递归对分法,将计算区域划分为N个二级计算子区域; 和/或, 将与该计算节点对应的二级计算子区域划分为M个三级计算子区域,包括:采用坐标递归对分法,将与该计算节点对应的二级计算子区域划分为M个三级计算子区域; 和/或, 将与该CPU对应的三级计算子区域划分为Q个四级计算子区域,包括: 采用坐标递归对分法,将与该CPU对应的三级计算子区域划分为Q个四级计算子区域。
8.如权利要求7所述的方法,其特征在于,所述坐标递归对分法包括: 将计算区域中的网格单元投影到坐标轴上,形成一维序列; 将所述一维序列均分成二部分,得到对应的网格单元的分解; 递归执行上述步骤,将计算区域分为多个子区域。
9.如权利要求1所述的方法,其特征在于: 每个计算节点对应的二级计算子区域使用一个patch domain数据结构的实例进行存储,patch domain数据结构的实例与计算节点--对应; 和或,每个CPU对应的三级计算子区域使用一个patch reg1n数据结构的实例进行存储,patch reg1n数据结构的实例与CPU--对应。
10.如权利要求2所述的方法,其特征在于,每个CPU核对应的四级计算子区域使用一个patch数据结构的实例进行存储,patch数据结构的实例与CPU核--对应。
【文档编号】G06F9/50GK104331336SQ201410676230
【公开日】2015年2月4日 申请日期:2014年11月21日 优先权日:2014年11月21日
【发明者】刘旭, 曹小林, 莫则尧 申请人:北京应用物理与计算数学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1