一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法

文档序号:31340211发布日期:2022-08-31 09:56阅读:339来源:国知局
一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法

1.本发明属于电子信息的技术领域,具体涉及一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法。


背景技术:

2.当前,超级计算成为一个国家科技创新核心竞争力的重要方面。超级计算机是世界发达国家争抢的重要“制高点”,对国家安全、经济和社会发展,具有举足轻重的支持作用。长期以来,我国高度重视国产超级计算机和高性能处理器的研发。目前,国产超级计算机已经取得了长足的进步,很多国产高性能处理器已经研发成功并投入使用。申威系列众核处理器是我国国产自研高性能处理器的代表之作。
3.新一代神威超级计算机使用了我国自主研发的新一代高性能异构众核处理器——sw26010pro。新一代神威超级计算机的每个计算节点包含2颗申威sw26010pro处理器和192gb的内存。节点之间通过国产自主可控高速互连网络连接。
4.sw26010pro处理器由6个核组(core-group,cg)构成,这些核组通过片上网络以环形架构连接。每个核组由1个运算控制核心(management processing element,mpe,又称主核)和1个从核阵列(computing processing elements,cpes)组成。每个从核阵列由64个从核(computing processing element,cpe)按照8
×
8的网状格式组成。sw26010pro共包含6个主核,390个从核。从核之间的网络采用cmesh网络,从核之间可以使用寄存器通信进行数据通信,4个临近的从核共享1个从核簇管理部件。sw26010pro共包含6个主核,384个从核。sw26010pro处理器的硬件架构如图1所示。
5.新一代神威超级计算机主要采用主从加速并行、主从协同并行、主从异步并行和主从动态并行这4种异构并行方法。主从加速并行是指程序的计算核心通过athread或者是openacc*被加载到从核上进行加速计算,而主核只完成应用程序的通信、i/o和部分串行代码的计算,从核在计算核心段过程中,主核处于等待状态,直到从核完成该核心段的计算任务;主从协同并行是指主核和从核作为对等的个体进行并行计算,根据各自计算能力进行负载分配,共同完成核心段的计算;主从异步并行是指从核进行加速计算的同时,主核不等待,而是进行其他如计算、通信或i/o等操作,从而提高主从协作的计算效率;主从动态并行是指主核负责任务分配,从核负责任务计算并回写计算结果,该并行方法比较适合从核计算任务的计算时间不固定或者针对一些任务并行的程序。
6.在单核组优化中,主要是通过主核启动程序,将应用程序中可并行优化的热点代码段放到从核上加速并行。应用程序在主核启动后,给从核分配若干任务的时候,并不清楚所分配的任务在每一个从核上的执行时间。当前一般采取各个从核平均分配任务数量的方法,即各个从核获取的任务数量相等。因此,当待分配任务众多且各个任务执行时间差异较大的时候,原平均分配的方法会使得多个从核存在负载不均衡的问题。即较早完成任务的从核,需要等待其他从核完成任务。上述情况造成了从核阵列计算资源的浪费。具体平均分
配任务如图2所示。


技术实现要素:

