CN106775594B - 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 - Google Patents
一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 Download PDFInfo
- Publication number
- CN106775594B CN106775594B CN201710023923.2A CN201710023923A CN106775594B CN 106775594 B CN106775594 B CN 106775594B CN 201710023923 A CN201710023923 A CN 201710023923A CN 106775594 B CN106775594 B CN 106775594B
- Authority
- CN
- China
- Prior art keywords
- sparse matrix
- vector
- core
- task
- static
- 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.)
- Active
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,由于稀疏矩阵的非零元分布很不规则,该方法设计了静态、动态两种不同的任务划分方法,以适应不同的稀疏矩阵;提出了一套动静态的缓存机制,以提升向量x的访存命中率;提出了一套自适应的优化方法,针对输入的稀疏矩阵,可以动态选出最优的执行参数,以提升其运行性能。本发明采用Matrix Market矩阵集中的16个稀疏矩阵进行测试,相比申威处理器单主核运行版SpMV最高有10倍左右加速,平均加速比为6.51。
Description
技术领域
本发明涉及一种稀疏矩阵的核心计算稀疏矩阵向量乘SpMV(Sparse Matrix-Vector Multiplication)在申威众核处理器上的实现方法,属于高性能数值计算技术领域,主要用于气象、湍流模拟、天体物理、油藏模拟等科学计算和实际应用中。
背景技术
稀疏矩阵向量乘(SpMV)y=A*x是科学与工程计算中一个非常重要的计算内核,其性能往往对应用整体性能有着很大的影响。SpMV是属于访存密集型的,算法中的浮点计算与存储访问的比率很低,且稀疏矩阵非零元素分布很不规则。传统的CSR(CompressedSparse Row)格式的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、blocked ELLPACK、BRC、BCCOO等新型存储格式;研究了稀疏矩阵的重排技术及压缩格式,以减少访存开销;研究了GPU平台体系结构特征、稀疏矩阵存储格式、稀疏矩阵集之间的关系,并给出自动选择模型;另外还研究了自动调优技术,以根据稀疏矩阵的特征选择最优参数并获取较优的性能。
2011年Intel公司的异构众核处理器Xeon Phi发布,随后Liu等人提出了新的ESB格式,该格式可有效改善Xeon Phi上SpMV向量化性能,并能减少访存开销,另外还提出了混合的动态调度器以改善并行任务的负载均衡性;Tang等人通过新的存储格式VHCC、二维不规则任务划分、自动调优技术等优化了一类scale-free稀疏矩阵SpMV的性能。
另外还有一类工作涉及到多个异构众核处理器,Kreutzer等人主要从改善向量化性能的角度提出新的存储格式SELL-C-σ;Liu等人提出了CSR5存储格式用于改善不规则稀疏矩阵SpMV的性能,在多个异构众核处理器上实现并与现有最优工作进行了对比。
由我国国家并行计算机工程技术研究中心研制的新一代申威异构众核处理器已经面世,其是一款具有自主知识产权的处理器,与目前现有的商用众核处理器均不同。每个核组由控制核心(Management Processing Element,MPE,又称主核)、计算核心簇(Computing Processing Elements clusters,CPE cluster,又称从核)(采用8*8mesh结构)、协议处理部件(PPU)和存储控制器(Memory Controller,MC)组成。平均每个核组的访存带宽为32.5GB/s,实测带宽为27.5GB/s。每个从核拥有64KB的缓存空间LDM(LocalDirect Memory),可以通过DMA(Direct Memory Access)实现主存和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行的计算视为一个子任务,形成任务池。每个从核一次只负责一个子任务,执行结束后再取下一个子任务进行计算。
静态任务划分方式每个从核执行的稀疏矩阵行数基本相同,动态任务划分方式时每个从核执行的稀疏矩阵行数根据当前从核的执行情况动态调整,总稀疏矩阵行数可能大不相同。这两种方式分别适用于不同类型的稀疏矩阵。
基于这两种任务划分方式,设计了两种任务调度方式:静态调度和动态调度。其中动态调度方式需要各个从核间协同,开销比较大,所以对其进行了优化,只在第一次运行SpMV时采用动态调度,并记录每个计算核心所分配的任务,在以后的执行过程中,均按照这种方式来进行任务分配,将其称为动-静态任务调度。
这种调度方式是指第一次运行SpMV采用动态调度,并记录每个从核负责的任务,在第二次及以后的执行中,直接按照第一次的任务分配方式进行处理。所以称为动-静态任务调度。
(2)x访存机制
稀疏矩阵向量乘中x是间接访存,访存行为很不规则,在申威众核处理器上,x的访存是优化的重点,直接对其最终性能起到决定性的影响。本发明采用动静态的访存机制。设置向量x的两块缓存区,分别为动态的和静态的,静态缓存区加载一次重复运行,动态缓存区根据实际运行情况多次加载,具体见图3。另外加载静态缓存区的初始位置,对SpMV的性能也有一些影响。初始位置有两种选择:1)从当前从核计算的行块的起始位置读取,记为start-x-row;2)从当前从核计算行块所需的第一个访问的向量x的元素处读取,记为start-x-current。
(3)自适应优化
由于实际应用中稀疏矩阵千差万别,非零元的分布方式各不相同。对每一个稀疏矩阵而言,任务分配方式、静态缓存大小、静态缓存加载的起始位置等均对其性能有着很大的影响,有必要针对该稀疏矩阵选择最优的参数组合。可选的参数如下:
●调度方式。有两种选择:静态调度和动静态结合的调度方式。
●静态缓冲区读取的起始位置。
●静态缓冲区的大小,其最大值受LDM限制,每个矩阵均不同,初始值选为128,每128递增。
为了减少搜索开销,本发明对Matrix Market矩阵集中57个不同类型的稀疏矩阵选择不同参数的性能结果进行分析,发现任务调度方式、静态缓存区读取的起始位置均与静态缓存区的大小关系不大,据此本发明确定了如图4的搜索顺序。
该搜索过程需要大约3-22个SpMV的时间,但是对于实际应用来说,这个过程可以预先进行,以便于在以后的迭代过程中选用性能最高的SpMV实现。
本发明与现有技术相比的有益效果:
(1)对不同的稀疏矩阵采用不同的任务划分和分配方式。这样可根据稀疏矩阵特点选用更合适的任务划分和分配方式,从而提升整体性能。
(2)SpMV操作中对向量x的访存是不连续的,而且从核直接访问主存的开销很大,约需200多拍,这给申威处理器的SpMV异构众核高效实现带来了巨大的挑战。为了能够提升访存带宽利用率,减少向量x的总访存量,本发明利用了稀疏矩阵的局部性特征设计了动静态的x缓存机制,大幅减少了总访存量,提升了性能。
(3)对SpMV实现设置3个可调参数,对输入稀疏矩阵开展自适应优化,以选取最优的执行参数,进而提升SpMV性能。
(4)由于动态调度方式的开销较大,本发明并未直接使用,而是对其进行了优化,设计了一种新的动-静态的调度方式,既可以实现从核间的负载均衡,又减少了调度开销。
附图说明
图1CSR矩阵存储格式的SpMV核心代码;
图2为本发明提出的从核版SpMV实现示意图;
图3为本发明中向量x的动静态缓冲区加载流程示意图;
图4为本发明中自适应调优时最优参数搜索顺序图;
图5从核核组SpMV性能。
具体实施方式
下面结合实施例对本发明进行详细说明。
如图1所示,主核版SpMV实现过程如下:
(1)对稀疏矩阵每行进行循环计算,首先获得当前行号并判断,如果当前行号小于稀疏矩阵总行数,则进行下一步;
(2)对每行稀疏的所有非零元进行遍历,通过数组访问获得当前非零元的值信息以及列下标信息,并根据列下标信息得到向量x的值,二者相乘后并累加,即可得当前行的计算结果;
(3)将计算结果赋值给向量y。
如图2所示,本发明的SpMV具体实现如下:
(1)计算该稀疏矩阵每行拥有的最大非零元个数maxnz。
(2)计算每个从核每次可计算的行数srow及x静态缓冲区最大值max_x_size。每个从核64KB空间分配如下:其中24KB用于存储x,y,ptr和其他局部变量,40KB用于存放val和col,由于val为双精度数据类型,col为整型数据类型,共占12字节,所以40KB空间最多只能存储40*1024/12个val和col元素,即3413个。那么srow=3413/maxnz,其中maxnz为该稀疏矩阵每行最大的非零元个数。通过公式(24*1024-32*8-srow*8-(srow+1)*8-2048)/8计算max_x_size。
(3)搜索最优参数。对每个测试矩阵,采用图4所示的搜索技术搜索该矩阵的最优执行参数,包括任务划分方式、x静态缓冲区最优大小、向量x静态缓冲区读取的起始位置。
(4)任务调度。如果选用静态任务调度,直接通过矩阵总行数和当前计算的总从核数进行任务划分,每个从核计算其中一部分,并行计算任务按照从核号顺序排列。如果选用动-静态任务调度,在第一次调用SpMV函数时,将稀疏矩阵所有行按照srow行为一组进行划分,每组为一个计算任务,形成任务池。每个从核从任务池中取任务进行计算,当且仅当当前任务计算完成时再读取下一块任务,具体任务分派的方式动态决定,且每个从核记录自己负责的每个任务的起始行数以及总任务数。在第二次以后调用SpMV函数时,每个从核读取之前记录的每个任务进行计算。
(5)计算。每个从核循环计算自己所负责的任务。对于每个子任务,首先通过DMA从内存读取数组col,ptr,val的元素到LDM空间,并通过图3所示方法加载x进行计算。计算结束后,将结果y通过DMA传回主存。
其中步骤(5)的向量x元素加载方法如图3所示,具体如下:
1)通过col数组得到当前所需x的下标。
2)判断当前所需x是否位于静态缓冲区,如果是,直接读取并进行计算。
3)如果不是,则判断x的动态缓冲区是否加载。如果已经加载,判断当前所需x是否位于动态缓冲区中,如果是,直接读取并进行计算。如果不是,从当前所需x处加载动态缓冲区,所需x即为该动态缓冲区的第一个元素,读取并计算。
其中步骤(3)的自适应搜索方法如图4所示,具体如下:
1)搜索x最优静态缓冲区大小。初始值为128,最大为max_x_size,每128递增。通过比较静态缓冲区大小为上述值时SpMV的运行时间,选取最小运行时间对应的静态缓冲区大小即为x最优静态缓冲区大小。
2)搜索读取x的最优起始位置。起始位置有两种选择,分别设置并运行,选取运行时间最短的起始位置。
3)搜索最优任务划分方法。分别设置静态和动态任务划分方法,并比较二者的运行时间,选择最小运行时间对应的方法。
采用以上介绍的技术,用神威太湖之光测试平台进行验证。
测试平台信息如下:申威26010异构众核处理器,主从架构,从核组为8*8的mesh结构,LDM空间为64KB,采用sw5cc编译器进行编译。
测试矩阵集采用国际上著名的Matrix Market稀疏矩阵集中的矩阵进行测试,本发明选取了16个测试矩阵,其矩阵信息见表1:
表1矩阵信息表
编号 | 矩阵名字 | 矩阵行数 | 矩阵列数 | 非零元数 |
1 | bcsstk17 | 10974 | 10974 | 428650 |
2 | bcsstk28 | 4410 | 4410 | 219024 |
3 | raefsky2 | 3242 | 3242 | 294276 |
4 | linverse | 11999 | 11999 | 95977 |
5 | cant | 62451 | 62451 | 4007383 |
6 | s3dkq4m2 | 90449 | 90449 | 4820891 |
7 | fv2 | 9801 | 9801 | 87025 |
8 | nemeth01 | 9506 | 9506 | 725054 |
9 | LF10000 | 19998 | 19998 | 99982 |
10 | af_0_k101 | 503625 | 503625 | 17550675 |
11 | cavity20 | 4562 | 4562 | 138187 |
12 | ecology1 | 1000000 | 1000000 | 4996000 |
13 | epb3 | 84617 | 84617 | 463625 |
14 | qa8fk | 66127 | 66127 | 1660579 |
15 | obstclae | 40000 | 40000 | 197608 |
16 | af_shell3 | 504855 | 504855 | 17588875 |
分别实现了CSR格式在主核MPE和从核组CPE的SpMV操作,并进行了性能对比,结果见表2和图5,从中可以看出测试的矩阵相对主核版均有不同程度的性能提升,最高可达10倍多,最低也有4倍多,平均加速比为6.51倍。
表2从核核组SpMV性能结果
总之,本发明设计了静态、动态两种不同的任务划分方法,以适应不同的稀疏矩阵;提出了一套动静态的缓存机制,以提升向量x的访存命中率;提出了一套自适应的优化方法,针对输入的稀疏矩阵,可以动态选出最优的执行参数,以提升其运行性能。本发明采用Matrix Market矩阵集中的16个稀疏矩阵进行测试,相比申威处理器单主核运行版SpMV最高有10倍左右加速,平均加速比为6.51。
本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (4)
1.一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于包括:自适应优化、任务划分和向量x访存三个步骤,首先针对输入的稀疏矩阵进行稀疏矩阵向量乘SpMV计算时的三个参数,即调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置进行自适应优化,从而获得该稀疏矩阵的SpMV最优性能;然后根据优化后的调度方式进行任务划分;最后基于优化后的调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置三个参数进行从核计算,每个从核计算时对向量x访存采用动静态的访存机制,从而实现基于申威26010处理器的SpMV异构众核的过程;
其中,所述自适应优化过程如下:
针对每个输入稀疏矩阵,选取最适用的三个参数:调度方式、向量x的最优静态缓冲区大小、向量x静态缓冲区读取的起始位置,首先选择最优的向量x的静态缓冲区大小,起始为128,最大值为max_x_size,每128递增;然后选取最优的向量x静态缓冲区读取的起始位置;最后选择最优的调度方式,所有参数的选择都采用预先运行SpMV的相应函数并选取最小执行时间对应的参数的方法来进行;
所述任务划分如下:
对于稀疏矩阵,采用一维划分方式,所述一维划分方式又有两种:静态任务划分和动态任务划分;所述两种方式分别适用于不同类型的稀疏矩阵;静态任务划分适用于每行非零元分布比较均匀,且向量x的访存行为差异不大的稀疏矩阵;动态任务划分则相反;
所述静态任务划分是将稀疏矩阵按行等分,每个从核计算m/64行,从核内部循环执行,每次只计算稀疏矩阵的srow行,其中srow为当前申威26010众核处理器一个从核的LDM可以容纳的最多稀疏行大小;所述静态任务划分方式每个从核执行的稀疏矩阵行数基本相同;
所述动态任务划分是将稀疏矩阵中的srow行的计算视为一个子任务,形成任务池,每个从核一次只负责一个子任务,执行结束后再取下一个子任务进行计算;所述动态任务划分方式时每个从核执行的稀疏矩阵的行数根据当前从核的执行情况动态调整,每个从核执行的稀疏矩阵的行数可能大不相同。
2.根据权利要求1所述的基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于:针对静态任务划分和动态任务划分,设计了动-静态任务调度方式,即只在第一次运行SpMV时采用动态调度,记录每个计算核心所分配的任务,在第二次及以后的SpMV执行中,均按照第一次的任务分配方式进行处理,称为动-静态任务调度。
3.根据权利要求1所述的基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于:所述向量x访存机制为:在申威26010众核处理器上,采用动静态的访存机制,设置向量x的两块缓存区,分别为动态缓存区和静态缓存区,静态缓存区加载一次后重复运行,动态缓存区在静态缓存区没有命中时使用,动态缓存区根据实际运行情况多次加载,这样充分利用稀疏矩阵非零元的局部性,提高带宽利用率。
4.根据权利要求1所述的基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,其特征在于:所述起始位置有两种选择:第一,从当前从核计算的行块的起始位置读取,记为start-x-row;第二,从当前从核计算行块所需的第一个访问的向量x的元素处读取,记为start-x-current,不同的稀疏矩阵将采用不同的起始位置以提升性能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710023923.2A CN106775594B (zh) | 2017-01-13 | 2017-01-13 | 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710023923.2A CN106775594B (zh) | 2017-01-13 | 2017-01-13 | 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775594A CN106775594A (zh) | 2017-05-31 |
CN106775594B true CN106775594B (zh) | 2019-03-19 |
Family
ID=58948248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710023923.2A Active CN106775594B (zh) | 2017-01-13 | 2017-01-13 | 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775594B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446253B (zh) * | 2018-03-28 | 2021-07-23 | 北京航空航天大学 | 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法 |
CN109145255B (zh) * | 2018-06-11 | 2022-03-29 | 山东省计算中心(国家超级计算济南中心) | 一种稀疏矩阵lu分解行更新的异构并行计算方法 |
CN110516194B (zh) * | 2018-08-15 | 2021-03-09 | 北京航空航天大学 | 基于异构众核处理器的格点量子色动力学并行加速方法 |
CN109002659B (zh) * | 2018-09-07 | 2020-08-28 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN109445850A (zh) * | 2018-09-19 | 2019-03-08 | 成都申威科技有限责任公司 | 一种基于申威26010处理器的矩阵转置方法及系统 |
CN109871512B (zh) * | 2019-01-27 | 2020-05-22 | 中国人民解放军国防科技大学 | 面向异构融合体系结构的矩阵乘加速方法 |
CN112540718A (zh) * | 2019-09-23 | 2021-03-23 | 无锡江南计算技术研究所 | 面向申威众核架构的稀疏矩阵存储方法 |
CN110929850A (zh) * | 2019-11-26 | 2020-03-27 | 国家超级计算无锡中心 | 基于申威处理器的深度学习算子自动优化系统及方法 |
CN111428192A (zh) * | 2020-03-19 | 2020-07-17 | 湖南大学 | 用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 |
CN112148361B (zh) * | 2020-08-27 | 2022-03-04 | 中国海洋大学 | 一种用于处理器加密算法移植的方法及系统 |
CN113360188B (zh) * | 2021-05-18 | 2023-10-31 | 中国石油大学(北京) | 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 |
CN113704691B (zh) * | 2021-08-26 | 2023-04-25 | 中国科学院软件研究所 | 一种申威众核处理器的小规模对称矩阵并行三对角化方法 |
CN116167304B (zh) * | 2023-04-23 | 2023-07-25 | 山东省计算中心(国家超级计算济南中心) | 基于神威架构的油藏数值模拟gmres优化方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法 |
CN104636273A (zh) * | 2015-02-28 | 2015-05-20 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364739B2 (en) * | 2009-09-30 | 2013-01-29 | International Business Machines Corporation | Sparse matrix-vector multiplication on graphics processor units |
CN102141976B (zh) * | 2011-01-10 | 2013-08-14 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
EP2657842B1 (en) * | 2012-04-23 | 2017-11-08 | Fujitsu Limited | Workload optimization in a multi-processor system executing sparse-matrix vector multiplication |
CN103336758B (zh) * | 2013-06-29 | 2016-06-01 | 中国科学院软件研究所 | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 |
CN103399841A (zh) * | 2013-07-31 | 2013-11-20 | 清华大学 | 基于gpu的稀疏矩阵lu分解方法 |
CN103984527B (zh) * | 2014-04-01 | 2017-12-15 | 杭州电子科技大学 | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
-
2017
- 2017-01-13 CN CN201710023923.2A patent/CN106775594B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法 |
CN104636273A (zh) * | 2015-02-28 | 2015-05-20 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106775594A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775594B (zh) | 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 | |
CN111176832B (zh) | 基于内存计算框架Spark的性能优化和参数配置方法 | |
Gharaibeh et al. | Efficient large-scale graph processing on hybrid CPU and GPU systems | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
CN108108245B (zh) | 一种云平台宽节点科学工作流的混合型调度方法及系统 | |
CN109978171B (zh) | 一种基于云计算的Grover量子仿真算法优化方法 | |
CN107566535B (zh) | 基于Web地图服务并发访问时序规则的自适应负载均衡方法 | |
CN110413776A (zh) | 一种基于cpu-gpu协同并行的文本主题模型lda高性能计算方法 | |
CN105975345B (zh) | 一种基于分布式内存的视频帧数据动态均衡存储管理方法 | |
CN110727506A (zh) | 一种基于成本模型的spark参数自动调优方法 | |
CN102193830A (zh) | 面向众核环境的分治映射/归约并行编程模型 | |
CN103019855A (zh) | MapReduce作业执行时间预测方法 | |
Zhang et al. | DIDO: Dynamic pipelines for in-memory key-value stores on coupled CPU-GPU architectures | |
CN104182278A (zh) | 一种判定计算机硬件资源繁忙程度的方法和装置 | |
Tan et al. | Effectiveness assessment of solid-state drive used in big data services | |
CN108132834A (zh) | 多级共享高速缓冲存储器架构下的任务分配方法和系统 | |
CN103324577B (zh) | 基于最小化io访问冲突和文件分条的大规模分条文件分配系统 | |
Pirk et al. | X-device query processing by bitwise distribution | |
CN108304253A (zh) | 基于缓存感知和数据本地性的map任务调度方法 | |
Brahmi et al. | Data placement strategy for massive data applications based on FCA approach | |
Wu et al. | A batched gpu algorithm for set intersection | |
Wang et al. | Accelerating MapReduce on commodity clusters: an SSD-empowered approach | |
CN114692079A (zh) | 一种gpu批量矩阵乘法加速器及其处理方法 | |
Baudis et al. | Performance evaluation of priority queues for fine-grained parallel tasks on GPUs | |
Wang et al. | HCGrid: a convolution-based gridding framework for radio astronomy in hybrid computing environments |
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 |