[发明专利]一种适应于“神威·太湖之光”上HPCG优化的数据结构及其高效实现方法有效
申请号: | 201710353362.2 | 申请日: | 2017-05-18 |
公开(公告)号: | CN107273094B | 公开(公告)日: | 2020-06-16 |
发明(设计)人: | 敖玉龙;杨超;刘芳芳;尹万旺;魏迪;袁欣辉;蒋丽娟 | 申请(专利权)人: | 中国科学院软件研究所;无锡江南计算技术研究所 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/32;G06F9/38;G06F17/16 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;顾炜 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 适应 神威 太湖 hpcg 优化 数据结构 及其 高效 实现 方法 | ||
本发明公开了一种适应于“神威·太湖之光”上HPCG优化的数据结构及其高效实现方法,基于“神威·太湖之光”上的申威众核处理器体系结构特征和HPCG算法优化的需要,使用了改进ELL格式的数据结构对原始数据结构进行替换,除了包含矩阵数据本身的数据结构,还支持分块着色,索引转换,进程通信,以及向量位置映射等相关的数据结构,并且中间处理过程采用了申威众核平台提供的Athread多线程库进行并行,最终应用于HPCG算法的核心函数SpMV和SymGS优化过程中,相应的性能和带宽百分比取得了一致性的加速比,最高分别为18.2和17.6。
技术领域
本发明所涉及自定义数据结构及其高效实现方法,支撑了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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所;无锡江南计算技术研究所,未经中国科学院软件研究所;无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710353362.2/2.html,转载请声明来源钻瓜专利网。