一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法技术

技术编号:15540643 阅读:129 留言:0更新日期:2017-06-05 10:25
本发明专利技术公开了一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,由于稀疏矩阵的非零元分布很不规则,该方法设计了静态、动态两种不同的任务划分方法,以适应不同的稀疏矩阵;提出了一套动静态的缓存机制,以提升向量x的访存命中率;提出了一套自适应的优化方法,针对输入的稀疏矩阵,可以动态选出最优的执行参数,以提升其运行性能。本发明专利技术采用Matrix Market矩阵集中的16个稀疏矩阵进行测试,相比申威处理器单主核运行版SpMV最高有10倍左右加速,平均加速比为6.51。

A sparse matrix vector multiplication and diversity core implementation method based on homemade Shen 26010 processor

The invention discloses a sparse matrix vector domestic Shenwei 26010 processor multiplication based on multi-core heterogeneous method, the sparse matrix of nonzero element distribution is irregular, the design method of the static and dynamic two different partitioning method, in order to adapt to the different sparse matrix; put forward a set of dynamic cache in order to improve the mechanism of static, vector x memory hit rate; proposed an adaptive optimization method, for sparse matrix input, can select the optimal parameters of dynamic execution, in order to improve its performance. The invention adopts 16 Matrix sparse matrix Market matrix concentration tested, compared to domestic Shenwei processor single core running version of SpMV is about 10 times the maximum acceleration, the average speedup of 6.51.

【技术实现步骤摘要】
一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法
本专利技术涉及一种稀疏矩阵的核心计算稀疏矩阵向量乘SpMV(SparseMatrix-VectorMultiplication)在国产申威众核处理器上的实现方法,属于高性能数值计算
,主要用于气象、湍流模拟、天体物理、油藏模拟等科学计算和实际应用中。
技术介绍
稀疏矩阵向量乘(SpMV)y=A*x是科学与工程计算中一个非常重要的计算内核,其性能往往对应用整体性能有着很大的影响。SpMV是属于访存密集型的,算法中的浮点计算与存储访问的比率很低,且稀疏矩阵非零元素分布很不规则。传统的CSR(CompressedSparseRow)格式的SpMV实现中向量x为间接访问且访问不规则,可重用性差,给SpMV的高效实现带来很大挑战。目前超级计算机的体系结构已经从多核向众核乃至异构众核发展,然而访存墙问题却越来越突出,带宽受限型操作的峰值性能也越来越低,并且实现难度逐步增大。由我国国家并行计算机工程技术研究中心研制的新一代申威异构众核处理器已经面世,其峰值性能为3TFlops/s,聚合访存带宽为130GB/s,相比计算能力,其访存能力偏弱,给稀疏矩阵向量乘的高效实现带来了巨大的挑战。稀疏矩阵向量乘作为迭代解法器的核心计算如果能够提高运行速度,整个计算的运行效率将会大大改善,在实际应用中有着十分重要的作用。稀疏矩阵是指矩阵A的元素大部分是零,而非零元素所占比例非常小,往往小于总数的1%。通过只存储和操作这些非零元,可以减少存储的内存,并大幅减少乘法次数,进而提高整体性能。稀疏矩阵存储时,除了存储非零元外,还要记录非零元在矩阵中所占的位置。CSR格式是目前使用最广泛的一种存储格式。CSR格式需要存储稀疏矩阵A的每个非零元素的值,非零元所在的列和每行第1个非零元的索引,即需要3个数组(其中矩阵A是m×n矩阵,有nz个非零元),如下所示:·val[nz],记录每个非零元的值;·col[nz],记录每个非零元所在的列;·ptr[m+1],记录每行的第1个非零元在数组val[nz]、col[nz]中的索引,其中ptr[m]=nz。稀疏矩阵向量乘的形式为y=Ax,其中A为稀疏矩阵,x,y为稠密向量。CSR矩阵存储格式的SpMV核心代码见图1,从图1中可以看出,矩阵A中每个元素都要跟x中相应元素相乘,x的访问是间接的和不规则的,所以运行效率很低。稀疏矩阵向量乘在异构众核平台的实现难度很大,一般会面临核间负载均衡、x访存开销太大、不同稀疏矩阵访存行为差异很大、带宽利用率很差等问题。在SpMV的异构众核实现及优化方面,前人已经做了很多的工作,但主要集中在商用的GPU和MIC处理器。从2008年开始,基于GPU的SpMV工作大量涌现,这些工作主要通过存储格式、重排、压缩、自适应调优等技术解决带宽利用率、负载均衡、并行度等问题。先后提出了HYB、ELLPACK-R、sliced-ELLPACK、blockedELLPACK、BRC、BCCOO等新型存储格式;研究了稀疏矩阵的重排技术及压缩格式,以减少访存开销;研究了GPU平台体系结构特征、稀疏矩阵存储格式、稀疏矩阵集之间的关系,并给出自动选择模型;另外还研究了自动调优技术,以根据稀疏矩阵的特征选择最优参数并获取较优的性能。2011年Intel公司的异构众核处理器XeonPhi发布,随后Liu等人提出了新的ESB格式,该格式可有效改善XeonPhi上SpMV向量化性能,并能减少访存开销,另外还提出了混合的动态调度器以改善并行任务的负载均衡性;Tang等人通过新的存储格式VHCC、二维不规则任务划分、自动调优技术等优化了一类scale-free稀疏矩阵SpMV的性能。另外还有一类工作涉及到多个异构众核处理器,Kreutzer等人主要从改善向量化性能的角度提出新的存储格式SELL-C-σ;Liu等人提出了CSR5存储格式用于改善不规则稀疏矩阵SpMV的性能,在多个异构众核处理器上实现并与现有最优工作进行了对比。由我国国家并行计算机工程技术研究中心研制的新一代申威异构众核处理器已经面世,其是一款具有自主知识产权的处理器,与目前现有的商用众核处理器均不同。每个核组由控制核心(ManagementProcessingElement,MPE,又称主核)、计算核心簇(ComputingProcessingElementsclusters,CPEcluster,又称从核)(采用8*8mesh结构)、协议处理部件(PPU)和存储控制器(MemoryController,MC)组成。平均每个核组的访存带宽为32.5GB/s,实测带宽为27.5GB/s。每个从核拥有64KB的缓存空间LDM(LocalDirectMemory),可以通过DMA(DirectMemoryAccess)实现主存和LDM间的高速传输。目前该处理器刚刚发布,还未出现基于该处理器的SpMV异构众核并行的相关工作,也没有相似报道本专利技术主要是填补这个空白。
技术实现思路
本专利技术解决的技术问题是:针对全新的具有自主知识产权的国产申威处理器,提出一种基于国产申威26010处理器的稀疏矩阵向量乘(SpMV)异构众核实现方法,解决了CSR格式SpMV计算时从核之间任务的负载不均衡、访存带宽利用率、不同类型稀疏矩阵的自适应性能优化等问题,从而整体提升了稀疏矩阵向量乘的性能。本专利技术的技术方案为,一种基于国产申威26010处理器的SpMV异构众核实现方法,包括:自适应优化、任务划分和向量x访存三个步骤,首先针对输入的稀疏矩阵进行SpMV计算时的三个参数,即调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置进行自适应优化,从而获得该稀疏矩阵的SpMV最优性能;然后根据优化后的调度方式进行任务划分;最后基于优化后的调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置三个参数进行从核计算,每个从核计算时对向量x访存采用动静态的访存机制,从而实现基于国产申威26010处理器的SpMV异构众核的过程。(1)任务划分方法申威26010众核处理器每个核组包括1个主核和64个从核,为了充分利用从核核组的计算资源,将计算任务尽可能的分给从核,主核主要负责前处理和控制。对于稀疏矩阵而言,任务划分方法有两种:一维划分和二维划分。二维划分时多个从核会同时更新y向量的一部分,需要加锁处理,从而导致额外的开销。对规则稀疏矩阵而言,每行的非零元个数较少,LDM可以容纳至少一行计算所需的元素,所以我们采用一维的任务划分方法。如果稀疏矩阵一行的非零元太多,导致LDM空间不能一次容纳一行的元素进行计算,那么将采用主核进行计算。一维划分方式又有两种:静态任务划分。将稀疏矩阵按行等分,每个从核计算m/64行,从核内部循环执行,每次只计算稀疏矩阵的srow行,其中srow为当前申威26010众核处理器一个从核的LDM可以容纳的最多稀疏行大小。动态任务划分。将稀疏矩阵srow行的计算视为一个子任务,形成任务池。每个从核一次只负责一个子任务,执行结束后再取下一个子任务进行计算。静态任务划分方式每个从核执行的稀疏矩阵行数基本相同,动态任务划分方式时每个从核执行的稀疏矩阵行数根据当前从核的执行情况本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201710023923.html" title="一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法原文来自X技术">基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法</a>

