CN107273094B - 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 - Google Patents
一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 Download PDFInfo
- Publication number
- CN107273094B CN107273094B CN201710353362.2A CN201710353362A CN107273094B CN 107273094 B CN107273094 B CN 107273094B CN 201710353362 A CN201710353362 A CN 201710353362A CN 107273094 B CN107273094 B CN 107273094B
- Authority
- CN
- China
- Prior art keywords
- index
- block
- data structure
- hpcg
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 127
- IZQMRNMMPSNPJM-UHFFFAOYSA-N 2-[(3-hydroxypyridine-2-carbonyl)amino]acetic acid Chemical compound OC(=O)CNC(=O)C1=NC=CC=C1O IZQMRNMMPSNPJM-UHFFFAOYSA-N 0.000 title claims abstract description 31
- 238000005457 optimization Methods 0.000 title claims abstract description 17
- 230000008569 process Effects 0.000 claims abstract description 78
- 239000011159 matrix material Substances 0.000 claims abstract description 45
- 239000013598 vector Substances 0.000 claims abstract description 37
- 238000004891 communication Methods 0.000 claims abstract description 20
- 238000006243 chemical reaction Methods 0.000 claims abstract description 19
- 238000004040 coloring Methods 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 19
- 238000013507 mapping Methods 0.000 claims abstract description 13
- 238000004364 calculation method Methods 0.000 claims description 15
- ACWBQPMHZXGDFX-QFIPXVFZSA-N valsartan Chemical class C1=CC(CN(C(=O)CCCC)[C@@H](C(C)C)C(O)=O)=CC=C1C1=CC=CC=C1C1=NN=NN1 ACWBQPMHZXGDFX-QFIPXVFZSA-N 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 3
- 238000012805 post-processing Methods 0.000 claims description 2
- 241001409283 Spartina mottle virus Species 0.000 abstract description 12
- 230000001133 acceleration Effects 0.000 abstract description 9
- 230000006870 function Effects 0.000 abstract description 6
- 230000008707 rearrangement Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 238000011160 research Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 229920000433 Lyocell Polymers 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000004574 high-performance concrete Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种适应于“神威·太湖之光”上HPCG优化的数据结构及其高效实现方法,基于“神威·太湖之光”上的申威众核处理器体系结构特征和HPCG算法优化的需要,使用了改进ELL格式的数据结构对原始数据结构进行替换,除了包含矩阵数据本身的数据结构,还支持分块着色,索引转换,进程通信,以及向量位置映射等相关的数据结构,并且中间处理过程采用了申威众核平台提供的Athread多线程库进行并行,最终应用于HPCG算法的核心函数SpMV和SymGS优化过程中,相应的性能和带宽百分比取得了一致性的加速比,最高分别为18.2和17.6。
Description
技术领域
本发明所涉及自定义数据结构及其高效实现方法,支撑了HighPerformanceConjugate Gradients(HPCG,高性能的共轭梯度)基准测试程序在“神威·太湖之光”超计算机上的高性能实现。其中,中间处理过程使用了国产申威众核平台提供的Athread库进行多线程并行。
背景技术
High Performance Conjugate Gradients(HPCG,高性能的共轭梯度)基准测试程序是一种对全世界超级计算机进行排名的新标准。该测试基准主要用于衡量超级计算机解决大规模稀疏线性***的能力,相比于目前TOP500排名所采用的HighPerformanceLinpack(HPL)基准测试,其计算、访存与通信模式更能代表目前基于偏微分方程求解的一类广泛的科学与工程计算应用,也有助于更全面地反映***的访存带宽和延迟以及通信能力。大规模稀疏线性***部署在高性能计算机上进行计算时,其依赖的底层数据结构对于求解线性***的算法至关重要。同样地,数据结构本身的构造过程,对访存有较高的需求,若不能根据高性能计算机的体系结构进行有效优化,将非常耗时。
HPCG源于半结构网格上的三维热传导应用,核心是将三维规则区域上的Poisson方程采用有限差分法进行离散,最终转换成一个稀疏线性方程组的求解问题。在大规模并行环境中,HPCG使用三维区域分解策略,也就是按照3个维度将整个计算区域划分成子区域,然后每个子区域被分配一个MPI进程。其中每个子区域的规模由输入参数指定,即如果(nx×ny×nz)是由一个MPI进程处理的子区域大小,且(npx×npy×npz)是总进程数,那么所解问题的全局规模就为(npx×nx)×(npy×ny)×(npz×nz)。
由于HPCG使用的是27点stencil,在HPCG中,每个网格点的更新都依赖其周围紧邻的最多26个邻居点,可选取的值为:26(内部点)、17(边界面上的点)、11(边界线上的点)和7(边界顶点)。最终生成的稀疏线性***具有下述特点:内部点对应27个非零元,边界点对应7-18个非零元,对称正定非奇异,已知精确解为1.0,匹配的右端项的初始值为0。参考版本采用的数据结构主要是Compressed Sparse Row(CSR)格式。具体数据结构如下:
整个结构主要包含三个部分:矩阵数据存储,索引映射,以及进程间通信。其中,与矩阵的数据存储相关的主要有:nonzerosInRow存储矩阵每行非零元的个数,mtxIndG存储矩阵的全局索引,mtxIndL存储矩阵的进程内索引,matrixValues存储矩阵元素的数值,matrixDiagonal存储矩阵对角线元素的数值。与索引映射相关的主要有:globalToLocalMap用来进行全局索引到进程内索引的转换,localToGlobalMap用来进行进程内索引到全局索引的转换。在MPI多进程环境下,与进程间通信相关的主要有:elementsToSend存储向邻居矩阵发送的未知向量x的索引,neighbors存储邻居进程的进程ID,receiveLength存储接收每个邻居进程外区数据的个数,sendLength存储向每个邻居进程发送数据的个数,sendBuffer用于邻居通信时存储向邻居进程发送的未知向量x。
国产申威众核处理器26010是一款由中国自主研发的主从异构平台,每个节点由4个核组和***接口组成,每个核组主要包括1个主核和1个从核阵列,从核阵列由64个从核构成的8行8列的mesh结构。主核和从核都支持256位向量浮点指令扩展;每个从核包含32个寄存器以及64KB用户可控的LDM(Local DeviceMemory,局部存储器),且直接访问本地LDM延迟极小;提供主从核间DMA异步传输机制,且DMA包含多种数据传输模式,其中常用的有单从核模式与行模式,不同的数据传输模式对应不同的数据分布方式,能够实现数据从主存到从核LDM的快速传输;从核阵列内部交互使用寄存器级通信,以一个向量长度为单位,各从核可在其行或列上进行数据广播或数据接收。申威众核处理器26010软硬件参数如表1所示:
表1:申威众核处理器26010软硬件参数
类型 | 参数 |
处理器CPU | SW26010,主频1.45GHZ |
内存容量 | 32GB |
操作*** | Red Hat Enterprise Linux Server release 6.6 |
编译器及链接器 | sw5cc 5.421-sw-485以及sw5f90 5.421-sw-485 |
编程语言及环境 | C、C++、Fortran、MPI、OpenMP、Athread |
申威众核处理器26010具有强大的计算能力,被应用于目前排名世界第一的超级计算机“神威·太湖之光”上,越来越多的重要科学计算软件都在该平台上进行部署。而对于HPCG基准测试程序的计算若仅仅依赖于主核资源,性能将极低,为利用从核计算资源,必然需要对数据结构进行重构,以充分利用申威众核平台强大的计算能力。参考版的CSR数据结构,由于数据分配不连续和不规则,不利于众核平台的优化。
目前,已有Kumahata等人在King超级计算机上,Park等人在MIC平台,和Phillips等人在GPU平台上,进行相关研究,都采用了基于ELLPACK(ELL)格式的改进数据结构来替代参考版中的CSR来实现了高性能的HPCG。由于国产申威众核平台体系结构的特殊性,已有的这些数据结构无法直接应用。
为此,本发明针对“神威·太湖之光”上申威众核平台体系结构的特征以及HPCG算法优化的需要,设计了一套自定义的数据结构,并提供了高效的并行实现方式。
发明内容
本发明解决的问题是:克服现有技术的不足,提供一种适用于国产申威众核平台上HPCG优化的自定义数据结构及其高效实现方法,在国产申威众核平台上,设计和实现适用于HPCG基准测试程序进行优化的数据结构,并提供对应的高效并行方案。
受限于从核LDM空间大小,首先需要依据矩阵元素之间的依赖关系,将属于当前进程的矩阵进行分块处理,以保证在计算过程中,每个块所需要的数据能够刚好存放在LDM中,这样增强了数据局部性,提高了数据的访问效率,减少了从核之间依赖关系,更适合从核并行。然后在分块的基础上,对块行进行图的着色处理,以提高后面计算的并行度。不像分块那样需要数据的移动,块的着色只存在于逻辑层面,这样使得着色策略更加灵活可变。
本发明的一种适应于“神威·太湖之光”上HPCG优化的数据结构,包括:经典ELL格式中的矩阵值vals数组和对应索引idx数组,利用额外的对角线元素diags数组来存放矩阵的对角线元素,还提供了分块着色相关和进程通信相关的数据结构,其中color_reordering存放分块着色之后新的块行顺序,color_info记录每种颜色的块行数量和位置;element_send标识当前进程向其他邻居进程所发送数据的位置信息,element_recv标识当前进程接受来自于其他邻居进程所数据所存放的位置信息;最后,为了减少直接访问主存的次数和支持计算过程中使用寄存器通信机制,分别增加了进程内索引到块内索引转换关系的数据结构loc2blk和外区索引向量的位置映射数据结构pos。通过使用该自定义的数据结构,能够在国产申威众核平台上实现HPCG的高效并行计算。
一种适应于“神威·太湖之光”上HPCG优化的数据结构高效实现方法步骤如下:
第一步,前处理过程,基于矩阵中非零元素的依赖图,在主核上串行的对矩阵进行分块着色相关的重排序操作,构建color_reordering和color_info数据结构;其中color_reordering存放分块着色之后分块的行顺序,color_info记录每种颜色分块的行数量和位置,得到分块着色结果;
第二步,中间处理过程,基于前处理中的分块着色结果,对矩阵值vals数组、对应索引idx数组和对角线元素diags数组实现对应的重排序;同时,对进程内索引idx数组进行块内索引转换,并实时将进程内索引到块内索引的转换关系记录到数据结构loc2blk数据结构中,关于外区索引向量位置映射的pos数组,是伴随着索引转换过程进行动态构建,该过程使用从核组资源进行平行处理;
第三步,后处理过程,根据第一步和第二步的结果,基于分块着色的矩阵数据结构来构建新的进程通信相关的数据结构element_send和element_recv。
所述第二步,索引转换过程中对于索引内区向量的进程内索引,通过取模运算获取块内索引;对于索引外区向量的进程内索引,通过map类型的数据结构loc2blk,来记录和确定进程内索引到块内索引的转换关系。
所述第二步中,外区索引向量位置映射的pos数组构建过程为:该数组的每个元素包括了对应的外区索引向量所在的从核编号以及在该从核上的具体偏移量,并通过位运算合并为一个整型。
所述第二步中,中间过程的使用从核组资源进行平行处理过程:使用申威众核平台的Athread多线程库,依据“块行-行-列”三重循环顺序,对自定义数据结构的中间处理过程进行从核并行,计算任务均衡的分配到64个从核,并混合使用直接和DMA访主存的方式。
所述第三步中,基于分块着色的矩阵数据结构来构建新的进程通信相关的数据结构element_send和element_recv的过程为:同时遍历发送和接受数据所对应的进程内索引位置,对于其中每个进程内索引位置,依据第一步前处理使用的分块规则计算它们分块后的块号,并利用进程内索引与块内索引转换的loc2blk数据结构,获取对应的块内索引位置,然后合并块号和块内索引,从而构成用来标识发送数据索引位置的element_send数组和标识接受数据索引位置的element_recv数组。
本发明与现有技术相比的有益效果在于:本发明基于国产申威众核平台的体系结构,针对HPCG基准测试,设计和高效实现了自定义的数据结构,并对其主要的构建过程进行从核并行化处理,相对于原始数据结构,该结构构造耗时少,能够保证连续的内存分配和对界,有助避免从核直接访问主存和数据竞争冲突,从而减少数据移动,改善数据的时空局部性,提高并行度和带宽的利用率,最终成功应用于HPCG的优化中,对其主要的SpMV和SymGS函数的性能和带宽百分比都取得一致性的加速效果,最高加速比分别约为18.2和17.6,平均加速比分别约为12.2和11.7。
附图说明
图1是在申威众核平台上关于HPCG的自定义数据结构构建过程的基本流程图;
图2是自定义数据结构中矩阵数值的存储重排示例图;
图3是自定义数据结构对应的索引向量重排示例图;
图4是采用自定义数据结构,在申威众核平台上SpMV性能和带宽百分比结果图;
图5是采用自定义数据结构,在申威众核平台上SymGS性能和带宽百分比结果图。
具体实施方式
下面结合附图和示例图对本发明进行详细说明。
整个矩阵,采用ELL格式进行存储,这样能够为数据分配连续的内存和保证数据的对界。使用ELL格式之后,由于每行的元素个数相同,所以可以直接通过计算偏移量来确定矩阵每行的起始,而不必像CSR格式那样通过存储额外的数组来记录每行的起始,从而减少了总的数据访问量。在分块的作用,基于ELL格式的矩阵值和对应索引需要按照其对应的块行进行重排。对于矩阵的值来说,直接按照分块后的行序移动即可。而对于矩阵的索引来说,需要根据所索引向量的处理方式,一般有两种不同的处理方案:
1)如果所索引的向量不按照矩阵分块的方式进行重排,那么只需要对索引进行重排而无需进行转换。
2)如果所索引的向量按照矩阵分块的方式进行重排,那么索引既要进行重排,又要按照重排后的向量顺序进行对应的转换。
不同于以上两种处理方式,本发明在2)的基础上,进一步对转换后的进程内索引进行块内索引转换。块内索引的范围远远小于进程内索引的范围,所以可以用短整型来替代长整型来进行索引压缩。基于转换后的块内索引进行相关的计算,能有助避免从核直接访问主存和数据竞争冲突,实现每个从核独立并行计算,提高带宽利用率。无论矩阵还是向量都在分块的基础上进行了重排,这导致原有的一些进程间通信数据结构也要随之进行重构,主要包括当前进程向其他进程所发送数据的位置信息和当前进程收到其他进程发来数据所存放的位置信息。为了支持计算过程中使用片上寄存器通信功能,本发明的自定义数据结构增加了构建索引向量与从核的位置映射关系数据结构。通过这个映射关系,可以精确计算位置数据来定位每个块所索引的向量所在的从核编号以及在其上的具体偏移量。利用计算得到的位置数据,基于国产申威众核平台提供的寄存器通信机制,每个从核能够同步的并行获取来自于其他从核的数据。
综上所述,自定义的数据结构如下:
主要包括五个部分:1)idx,vals,以及diags用来分别存放基于分块进行重排和转换后的ELL格式的矩阵的索引,值和对角线的数据;color_reorder和color_info分别存放分块着色的结果和不同颜色块的具体信息;loc2blk存放进程内索引到块索引的转换关系;elements_send和element_recv分别存放当前进程向其他进程发送数据的位置信息和当前进程接受来自于其他进程的数据所存放的位置信息;pos存放着当前块所外区索引向量元素的位置映射信息,包括在从核编号及其上的偏移量。
本发明所构造的自定义数据结构的并行方案主要侧重于在分块着色之后,对矩阵值重排,索引转换,以及外区向量位置映射等过程,具体并行方案包括:
(1)以分块为对象进行从核并行,并将块行均衡的分配给64个从核执行。
(2)采用混合策略进行数据传输,即对访问规则的数据采用DMA方式进行主核与从核之间的传输,而对于访问不规则的数据,采用直接访主存的方式。
如图1所示,在申威众核平台上关于HPCG的自定义数据结构构建过程主要分为三个步骤,描述如下:
1)前处理:根据矩阵元素依赖关系图将矩阵分成行块并对其着色处理,以构建color_reordering和color_info数据结构,为后面的其他数据结构的构建进行准备工作,该过程在主核上串行执行。
2)中间过程:利用申威众核平台提供的Athread多线程库,同时对矩阵值重排,索引转换,索引向量位置映射进行从核并行。共有i-j-k三重循环,依次遍历每个块行,各个块行中的每行,以及各行中的每一列。当运行到最内层循环时,首先是对vals和diags进行重排。然后,对原始的进程内索引loc_idx进行块内索引转换。在进程内索引到块内索引的转换过程中,如果所索引的向量属于当前块,就可以直接对进程内索引取模运算来获得块内索引,对应的索引位置称为块行的内区。如果所索引的向量不属于当前块行,则需要使用map类型的数据结构loc2blk来记录和确定进程内索引和块内索引的转换关系,对应的索引位置称为块行的外区。在索引转换的同时,根据块行与从核映射规则,可以确定块行的外区索引向量的从核编号blk_id和偏移量blk_pos,并通过位运算合并成一个数据存放在pos数组里。
3)后处理:构建进程通信所需要的element_send和element_recv数据结构,该过程放在主核上串行执行。在完成所有的块的处理之后,串行地遍历发送和接受数据所对应的进程内索引位置,对于其中每个进程内索引位置,依据前处理使用的分块规则计算它们分块后的块号,并利用进程内索引与块内索引转换的loc2blk数据结构,获取对应的块内索引位置,然后合并块号和块内索引以构成用来标识发送数据索引位置的element_send数组和标识接受数据索引位置的element_recv数组。
从图2所示的自定义数据结构中矩阵值在重排前后变化的示例图中,可以看出原始采用CSR格式数据结构的矩阵值在内存中是不连续的,而基于分块多色重排后的ELL格式的矩阵值在内存中是连续的。整个矩阵值以块行为粒度连接在一起,并且相同颜色的块行相邻存放,构成一个大的块行组,可以并行的利用从核组处理,而块行内部的计算由于数据依赖,将在每个从核上串行处理。图3的自定义数据结构对应的索引向量重排示例图,展示了本发明中索引向量也将按照分块多色重排的结果进行重排。进程层面上,原始向量也分为内外区,内区是属于本进程的数据,而外区存放着所依赖的周围邻居进程的数据。对于内区,类似于矩阵值的重排,将按照分块着色结果进行重排,并且相同颜色的块行存储在相邻位置。对于外区,不需要依据分块着色结果重排,继续保持原有结构。但是,为了后面计算过程利用寄存器通信,外区向量需要与从核进行映射,以确定外区索引向量每个元素所在的从核编号和对应的偏移量。图3顶部表示索引向量的原始数据布局的内区和外区;中间表示的是索引向量数据重构过程,对内区采用分块多色重排,对外区保持不变,同时进行从核映射;底部表示重构后的数据布局,内区按照分块多色排序,外区保持不变。
本发明的测试平台为申威众核平台26010,单个进程的测试规模从最细层网格到最粗层网格分别为128×128×128,64×64×64,32×32×32,16×16×16,测试的函数为HPCG主要核心函数SpMV和SymGS。图4表示从细到粗的四个网格规模上原始数据结构和自定义数据结构的SpMV和SymGS性能对比数据,包括原始SpMV性能,优化SpMV性能,原始SymGS性能,优化SymGS性能。从图4统计的性能数据可以看出,SpMV和SymGS的最高加速比分别约为18.2和17.6,平均加速比分别约为12.2和11.7。同样地,图5表示四个网格规模上使用原始数据结构和自定义数据结构的SpMV和SymGS函数带宽占处理器实测带宽百分比的对比数据,包括原始SpMV百分比,优化SpMV百分比,原始SymGS百分比,优化SymGS百分比。在图5中统计的SpMV和SymGS所占实测带宽百分比中,自定义数据结构取得了和性能加速比一致性结果,最高加速比也分别约为18.2和17.6,最低加速比也分别约为12.2和11.7。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (6)
1.一种适应于“神威·太湖之光”上HPCG优化的数据结构,其特征在于:所述数据结构为自定义数据结构,所述自定义数据结构包括:经典ELL格式中的矩阵值vals数组和对应索引idx数组,利用额外的对角线元素diags数组来存放矩阵的对角线元素,还提供了分块着色相关和进程通信相关的数据结构,其中color_reordering存放分块着色之后新的块行顺序,color_info记录每种颜色的块行数量和位置;element_send标识当前进程向其他邻居进程所发送数据的位置信息,element_recv标识当前进程接受来自于其他邻居进程所数据所存放的位置信息;最后,为了减少直接访问主存的次数和支持计算过程中使用寄存器通信机制,分别增加了进程内索引到块内索引转换的数据结构loc2blk和外区索引向量的位置映射数据结构pos,通过使用该自定义数据结构,能够在国产申威众核平台上实现HPCG的高效并行计算。
2.一种适应于“神威·太湖之光”上HPCG优化的数据结构高效实现方法,其特征在于实现步骤如下:
第一步,前处理过程,基于矩阵中非零元素的依赖图,在主核上串行的对矩阵进行分块着色相关的重排序操作,构建color_reordering和color_info数据结构;其中color_reordering存放分块着色之后分块的行顺序,color_info记录每种颜色分块的行数量和位置,得到分块着色结果;
第二步,中间处理过程,基于前处理中的分块着色结果,对矩阵值vals数组、对应索引idx数组和对角线元素diags数组实现对应的重排序;同时,对索引idx数组进行块内索引转换,并实时将进程内索引与块内索引转换关系记录到loc2blk数据结构中;关于外区索引向量位置映射的pos数组,是伴随着索引转换过程进行动态构建,该索引转换过程使用从核组资源进行平行处理;
第三步,后处理过程,根据第一步和第二步的结果,基于分块着色的矩阵数据结构来构建新的进程通信相关的数据结构element_send和element_recv。
3.根据权利要求2所述的一种适应于“神威·太湖之光”上HPCG优化的数据结构高效实现方法,其特征在于:所述第二步中,索引转换过程为:对于索引内区向量的进程内索引,通过取模运算获取块内索引;对于索引外区向量的进程内索引,通过map类型的数据结构loc2blk,来记录和确定进程内索引到块内索引的转换关系。
4.根据权利要求2所述的一种适应于“神威·太湖之光”上HPCG优化的数据结构高效实现方法,其特征在于:所述第二步中,外区索引向量位置映射pos数组构建过程为:该pos数组的每个元素包括了对应的外区索引向量所在的从核编号以及在该从核上的具体偏移量,并通过位运算合并为一个整型。
5.根据权利要求2所述的一种适应于“神威·太湖之光”上HPCG优化的数据结构高效实现方法,其特征在于:所述第二步中,中间过程使用从核组资源进行平行处理过程:使用申威众核平台的Athread多线程库,依据“块行-行-列”三重循环顺序,对自定义数据结构的中间处理过程进行从核并行,计算任务均衡的分配到64个从核,并混合使用直接和DMA访主存的方式。
6.根据权利要求2所述的一种适应于“神威·太湖之光”上HPCG优化的数据结构高效实现方法,其特征在于:所述第三步中,基于分块着色的矩阵数据结构来构建新的进程通信相关的数据结构element_send和element_recv的过程为:同时遍历发送和接受数据所对应的进程内索引位置,对于其中每个进程内索引位置,依据第一步前处理使用的分块规则计算每种颜色分块后的块号,并利用进程内索引与块内索引转换关系的loc2blk数据结构,获取对应的块内索引位置,然后合并块号和块内索引,构成用来标识发送数据索引位置的element_send数组和标识接受数据索引位置的element_recv数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710353362.2A CN107273094B (zh) | 2017-05-18 | 2017-05-18 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710353362.2A CN107273094B (zh) | 2017-05-18 | 2017-05-18 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273094A CN107273094A (zh) | 2017-10-20 |
CN107273094B true CN107273094B (zh) | 2020-06-16 |
Family
ID=60064024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710353362.2A Expired - Fee Related CN107273094B (zh) | 2017-05-18 | 2017-05-18 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107273094B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446253B (zh) * | 2018-03-28 | 2021-07-23 | 北京航空航天大学 | 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法 |
CN110516194B (zh) * | 2018-08-15 | 2021-03-09 | 北京航空航天大学 | 基于异构众核处理器的格点量子色动力学并行加速方法 |
CN109002659B (zh) * | 2018-09-07 | 2020-08-28 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN109491791B (zh) * | 2018-11-09 | 2021-11-19 | 华东师范大学 | 基于申威众核处理器的nsga-ii的主从增强式运行方法及装置 |
CN109828790B (zh) * | 2019-01-31 | 2020-10-20 | 上海赜睿信息科技有限公司 | 一种基于申威异构众核处理器的数据处理方法和*** |
CN112416825B (zh) * | 2019-08-21 | 2022-10-04 | 无锡江南计算技术研究所 | 面向异构众核基于空间重排的数据传输方法 |
CN110766136B (zh) * | 2019-10-16 | 2022-09-09 | 北京航空航天大学 | 一种稀疏矩阵与向量的压缩方法 |
CN110942504B (zh) * | 2019-10-30 | 2021-07-27 | 中国科学院软件研究所 | 一种众核平台上面向规则网格问题的结构化着色方法 |
CN111104765B (zh) * | 2019-12-24 | 2021-08-17 | 清华大学 | 基于神威架构的气体动理学算法优化方法 |
CN111428192A (zh) * | 2020-03-19 | 2020-07-17 | 湖南大学 | 用于优化高性能计算构架稀疏矩阵向量乘的方法和*** |
CN111368484B (zh) * | 2020-03-19 | 2022-04-15 | 山东大学 | 基于神威架构的宇宙n体数值模拟优化方法及*** |
CN111444134A (zh) * | 2020-03-24 | 2020-07-24 | 山东大学 | 分子动力学模拟软件的并行pme的加速优化方法及*** |
CN113553288B (zh) * | 2021-09-18 | 2022-01-11 | 北京大学 | 针对hpcg基准测试的两层分块多色并行优化方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群***采用MPI和OpenMP混合并行提高计算速度的方法 |
-
2017
- 2017-05-18 CN CN201710353362.2A patent/CN107273094B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群***采用MPI和OpenMP混合并行提高计算速度的方法 |
Non-Patent Citations (2)
Title |
---|
"10M-Core Scalable Fully-Implicit Solver for Nonhydrostatic Atmospheric Dynamics";Chao Yang et.al.;《2016 International Conference for High Performance Computing, Networking, Storage and Analysis》;20161130;全文 * |
"Efficient Shared-Memory Implementation of High-Performance Conjugate Gradient Benchmark and Its Application to Unstructured Matrices";Jongsoo Park et.al.;《2014 International Conference for High Performance Computing, Networking, Storage and Analysis》;20141231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107273094A (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273094B (zh) | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 | |
Hou et al. | Fast segmented sort on gpus | |
Hoshino et al. | CUDA vs OpenACC: Performance case studies with kernel benchmarks and a memory-bound CFD application | |
Koanantakool et al. | Communication-avoiding parallel sparse-dense matrix-matrix multiplication | |
Cevahir et al. | High performance conjugate gradient solver on multi-GPU clusters using hypergraph partitioning | |
Graham et al. | Cheetah: A framework for scalable hierarchical collective operations | |
CN108509270B (zh) | 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法 | |
CN103761215B (zh) | 基于图形处理器的矩阵转置优化方法 | |
CN109978171B (zh) | 一种基于云计算的Grover量子仿真算法优化方法 | |
CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
US20200327417A1 (en) | Ir drop prediction with maximum convolutional neural network | |
Bøgh et al. | Work-efficient parallel skyline computation for the GPU | |
CN102193830A (zh) | 面向众核环境的分治映射/归约并行编程模型 | |
Chen et al. | ReGraph: Scaling graph processing on HBM-enabled FPGAs with heterogeneous pipelines | |
Huang et al. | IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency | |
CN111079078B (zh) | 面向结构网格稀疏矩阵的下三角方程并行求解方法 | |
Augonnet et al. | A hierarchical fast direct solver for distributed memory machines with manycore nodes | |
Sørensen | High-performance matrix-vector multiplication on the GPU | |
Dou et al. | A fine-granularity scheduling algorithm for parallel XDraw viewshed analysis | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Odemuyiwa et al. | Accelerating sparse data orchestration via dynamic reflexive tiling | |
Li et al. | Reducing redundancy in data organization and arithmetic calculation for stencil computations | |
Fu et al. | Pangulu: A scalable regular two-dimensional block-cyclic sparse direct solver on distributed heterogeneous systems | |
Moustafa et al. | 3D cartesian transport sweep for massively parallel architectures with PARSEC | |
CN116755878A (zh) | 程序运行方法、装置、设备、介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200616 |