本发明属于电子信息的,具体涉及一种解决从核局存空间不足的方法,并成功减少了从核启动次数,将其应用于从核加速。
背景技术:
1、当前,各个国家都将超级计算机视为科技创新和发展的关键驱动力,超级计算机也成为国家科技创新核心竞争力的象征。中国国产超级计算机发展迅速,从2016年开始,“神威·太湖之光”连续四次摘得top500冠军,其搭载的处理器是由我国自主研发的申威众核处理器sw26010。而我国的新一代神威超级计算机“神威·蓝光ii”也已投入使用,其搭载的申威众核处理器sw26010pro是国内自研处理器的代表之作。神威系列超级计算机的发展,为各个领域的数据模拟与科学研究提供了强有力的支持。
2、sw26010pro芯片包括6个核组(core-group,cg),每个核组包括一个管理处理单元(management processing element,mpe),又称主核。一个8 × 8的计算处理单元(computation processing element,cpe),又称从核阵列。每个核组都有自己的内存控制器(memorycontroller,mc),内存为16 gb的ddr4,通过51. 2 gb/s 带宽的直接存储器访问(direct memory access,dma)与内存控制器连接。同一从核阵列中的两个从核之间,通过远程内存访问(remote memory access,rma)实现数据传输。每个从核具有256kb的本地局部数据内存(local data memory,ldm)。每个sw26010pro处理器由390个处理单元组成。单个sw26010pro 处理器可提供约14 tb/s 的浮点运算次数和通过dma约307. 2 gb/s的访存带宽性能。sw26010pro处理器的硬件架构如图1所示。
3、利用新一代神威超级计算机对程序进行优化,一般采用主从加速并行。在并行加速中,主核一般专注于处理应用程序的通信、i/o操作以及一些串行计算任务,而计算密集型任务则加载到从核上进行加速计算。从核负责执行这些计算任务,并在完成后将结果返回给主核。在从核执行计算任务期间,主核进入等待状态,直到从核完成任务;每个从核具有一块高速的本地局部数据存储空间 ldm,其空间容量有限,仅有256kb。ldm 空间主要分为私有空间和连续共享空间,ldm 连续共享空间是从核用于阵列内 ldm 共享访问的一种空间,从核可以访问到其他从核的 ldm 空间。
4、在单核组优化中,主要是通过主核启动程序,并将应用程序中可并行优化的计算密集型代码段迁移到从核上,以实现并行加速。从核启动关闭会消耗一定时间,因此,优化程序会尝试将适合放置在从核中的代码段尽可能地迁移到从核上执行,尤其是针对循环部分的优化。然而,许多循环存在前后依赖关系,无法将任务分配给不同的线程,导致从核启动次数增多,从而增加程序的运行时间。此外,许多程序中的循环依赖数据会绑定于跨步迭代,如果使用数组存储这些依赖数据,会占用大量存储空间。而从核的本地局部数据内存(ldm)有限,常常无法容纳所有依赖数据。尽管 ldm 提供了连续共享空间,即阵列内每个从核提供相同容量的 ldm 进行连续编址,可以缓解部分 ldm 空间不足的问题。然而,当数据离散度较大导致数组规模过大时,直接将其传输到从核的 ldm 中可能会导致存储空间的浪费,甚至也无法完全容纳。
技术实现思路
1、针对现有技术的不足,本发明提供了一种基于新一代申威众核处理器从核局存受限优化方法;
2、术语解释:
3、1、dma:直接存储器访问(direct memory access),由单个从核发起的,从主存到本地局存ldm的远程数据传输操作。
4、2、ldm:本地局部数据内存(local data memory,ldm),申威众核处理器的每个从核具有一块高速的本地局部数据存储空间 ldm,ldm总容量为 256kb。ldm空间主要分为私有空间和连续共享空间,ldm 私有空间是本从核快速访问的本地私有空间;ldm连续共享空间是从核用于阵列内 ldm 共享访问的一种空间,从核可以访问到其他从核的ldm空间。
5、3、共享ldm空间dma:从核发起共享 ldm 空间的 dma 数据传输,需要 ldm 共享空间内的所有从核调用。
6、4、共享ldm最大存储空间:共享ldm空间大小由“64*每个从核共享空间容量”限制,每个从核共享空间容量可以通过编译选项-ldm_share_size调节,共7档可调(0、4、8、16、32、64、128)kb,所以共享ldm最大存储空间为64*128kb。
7、本发明的技术方案为:
8、一种基于新一代申威众核处理器从核局存受限优化方法,包括:
9、针对依赖数据占用存储小于共享ldm最大存储空间的情况,主核提前计算循环中的依赖部分,并将计算得出的依赖数据存储在数组中,从核通过dma(直接存储器访问)或者共享ldm空间dma方式从主核获取依赖数据,完成计算;
10、针对依赖数据占用存储不小于共享ldm最大存储空间的情况,在主核中构建一个哈希表,主核提前计算循环中的依赖部分,并将计算得出的依赖数据存储在哈希表中;从核通过dma或者共享ldm空间dma方式获取哈希表,从而获取所需的依赖数据,完成计算。
11、根据本发明优选的,如果具有前后依赖的for循环或者while循环,将依赖数据从循环中分离出来,在主核中独立计算并存储。
12、根据本发明优选的,从核通过dma(直接存储器访问)或者共享ldm空间dma方式从主核获取依赖数据或哈希表,包括:
13、如果主核计算得到的依赖数据占用的存储空间小于256kb,将依赖数据存储在数组中,从核通过dma方式从主核获取依赖数据,并根据依赖部分在原程序中的位置,将其分配给各个从核,完成计算;
14、如果主核计算得到的依赖数据占用的存储空间不小于256kb,将依赖数据存储在数组中,从核通过共享ldm空间dma的方式从主核获取依赖数据,并根据依赖部分在原程序中的作用,将其分配给各个从核,完成计算。
15、根据本发明优选的,从核通过dma方式从主核获取依赖数据;包括:
16、通过调用dma接口函数,发起从主存到本地局存的 dma 数据传输,将存放依赖数据的数组传入ldm中。
17、根据本发明优选的,从核通过共享ldm空间dma的方式从主核获取依赖数据;包括:
18、通过调用共享ldm空间dma接口函数,发起从主存到本地局存的共享ldm空间的dma数据传输,将存放依赖数据的数组传入共享ldm中。
19、根据本发明优选的,根据依赖部分在原程序中的作用,将其分配给各个从核;包括:
20、根据外层循环条件与依赖数据的对应关系,将预先计算好的依赖数据分配给对应外层循环,然后将外层循环分给各从核执行。
21、根据本发明优选的,依赖数据存储在数组;包括:
22、对原程序中的依赖数据进行分析,确定依赖数据需要的循环部分和数量关系;创建适当大小的数组,并将依赖数据部分及其需要的循环部分提取出来;
23、针对依赖数据部分及其需要的循环部分执行计算,将计算得到的依赖数据存入创建好的数组中,确保外层循环条件与数组下标对应。
24、根据本发明优选的,通过共享ldm空间dma的方式从主核获取依赖数据时,用户显式设置ldm连续共享空间的大小,选择共享模式为全阵列行模式。
25、根据本发明优选的,在主核中构建一个哈希表,主核提前计算循环中的依赖部分,并将计算得出的依赖数据存储在哈希表中;包括:
26、对原程序中的依赖数据进行分析,确定依赖数据需要的循环部分和数量关系;判断出从核局存存储空间不足且依赖部分离散度高;先在主核构建一个哈希表,确定对应的哈希函数,并将依赖数据部分及其需要的循环部分提取出来;针对依赖数据部分及其需要的循环部分执行计算,将计算得到的依赖数据存入创建好的哈希表中,确保外层循环条件与哈希表对应。
27、根据本发明优选的,本发明从核局存受限优化方法实现了自动化接口sldo(solving loop dependencies optimization);
28、自动化接口sldo分为主核部分与从核部分;在主核部分,通过设置接口参数计算依赖数据,根据数据大小判断是使用数组还是哈希表进行存储;在从核部分,通过设置接口参数,从主核获取依赖数据,根据接收到的标志来确定将依赖数据存放在ldm中还是共享ldm中,并根据相应的关系将依赖数据分配给各个从核。
29、一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现一种基于新一代申威众核处理器从核局存受限优化方法的步骤。
30、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现一种基于新一代申威众核处理器从核局存受限优化方法的步骤。
31、本发明的有益效果为:
32、1、本发明考虑到在基于申威众核处理器进行优化时,可能由于循环依赖的存在而无法将代码段放入从核以加速执行的情况。因此,本发明通过分析依赖部分、提取依赖部分并提前进行计算,将预先计算好的依赖部分分配给从核执行,从而有效提高程序的效率。
33、2、本发明考虑到在从核执行计算时,直接访问主存获取数据可能会影响运行效率。因此,本发明采用两种dma传输方式,以减少频繁访问主存的次数,从而提高程序的执行效率。
34、3、本发明考虑到在将数据从主核传输到从核时,由于数据的高离散性导致依赖部分数据占用空间较大,无法利用dma传输方式进行有效优化。因此,本发明提出通过构建哈希表的方法,以降低存储空间的占用,从而使得可以更高效地使用dma方式传输数据。
35、4、本发明考虑到用户在优化程序时需要经历繁琐的步骤,为此设计了sldo自动化接口,旨在降低用户的操作难度,从而提升用户体验。
1.一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,包括:
2.根据权利要求1所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,如果具有前后依赖的for循环或者while循环,将依赖数据从循环中分离出来,在主核中独立计算并存储。
3.根据权利要求1所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,从核通过dma或者共享ldm空间dma方式从主核获取依赖数据或哈希表,包括:
4.根据权利要求1所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,从核通过dma方式从主核获取依赖数据;包括:
5.根据权利要求3所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,从核通过共享ldm空间dma的方式从主核获取依赖数据;包括:
6.根据权利要求3所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,根据依赖部分在原程序中的作用,将其分配给各个从核;包括:
7.根据权利要求1所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,依赖数据存储在数组;包括:
8.根据权利要求1所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,通过共享ldm空间dma的方式从主核获取依赖数据时,用户显式设置ldm连续共享空间的大小,选择共享模式为全阵列行模式。
9.根据权利要求1所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,在主核中构建一个哈希表,主核提前计算循环中的依赖部分,并将计算得出的依赖数据存储在哈希表中;包括:
10.根据权利要求1-9任一所述的一种基于新一代申威众核处理器从核局存受限优化方法,其特征在于,从核局存受限优化方法实现自动化接口sldo;自动化接口sldo分为主核部分与从核部分;在主核部分,通过设置接口参数计算依赖数据,根据数据大小判断是使用数组还是哈希表进行存储;在从核部分,通过设置接口参数,从主核获取依赖数据,根据接收到的标志来确定将依赖数据存放在ldm中还是共享ldm中,并根据相应的关系将依赖数据分配给各个从核。