【技术保护点】
一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于包括:自适应优化、任务划分和向量x访存三个步骤,首先针对输入的稀疏矩阵进行稀疏矩阵向量乘SpMV计算时的三个参数,即调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置进行自适应优化,从而获得该稀疏矩阵的SpMV最优性能;然后根据优化后的调度方式进行任务划分;最后基于优化后的调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置三个参数进行从核计算,每个从核计算时对向量x访存采用动静态的访存机制,从而实现基于国产申威26010处理器的SpMV异构众核的过程。

【技术特征摘要】
1.一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于包括:自适应优化、任务划分和向量x访存三个步骤,首先针对输入的稀疏矩阵进行稀疏矩阵向量乘SpMV计算时的三个参数,即调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置进行自适应优化,从而获得该稀疏矩阵的SpMV最优性能;然后根据优化后的调度方式进行任务划分;最后基于优化后的调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置三个参数进行从核计算,每个从核计算时对向量x访存采用动静态的访存机制,从而实现基于国产申威26010处理器的SpMV异构众核的过程。2.根据权利要求1所述的基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于:所述自适应优化过程如下:针对每个输入稀疏矩阵,选取最适用的三个参数:调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置,首先选择最优的向量x的静态缓冲区大小,起始为128,最大值为max_x_size,每128递增;然后选取最优的向量x静态缓冲区读取的起始位置;最后选择最优的调度方式,所有参数的选择都采用预先运行SpMV的相应函数并选取最小执行时间对应的参数的方法来进行。3.根据权利要求1所述的基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于:所述任务划分如下:对于稀疏矩阵,采用一维划分方式,所述一维划分方式又有两种:静态任务划分和动态任务划分;所述两种方式分别适用于不同类型的稀疏矩阵;静态任务划分适用于每行非零元分布比较均匀,且向量x的访存行为差异不大的稀疏矩阵;动态任务划分则相反;所述静态任务划分是将稀疏矩阵按行等分,每个从核计算m/64...

【专利技术属性】
技术研发人员:刘芳芳杨超吴长茂
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1