7.针对现有技术的不足,本发明提供了一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法;
8.本发明主要关注在单核组优化过程中,待优化任务数量不一致且差距较大,导致多个从核得到任务数量不同,进而造成负载不均衡的问题。
9.本发明主要基于主从异步加速模式来使得从核自动获取任务,进行加速处理,进而解决负载不均衡的方法。和之前平均分配任务数量不同,各个从核会根据当前任务的完成情况,通过和主核数据通信自动获取下一个任务,进而执行下一个任务。即各个从核中先完成当前任务的,就和主核通信,自动获取下一次任务,然后继续执行获取到的任务。当所有的任务执行结束之后,从核自动退出,结束任务执行阶段。在从核执行任务的时候,主核负责任务的分配和更新。
10.术语解释:
11.1、athread_spawn():创建在从核组上运行的线程组,启动核组中的所有可用从核资源的一个函数接口。
12.2、dma:direct memory access,直接存储器访问。传输将数据从一个地址空间复制到另外一个地址空间。传输动作本身是由dma控制器来实行和完成,不依赖于cpu的大量中断负载。
13.本发明的技术方案为:
14.一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法,包括:
15.各个从核先完成当前初试任务后,和主核通信,自动获取下一次任务,继续执行获取到的任务直至任务结束;主核负责任务的分配和更新;
16.从核自动获取下一次任务包括单从核自动获取任务和多从核自动获取任务,其中,多从核自动获取任务方式按照从核分组进行,包括行从核自动获取任务方式、列从核自动获取任务方式和从核簇自动获取任务方式。
17.根据本发明优选的,单从核自动获取任务,是指:采用主从异步并行加速的方式,通过单个从核与主核进行数据传递,实现自动化获取任务;包括:
18.在主核调用athread_spawn()启动从核之后,主核开始分配任务并将任务存放到指定地址,同时,从核开始执行自己的初始任务,当从核执行完初始任务之后进入任务临界区,通过dma从主核获取下一个任务编号,在从核获取任务成功后给主核一个信号,让主核继续分配下一次任务;在这个过程中,其余的从核如果有执行完任务的,需要在任务临界区外等待,直到上一个从核成功获取任务后,其余等待的从核才进入任务临界区并获取下一次主核分配的新任务,以此类推,一直到各从核获取完主核分配的所有任务为止。
19.根据本发明优选的,单从核自动获取任务,具体包括:
20.首先,由主核发起程序运行,通过athread_spawn()接口调用启动从核,各个从核同时进行任务获取;
21.然后,从核在初始任务结束的时候进入任务获取阶段;
22.任务获取阶段包括两部分,分别是获取新任务编号和执行新任务;
23.获取新任务编号:从核进入任务临界区,位于任务临界区的从核不断尝试获取主核中存放新任务编号的地址数据,此时主核将新任务编号赋值到对应的地址,经过从核不断获取存放新任务的地址得到新任务编号;同时,将获取到的新任务编号和之前的任务编号做比较,确定不同后,执行新任务;
24.执行新任务:当从核获取新任务编号并使用dma与主核进行数据传递之后,从核离开任务临界区,执行新任务;同时,新的从核在执行完其初始化任务之后进入任务临界区中,继续和主核交互,获取新任务编号并执行新任务;
25.判断主核中的任务是否分配结束,如果分配结束,任务获取阶段结束,否则,继续执行任务获取阶段。
26.根据本发明优选的,根据任务数量和任务数量的不同选择行从核自动获取任务方式、列从核自动获取任务方式或从核簇自动获取任务方式;具体是指:当任务数量少于64个时,采用行从核自动获取任务方式或列从核自动获取任务方式进行任务的自动获取;否则,采用从核簇自动获取任务方式进行任务的自动获取。
27.根据本发明优选的,行从核自动获取任务,包括:
28.将从核阵列中的每行划分为1个小组,选择每行的从核作为处理任务的单元,单元之间通过寄存器进行通信来保证任务的顺利进行,获取任务的是该行从核中的第1个从核,根据获取到的从核所在的列id,只允许列id为0的从核进入任务临界区获取新任务编号,获取到新任务编号之后再通过行通信和该行中的其他从核共同处理该新任务。
29.根据本发明优选的,列从核自动获取任务,包括:
30.将从核阵列中的每列划分为1个小组,选择每列的从核作为处理任务的单元,单元之间通过寄存器进行通信来保证任务的顺利进行,获取任务的是该列从核中的第1个从核,根据获取到的从核所在的行id,只允许行id为0的从核进入任务临界区获取新任务编号,获取到新任务编号之后再通过列通信和该列中的其他从核共同处理该新任务。
31.根据本发明优选的,从核簇自动获取任务,包括:
32.采用相邻4个从核之间的从核作为处理任务的单元,单元之间通过从核簇进行通信保证任务的顺利进行,获取任务的是从核簇中第1个从核,根据其所在从核阵列的id值判断出是否为从核簇的第1个从核,只允许第1个从核进入任务临界区中获取新任务编号,获取新任务编号之后通过从核簇之间的寄存器通信和本从核簇中的其他从核共同处理该新任务。
33.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法的步骤。
34.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法的步骤。
35.本发明的有益效果为:
36.本发明主要关注在单核组优化过程中,待优化任务大小不一致且差距较大,导致多个从核得到任务数量不同,进而造成负载不均衡的问题。
37.1、本发明针对任务数量不同的情况提供了一种解决从核负载均衡的方法,节省了
从核等待的时间,保证了每个从核的任务数量均衡,提高了程序的并行效率。
38.2、本发明可以根据任务数量决定使用任务的获取方式,主要包括单个从核自动获取任务方式、行从核自动获取任务方式、列从核自动获取任务方式和从核簇自动获取任务方式。使用灵活,可以提高程序的并行效率。
39.3、本发明基于主从异步加速模式来使得从核自动获取任务,主核可以跟单个从核、一行从核、一列从核、一个从核簇进行通信,进行加速处理,进而解决负载不均衡的方法。
附图说明
40.图1为sw26010pro架构示意图;
41.图2为原各从核平均分配任务数量的方式;
42.图3为平均分配任务和自动获取任务对比示意图;
43.图4为单个从核自动获取任务示意图;
44.图5为行从核自动获取任务示意图;
45.图6为列从核自动获取任务示意图;
46.图7为从核簇自动获取任务示意图;
具体实施方式
47.下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
48.实施例1
49.一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法,包括:
50.各个从核先完成当前初试任务后,和主核通信,自动获取下一次任务,继续执行获取到的任务直至任务结束;主核负责任务的分配和更新;
51.从核自动获取下一次任务包括单从核自动获取任务和多从核自动获取任务,其中,多从核自动获取任务方式按照从核分组进行,根据申威众核处理器硬件架构,从核可以进行多种从核分组方式,主要包括行从核自动获取任务方式、列从核自动获取任务方式和从核簇自动获取任务方式。
52.实施例2
53.根据实施例1所述的一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法,其区别在于:
54.单从核自动获取任务,是指:采用主从异步并行加速的方式,通过单个从核与主核进行数据传递,实现自动化获取任务;包括:
55.在主核调用athread_spawn()启动从核之后,主核开始分配任务并将任务存放到指定地址,同时,从核开始执行自己的初始任务,当从核执行完初始任务之后进入任务临界区,通过dma从主核获取下一个任务编号,在从核获取任务成功后给主核一个信号,让主核继续分配下一次任务;在这个过程中,其余的从核如果有执行完任务的,需要在任务临界区外等待,直到上一个从核成功获取任务后,其余等待的从核才进入任务临界区并获取下一次主核分配的新任务,以此类推,一直到各从核获取完主核分配的所有任务为止。具体实现
如图4所示。
56.单从核自动获取任务,具体包括:
57.首先,由主核发起程序运行,通过athread_spawn()接口调用启动从核,开始执行从核部分代码。各个从核(从核数量可设定)同时进行任务获取;
58.然后,从核在初始任务结束的时候进入任务获取阶段;
59.任务获取阶段包括两部分,分别是获取新任务编号和执行新任务;
60.获取新任务编号:获取新任务使用任务临界区,其可以保证在同一时间段只有一个从核获取主核的任务,从而使任务的执行具有唯一性。为了保证从核能正确获取到主核中分配的任务编号,从核进入任务临界区,位于任务临界区的从核不断尝试获取主核中存放新任务编号的地址数据,此时主核将新任务编号赋值到对应的地址,经过从核不断获取存放新任务的地址得到新任务编号;为防止获取出错,同时,将获取到的新任务编号和之前的任务编号(第一次为初试任务编号)做比较,确定不同后,执行新任务;
61.执行新任务:当从核获取新任务编号并使用dma与主核进行数据传递之后,从核离开任务临界区,执行新任务;同时,新的从核在执行完其初始化任务之后进入任务临界区中,继续和主核交互,获取新任务编号并执行新任务;
62.判断主核中的任务是否分配结束,如果分配结束,任务获取阶段结束,否则,继续执行任务获取阶段。
63.因为主核和从核相互独立,为了保证主核和从核执行顺序的可控性,在从核和主核中采用多个标识变量和循环控制语句,通过从核返回主核的条件变量值使其顺利通过循环控制语句,同样从核中也会使用一些循环条件值不断获取主核数据,然后通过主核修改此循环条件值来使得从核可以顺利通过循环控制语句。主核和从核相互制约,互相通信,可以使得每次从核都能准确地从主核中逐次获取到唯一且正确的任务编号。具体伪代码如下所示:
64.主核伪代码:
[0065][0066]
从核伪代码:
[0067][0068][0069]
主程序通过athread_spawn()函数启动从核资源,主核进入任务分配阶段,将需要分配的任务放到指定地址上,然后等待继续进行下次任务分配的标识符。同时从核开始执行初始任务(根据从核编号获取初始任务)。从核执行完初试任务之后进入自动获取任务阶段,整个获取任务阶段使用互斥锁嵌套,只允许同一时间单个从核进入互斥锁嵌套的临界区获取任务,此时主核已将任务分配到指定地址。从核进入临界区后,通过dma获取主核存放到指定地址的任务,获取成功后对任务编号进行判断是否获取到正确的任务编号,如果没有获取到正确的任务编号,则继续获取,一直获取到正确的任务编号为止。获取到正确的任务之后,从核会返回给主核一个信号,主核接收到此信号之后继续执行下一次的任务分配。同时从核会离开临界区,并继续执行新获取到的任务,此时临界区外的其他从核会进入临界区,获取下一次的任务,依次类推,一直到主核分配完所有的任务。在最后一次接收到从核获取任务成功的标识之后,会赋值一个特殊的任务编号,当所有的从核执行完分配的所有任务之后继续下一次获取的时候,会获取到这个特殊的任务编号,识别后直接结束从核资源,完成整个从核的任务获取。
[0070]
实施例3
[0071]
根据实施例1或2所述的一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法,其区别在于:
[0072]
根据任务数量和任务数量的不同选择行从核自动获取任务方式、列从核自动获取任务方式或从核簇自动获取任务方式;具体是指:根据从核分组可以分为行从核自动获取、列从核自动获取和从核簇自动获取的方式进行任务的自动获取,其中行从核自动获取和列从核自动获取方式都是通过每行或者是每列的8个从核划分为1组来处理1个任务,这样可以同时处理8个任务;从核簇自动获取是通过1个从核簇作为1组处理1个任务,这样可以同时处理16个任务。当任务数量少于64个时,采用行从核自动获取任务方式或列从核自动获取任务方式进行任务的自动获取;否则,采用从核簇自动获取任务方式进行任务的自动获
取。
[0073]
行从核自动获取任务,包括:
[0074]
与单个核心的任务自动获取方式类似,将从核阵列中的每行划分为1个小组,选择每行的从核作为处理任务的单元,单元之间通过寄存器进行通信来保证任务的顺利进行,获取任务的是该行从核中的第1个从核,根据获取到的从核所在的列id,只允许列id为0的从核进入任务临界区获取新任务编号,获取到新任务编号之后再通过行通信和该行中的其他从核共同处理该新任务。其获取主核任务方式与单个从核自动获取方法相同,伪代码相同。行从核自动获取任务示意如图5所示。
[0075]
列从核自动获取任务,包括:
[0076]
将从核阵列中的每列划分为1个小组,选择每列的从核作为处理任务的单元,单元之间通过寄存器进行通信来保证任务的顺利进行,获取任务的是该列从核中的第1个从核,根据获取到的从核所在的行id,只允许行id为0的从核进入任务临界区获取新任务编号,获取到新任务编号之后再通过列通信和该列中的其他从核共同处理该新任务。其获取主核任务方式与单个从核自动获取方法相同,伪代码相同。行从核自动获取任务示意如图6所示。
[0077]
从核簇自动获取任务,包括:
[0078]
采用相邻4个从核之间的从核作为处理任务的单元,单元之间通过从核簇进行通信保证任务的顺利进行,获取任务的是从核簇中第1个从核,根据其所在从核阵列的id值判断出是否为从核簇的第1个从核,只允许第1个从核进入任务临界区中获取新任务编号,获取新任务编号之后通过从核簇之间的寄存器通信和本从核簇中的其他从核共同处理该新任务。其获取主核任务方式与单个从核自动获取方法相同,伪代码相同。从核簇自动获取任务示意如图7所示。
[0079]
假设存在n个任务,每个任务的计算时间不一样,将其放到从核上进行优化,以从核簇(4个从核)自动获取任务方式为例,原平均分配方法的执行时间和使用本方法的执行时间对比如图3所示。
[0080]
本实施例还对单个从核任务自动获取方法做了测试。本测试实验采用矩阵乘函数作为任务开销和结果正确性的验证,为了保证任务之间的差异性,使用随机生成函数生成范围为1至1000之间整型数作为矩阵乘函数的循环个数。不同的循环次数数量不同,即为不同的任务数量。
[0081]
分别使用100、500、1000和3000个任务作为测试任务数量。将测试时间分别和串行程序、普通众核优化程序进行对比。使用本发明方法的加速比(毫秒)如表1所示。
[0082]
表1
[0083]
[0084][0085]
实验结果证明,相比串行程序和普通众核优化程序,本发明方法具有明显的加速效果。
[0086]
实施例4
[0087]
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现实施例1-3任一所述的基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法的步骤。
[0088]
实施例5
[0089]
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现实施例1-3任一所述的基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法的步骤。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1