CN116910432A - 基于异构众核处理器的稀疏矩阵向量乘方法和装置 - Google Patents
基于异构众核处理器的稀疏矩阵向量乘方法和装置 Download PDFInfo
- Publication number
- CN116910432A CN116910432A CN202310888283.7A CN202310888283A CN116910432A CN 116910432 A CN116910432 A CN 116910432A CN 202310888283 A CN202310888283 A CN 202310888283A CN 116910432 A CN116910432 A CN 116910432A
- Authority
- CN
- China
- Prior art keywords
- vector
- sub
- multiplication
- sparse matrix
- sparse
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 227
- 239000011159 matrix material Substances 0.000 title claims abstract description 120
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims abstract description 74
- 230000001133 acceleration Effects 0.000 claims abstract description 42
- 238000006243 chemical reaction Methods 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 129
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000009825 accumulation Methods 0.000 claims description 6
- 230000010354 integration Effects 0.000 claims description 3
- 241001409283 Spartina mottle virus Species 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 7
- 101150099047 apip gene Proteins 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
Classifications
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
Abstract
本发明公开了一种基于异构众核处理器的稀疏矩阵向量乘方法和装置,所述方法包括:所述方法基于异构众核处理器的一个加速域来实现;获取需要进行乘法运算的稀疏矩阵和向量;将所获取的稀疏矩阵和向量进行格式转化,将格式转化后的稀疏矩阵和向量存入所述异构众核处理器的内存中;对所述异构众核处理器的内存中稀疏矩阵和向量进行相乘运算,得到相乘结果。本发明利用异构众核处理器的多级内存架构,解决传统SpMV访存受限和性能低的问题。异构众核处理器有多个DSP核可以用来加速,借助异构众核处理器丰富的计算资源,设计和开发高效并行的SpMV运算,采用多线程并行执行提高并行度,可以有效的提升计算性能。
Description
技术领域
本发明涉及高性能计算领域,尤其涉及一种基于异构众核处理器的稀疏矩阵向量乘方法。
背景技术
目前,稀疏矩阵向量乘(Sparse Matrix-Vector Multiplication,SpMV)在科学计算、图形分析、信号处理等领域有着广泛的应用。对于SpMV而言,其中参与计算的矩阵是稀疏的,即矩阵中大部分元素都为零,所以通常只压缩存储非零元,最常见的存储格式有:坐标格式COO(Coordinate)、压缩行存储格式CSR(Compressed Sparse Row)、ELL格式(ELLPACK)、切片的ELL格式SELL(Sliced ELL)等。因为稀疏矩阵向量乘是众多领域中的核心问题,所以对稀疏矩阵向量乘加速是本领域技术人员最关注的问题之一。
目前,高性能计算机已经得到了日益普遍的工业应用,当前的高性能计算机很多采用异构众核处理器来实现。例如,基于MT-3000的异构众核处理器的“天河新一代高性能超级计算机”是一种典型的高性能巨型计算机。
随着以MT-3000为代表异构众核构架处理器的出现,充分利用这种特殊架构的计算能力对稀疏矩阵向量乘运算进行加速计算,是目前需要解决的一个技术难题。原始稀疏矩阵向量乘SpMV并不适用于异构众核处理器,该方法存在访存受限和性能低的问题。这是由于稀疏矩阵自身的非零元分布不规则,而传统的CSR等存储格式不考虑稀疏矩阵元素的数据局部性,直接压缩存储稀疏矩阵的非零元,导致分布甚远的非零元存储到一起;进行索引匹配时,非零元的列索引不规则地访问DDR内存中向量X的不同位置,造成高昂的访存延迟,导致较大的开销。同时,异构众核处理器的加速域上具有高速的片上缓存,传统的SpMV算法没考虑该独特的架构特征,导致性能的低下。
发明内容
针对现有的SpMV应用于异构众核处理器的计算构架访存带宽低、延迟大的问题,本发明公开了一种基于异构众核处理器的稀疏矩阵向量乘方法,有效提升访存带宽和降低访存延迟,以提升SpMV的性能。
本发明公开了一种基于异构众核处理器的稀疏矩阵向量乘方法,包括:
所述方法基于异构众核处理器的一个加速域来实现;
S1,获取需要进行乘法运算的稀疏矩阵和向量;
S2,将所获取的稀疏矩阵和向量进行格式转化,将格式转化后的稀疏矩阵和向量存入所述异构众核处理器的内存中;
S3,对所述异构众核处理器的内存中稀疏矩阵和向量进行相乘运算,得到相乘结果。
所述的基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述异构众核处理器,包括一个通用计算域、若干个加速域和若干个DDR内存;所述通用计算域包括若干个通用CPU核,所述一个加速域,包括若干个DSP核和片上全局共享内存GSM,所述一个DSP核,包括一个控制核、一个AM内存和若干个加速核;所述DDR内存、GSM和AM内存,三者之间支持DMA数据传输。
所述将所获取的稀疏矩阵和向量进行格式转化,将格式转化后的稀疏矩阵和向量存入所述异构众核处理器的内存中,包括:
将所获取的稀疏矩阵和向量转化为SELL格式的稀疏矩阵A和向量X,将所述SELL格式的稀疏矩阵A信息和向量X信息,存入所述异构众核处理器的内存中;所述SELL格式的稀疏矩阵A信息,包括所述稀疏矩阵A的非零元值、非零元列索引和基本行块信息;所述稀疏矩阵A,其维度为m×n;所述向量X,其维度为n;所述SELL格式的稀疏矩阵A,包括若干个基本行块;所述基本行块信息,包括非零元值、非零元列索引和行块索引。
所述对所述异构众核处理器的内存中稀疏矩阵和向量进行相乘运算,得到相乘结果,包括:
S31,根据向量X的维度和GSM存储空间值,对向量X进行均匀划分,得到子向量集合;所述子向量集合,包括若干个子向量和子向量序号;所述子向量集合所包含的子向量的数目为XN,所述子向量序号的取值范围为从1至XN;
S32,将所述稀疏矩阵A,按照列方向进行均匀划分,得到XN个稀疏子矩阵;对所述稀疏子矩阵根据其列序号进行编号,得到所述稀疏子矩阵的序号;
S33,确定序号为1的稀疏子矩阵为当前计算稀疏子矩阵;确定序号为1的子向量为当前计算子向量;初始化乘法计算结果向量;
S34,对当前计算稀疏子矩阵和当前计算子向量进行计算处理,得到当前乘法计算结果;根据当前计算子向量的序号值,将所述当前乘法计算结果作为所述乘法计算结果向量的排序为所述序号值的元素,存入所述乘法计算结果向量中;
S35,判断当前计算子向量的序号值是否等于XN,得到第一判断结果;若所述第一判断结果是不等于XN,利用当前计算子向量的下一个序号值的子向量,作为当前计算子向量,利用当前计算稀疏子矩阵的下一个序号值的稀疏子矩阵,作为当前计算稀疏子矩阵,执行S34;
若所述第一判断结果是等于XN,将所述乘法计算结果向量的所有元素值进行行方向的对应累加,得到累加结果;将所述累加结果,作为稀疏矩阵和向量的相乘结果。
所述根据向量X的维度和GSM存储空间值,对向量X进行均匀划分,得到子向量集合,包括:
S311,根据向量X的维度和GSM存储空间值,计算得到子向量的维度;所述计算过程,包括:
其中,GSML为GSM存储空间值,num为第一维度因子,BCol为子向量的维度;
S312,根据子向量的维度,计算得到子向量的数目XN;所述XN的计算公式为:
S313,根据子向量的数目XN,对向量X进行均匀划分,得到若干个子向量;
S314,根据子向量在向量X中的位置排序,对每个子向量进行编号,得到每个子向量序号;
S315,对所有子向量和子向量序号进行整合处理,得到子向量集合。
所述对当前计算稀疏子矩阵和当前计算子向量进行计算处理,得到当前乘法计算结果,包括:
S341,利用DMA点对点传输方法,将所述当前计算子向量,从所述异构众核处理器的内存中加载到用于实现稀疏矩阵和向量乘法计算的加速域的GSM上;
S342,根据所述加速域的DSP核的AM内存的存储空间值和所述加速域所包含DSP核的数目,确定矩阵行划分数XM;
S343,根据所述矩阵行划分数XM,对所述当前计算稀疏子矩阵,按照行方向进行均匀划分,得到XM个一级行块;所述一级行块,包括若干个基本行块;
S344,为每个一级行块,分配相应的用于计算的DSP核;每个DSP核用于实现一个一级行块与当前计算子向量的乘法计算;所有DSP核,采用并行运行的方式,实现对应的一级行块与当前计算子向量的乘法计算;
S345,对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次计算得到每个基本行块与当前计算子向量的乘法结果;在得到每个基本行块与当前计算子向量的乘法结果后,利用所有基本行块与当前计算子向量的乘法结果,构建得到所述DSP核对应的一级行块与当前计算子向量的乘法结果;
S346,当所有DSP核均得到对应的一级行块与当前计算子向量的乘法结果后,利用所有DSP核对应的一级行块与当前计算子向量的乘法结果,构建得到当前计算稀疏子矩阵和当前计算子向量的乘法计算结果。
所述对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次计算得到每个基本行块与当前计算子向量的乘法结果,包括:
S3451,对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次确定每个基本行块的计算次序;
S3452,根据所述计算次序,从所述一级行块所包括的基本行块中,确定出当前计算的基本行块;
S3453,根据当前计算的基本行块的非零元列索引,将所述非零元列索引对应的所述当前计算子向量的元素值,从GSM搬移到所述DSP核的AM内存上;
S3454,根据当前计算的基本行块的非零元列索引,利用DMA点对点传输方法,加载当前计算的基本行块的非零元值,到所述DSP核的向量运算空间AM上;
S3455,利用所述DSP核的加速核,对所述当前计算的基本行块的非零元值,与所述非零元列索引对应的所述当前计算子向量的元素值,进行乘法计算,得到所述当前计算的基本行块与当前计算子向量的乘法结果;
S3456,对所述一级行块所包括的所有基本行块,依次执行S3452至S3455,得到每个基本行块与当前计算子向量的乘法结果。
本发明公开了一种用于稀疏矩阵向量乘方法的数据处理装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行所述的基于异构众核处理器的稀疏矩阵向量乘方法。
本发明公开了一种计算机可存储介质,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行所述的基于异构众核处理器的稀疏矩阵向量乘方法。
本发明公开了一种信息数据处理终端,所述信息数据处理终端用于实现所述的基于异构众核处理器的稀疏矩阵向量乘方法。
本发明的有益效果为:
1)本发明利用异构众核处理器的多级内存架构,解决传统SpMV访存受限和性能低的问题。稀疏矩阵向量乘运算中,通常对向量X的访问是不规则的,而对于矩阵的非零元、列索引的访问是规则连续的;所以对向量X的访问开销远大于对矩阵属性值的访问开销;借助片上高速内存GSM缓存向量X,可有效降低稀疏矩阵向量乘中不规则内存访问的延迟。
2)异构众核处理器有多个DSP核可以用来加速,借助异构众核处理器丰富的计算资源,设计和开发高效并行的SpMV运算,采用多线程并行执行提高并行度,可以有效的提升计算性能。
附图说明
图1为本发明方法的实施流程图;
图2为MT-3000的架构图;
图3为基于异构众核处理器的稀疏矩阵向量乘方法的原理图;
图4为SELL格式的稀疏矩阵所包括的基本行块示意图。
具体实施方式
为了更好的了解本发明内容,这里给出一个实施例。
图1为本发明方法的实施流程图;图2为MT-3000的架构图;图3为基于异构众核处理器的稀疏矩阵向量乘方法的原理图。图4为SELL格式的稀疏矩阵所包括的基本行块示意图。
本发明公开了一种基于异构众核处理器的稀疏矩阵向量乘方法,包括:
所述方法基于异构众核处理器的一个加速域来实现;
S1,获取需要进行乘法运算的稀疏矩阵和向量;
S2,将所获取的稀疏矩阵和向量进行格式转化,将格式转化后的稀疏矩阵和向量存入所述异构众核处理器的内存中;
S3,对所述异构众核处理器的内存中稀疏矩阵和向量进行相乘运算,得到相乘结果。
所述异构众核处理器,包括一个通用计算域、若干个加速域和若干个DDR内存;所述通用计算域包括若干个通用CPU核,所述一个加速域,包括若干个DSP核和片上全局共享内存GSM,所述一个DSP核,包括一个控制核、一个AM内存和若干个加速核;所述DDR内存、GSM和AM内存,三者之间支持DMA数据传输。
所述S2,包括:
将所获取的稀疏矩阵和向量转化为SELL格式的稀疏矩阵A和向量X,将所述SELL格式的稀疏矩阵A信息和向量X信息,存入所述异构众核处理器的内存中;所述SELL格式的稀疏矩阵A信息,包括所述稀疏矩阵A的非零元值、非零元列索引和基本行块信息。所述稀疏矩阵A,其维度为m×n;所述向量X,其维度为n。所述SELL格式的稀疏矩阵A,包括若干个基本行块。所述基本行块信息,包括非零元值、非零元列索引和行块索引。所述SELL格式的稀疏矩阵所包括的基本行块示意图如图4所示。
图4中,包括两个基本行块;基本行块的非零元值为[a c b d e f],所述基本行块的非零元列索引为[012313],基本行块的行块索引为[046],Srow为基本行块的数目。
所述S3,包括:
S31,根据向量X的维度和GSM存储空间值,对向量X进行均匀划分,得到子向量集合;所述子向量集合,包括若干个子向量和子向量序号;所述子向量集合所包含的子向量的数目为XN,所述子向量序号的取值范围为从1至XN;
所述S31,包括:
S311,根据向量X的维度和GSM存储空间值,计算得到子向量的维度;所述计算过程,包括:
其中,GSML为GSM存储空间值,num为第一维度因子,BCol为子向量的维度;
S312,根据子向量的维度,计算得到子向量的数目XN;所述XN的计算公式为:
S313,根据子向量的数目XN,对向量X进行均匀划分,得到若干个子向量;
所述S33,可以是,当矩阵X=[x1,x2,x3,x4,x5,x6,x7,x8]T时,XN=4,则得到的子向量分别是[x1,x2],[x3,x4],[x5,x6],[x7,x8],对应的编号,分别是1、2、3和4。
S314,根据子向量在向量X中的位置排序,对每个子向量进行编号,得到每个子向量序号;
S315,对所有子向量和子向量序号进行整合处理,得到子向量集合。
S32,将所述稀疏矩阵A,按照列方向进行均匀划分,得到XN个稀疏子矩阵;对所述稀疏子矩阵根据其列序号进行编号,得到所述稀疏子矩阵的序号;
所述S32,当所述稀疏矩阵A为4行8列时,对所述稀疏矩阵A按照列方向进行均匀划分,得到4个稀疏子矩阵;所述稀疏矩阵A的表达式为:
得到的四个稀疏子矩阵,第一个稀疏子矩阵的表达式为:
第一个稀疏子矩阵的序号为1;依次类推,第二个稀疏子矩阵包括矩阵A的第3列和第4列,第三个稀疏子矩阵包括矩阵A的第5列和第6列,第四个稀疏子矩阵包括矩阵A的第7列和第8列。
S33,确定序号为1的稀疏子矩阵为当前计算稀疏子矩阵;确定序号为1的子向量为当前计算子向量;初始化乘法计算结果向量;
S34,对当前计算稀疏子矩阵和当前计算子向量进行计算处理,得到当前乘法计算结果;根据当前计算子向量的序号值,将所述当前乘法计算结果作为所述乘法计算结果向量的排序为所述序号值的元素,存入所述乘法计算结果向量中;
S35,判断当前计算子向量的序号值是否等于XN,得到第一判断结果;若所述第一判断结果是不等于XN,利用当前计算子向量的下一个序号值的子向量,作为当前计算子向量,利用当前计算稀疏子矩阵的下一个序号值的稀疏子矩阵,作为当前计算稀疏子矩阵,执行S34;
若所述第一判断结果是等于XN,将所述乘法计算结果向量的所有元素值进行行方向的对应累加,得到累加结果;将所述累加结果,作为稀疏矩阵和向量的相乘结果。
所述对当前计算稀疏子矩阵和当前计算子向量进行计算处理,得到当前乘法计算结果,包括:
S341,利用DMA点对点传输方法,将所述当前计算子向量,从所述异构众核处理器的内存中加载到用于实现稀疏矩阵和向量乘法计算的加速域的GSM上;
S342,根据所述加速域的DSP核的AM内存的存储空间值和所述加速域所包含DSP核的数目,确定矩阵行划分数XM;
S343,根据所述矩阵行划分数XM,对所述当前计算稀疏子矩阵,按照行方向进行均匀划分,得到XM个一级行块;所述一级行块,包括若干个基本行块;
S344,为每个一级行块,分配相应的用于计算的DSP核;每个DSP核用于实现一个一级行块与当前计算子向量的乘法计算;所有DSP核,采用并行运行的方式,实现对应的一级行块与当前计算子向量的乘法计算;
S345,对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次计算得到每个基本行块与当前计算子向量的乘法结果;在得到每个基本行块与当前计算子向量的乘法结果后,利用所有基本行块与当前计算子向量的乘法结果,构建得到所述DSP核对应的一级行块与当前计算子向量的乘法结果;
S346,当所有DSP核均得到对应的一级行块与当前计算子向量的乘法结果后,利用所有DSP核对应的一级行块与当前计算子向量的乘法结果,构建得到当前计算稀疏子矩阵和当前计算子向量的乘法计算结果。
所述对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次计算得到每个基本行块与当前计算子向量的乘法结果,包括:
S3451,对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次确定每个基本行块的计算次序;
S3452,根据所述计算次序,从所述一级行块所包括的基本行块中,确定出当前计算的基本行块;
S3453,根据当前计算的基本行块的非零元列索引,将所述非零元列索引对应的所述当前计算子向量的元素值,从GSM搬移到所述DSP核的向量运算空间AM上;所述S3453,可采用设计APip通道,并利用APip通道来实现传输。
S3454,根据当前计算的基本行块的非零元列索引,利用DMA点对点传输方法,加载当前计算的基本行块的非零元值,到所述DSP核的向量运算空间AM上;
S3455,利用所述DSP核的加速核,对所述当前计算的基本行块的非零元值,与所述非零元列索引对应的所述当前计算子向量的元素值,进行乘法计算,得到所述当前计算的基本行块与当前计算子向量的乘法结果;
S3456,对所述一级行块所包括的所有基本行块,依次执行S3452至S3455,得到每个基本行块与当前计算子向量的乘法结果。
所述异构众核处理器,可以是MT-3000处理器;所述MT-3000处理器,拥有1个通用计算域和四个加速域、DDR内存,其中通用计算域有16个通用CPU核,四个加速域共有96个控制核和1536个加速器核。
控制核和加速核组成加速域;每个加速域由24个DSP核组成,DSP核包括一个控制核和16个加速核;
每个加速域共有24个控制核、384个加速核,以及6MB的片上全局共享内存(GSM,Global Shared Memory)(每个加速域的24个控制核和384个加速核均可访问);
每个加速域的每16个加速核共用768KB的AM(Array Memory)内存(每个DSP核内部的),GSM、AM与DDR内存相互之间支持高效的DMA数据传输。本发明方法可使用一个加速域来实现。
所述S2,包括:
将基于COO格式的矩阵A的mtx文件(国际通用的Matrix Market稀疏矩阵文件存储格式,使用“.mtx”的ASCII文本文件存储)和向量X存储到MT-3000处理器的DDR内存中,并将矩阵COO格式转化为所需要的格式,本文以SELL格式为例。
所述根据所述加速域的DSP核的AM内存的存储空间值和所述加速域所包含DSP核的数目,确定矩阵行划分数XM,包括:
所述加速域所包含DSP核的数目为D1,所述DSP核的AM内存的存储空间值为S1,所述当前计算稀疏子矩阵的某一列所占用的存储空间为D2;确定所述矩阵行划分数XM为XM=D1;所述DSP核的AM内存的存储空间值S1,假设划分出的每个矩阵行块包含D3个基本矩阵块,满足S1>3*(D2/(D1*D3))。(因为除了矩阵值,向量X也要搬移到AM上,每个基本块计算出的结果向量值也要暂时存储在AM上,后续才存回DDR内存,所以是3倍的)。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述方法基于异构众核处理器的一个加速域来实现,包括:
S1,获取需要进行乘法运算的稀疏矩阵和向量;
S2,将所获取的稀疏矩阵和向量进行格式转化,将格式转化后的稀疏矩阵和向量存入所述异构众核处理器的内存中;
S3,对所述异构众核处理器的内存中稀疏矩阵和向量进行相乘运算,得到相乘结果。
2.如权利要求1所述的基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述异构众核处理器,包括一个通用计算域、若干个加速域和若干个DDR内存;所述通用计算域包括若干个通用CPU核,所述一个加速域,包括若干个DSP核和片上全局共享内存GSM,所述一个DSP核,包括一个控制核、一个AM内存和若干个加速核;所述DDR内存、GSM和AM内存,三者之间支持DMA数据传输。
3.如权利要求2所述基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述将所获取的稀疏矩阵和向量进行格式转化,将格式转化后的稀疏矩阵和向量存入所述异构众核处理器的内存中,包括:
将所获取的稀疏矩阵和向量转化为SELL格式的稀疏矩阵A和向量X,将所述SELL格式的稀疏矩阵A信息和向量X信息,存入所述异构众核处理器的内存中;所述SELL格式的稀疏矩阵A信息,包括所述稀疏矩阵A的非零元值、非零元列索引和基本行块信息;所述稀疏矩阵A,其维度为m×n;所述向量X,其维度为n;所述SELL格式的稀疏矩阵A,包括若干个基本行块;所述基本行块信息,包括非零元值、非零元列索引和行块索引。
4.如权利要求3所述基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述对所述异构众核处理器的内存中稀疏矩阵和向量进行相乘运算,得到相乘结果,包括:
S31,根据向量X的维度和GSM存储空间值,对向量X进行均匀划分,得到子向量集合;所述子向量集合,包括若干个子向量和子向量序号;所述子向量集合所包含的子向量的数目为XN,所述子向量序号的取值范围为从1至XN;
S32,将所述稀疏矩阵A,按照列方向进行均匀划分,得到XN个稀疏子矩阵;对所述稀疏子矩阵根据其列序号进行编号,得到所述稀疏子矩阵的序号;
S33,确定序号为1的稀疏子矩阵为当前计算稀疏子矩阵;确定序号为1的子向量为当前计算子向量;初始化乘法计算结果向量;
S34,对当前计算稀疏子矩阵和当前计算子向量进行计算处理,得到当前乘法计算结果;根据当前计算子向量的序号值,将所述当前乘法计算结果作为所述乘法计算结果向量的排序为所述序号值的元素,存入所述乘法计算结果向量中;
S35,判断当前计算子向量的序号值是否等于XN,得到第一判断结果;若所述第一判断结果是不等于XN,利用当前计算子向量的下一个序号值的子向量,作为当前计算子向量,利用当前计算稀疏子矩阵的下一个序号值的稀疏子矩阵,作为当前计算稀疏子矩阵,执行S34;
若所述第一判断结果是等于XN,将所述乘法计算结果向量的所有元素值进行行方向的对应累加,得到累加结果;将所述累加结果,作为稀疏矩阵和向量的相乘结果。
5.如权利要求4所述基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述根据向量X的维度和GSM存储空间值,对向量X进行均匀划分,得到子向量集合,包括:
S311,根据向量X的维度和GSM存储空间值,计算得到子向量的维度;所述计算过程,包括:
其中,GSML为GSM存储空间值,num为第一维度因子,BCol为子向量的维度;
S312,根据子向量的维度,计算得到子向量的数目XN;所述XN的计算公式为:
S313,根据子向量的数目XN,对向量X进行均匀划分,得到若干个子向量;
S314,根据子向量在向量X中的位置排序,对每个子向量进行编号,得到每个子向量序号;
S315,对所有子向量和子向量序号进行整合处理,得到子向量集合。
6.如权利要求4所述基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述对当前计算稀疏子矩阵和当前计算子向量进行计算处理,得到当前乘法计算结果,包括:
S341,利用DMA点对点传输方法,将所述当前计算子向量,从所述异构众核处理器的内存中加载到用于实现稀疏矩阵和向量乘法计算的加速域的GSM上;
S342,根据所述加速域的DSP核的AM内存的存储空间值和所述加速域所包含DSP核的数目,确定矩阵行划分数XM;
S343,根据所述矩阵行划分数XM,对所述当前计算稀疏子矩阵,按照行方向进行均匀划分,得到XM个一级行块;所述一级行块,包括若干个基本行块;
S344,为每个一级行块,分配相应的用于计算的DSP核;每个DSP核用于实现一个一级行块与当前计算子向量的乘法计算;所有DSP核,采用并行运行的方式,实现对应的一级行块与当前计算子向量的乘法计算;
S345,对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次计算得到每个基本行块与当前计算子向量的乘法结果;在得到每个基本行块与当前计算子向量的乘法结果后,利用所有基本行块与当前计算子向量的乘法结果,构建得到所述DSP核对应的一级行块与当前计算子向量的乘法结果;
S346,当所有DSP核均得到对应的一级行块与当前计算子向量的乘法结果后,利用所有DSP核对应的一级行块与当前计算子向量的乘法结果,构建得到当前计算稀疏子矩阵和当前计算子向量的乘法计算结果。
7.如权利要求6所述基于异构众核处理器的稀疏矩阵向量乘方法,其特征在于,所述对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次计算得到每个基本行块与当前计算子向量的乘法结果,包括:
S3451,对于每个DSP核,根据对应的一级行块所包括的基本行块的行块索引值排序,依次确定每个基本行块的计算次序;
S3452,根据所述计算次序,从所述一级行块所包括的基本行块中,确定出当前计算的基本行块;
S3453,根据当前计算的基本行块的非零元列索引,将所述非零元列索引对应的所述当前计算子向量的元素值,从GSM搬移到所述DSP核的AM内存上;
S3454,根据当前计算的基本行块的非零元列索引,利用DMA点对点传输方法,加载当前计算的基本行块的非零元值,到所述DSP核的向量运算空间AM上;
S3455,利用所述DSP核的加速核,对所述当前计算的基本行块的非零元值,与所述非零元列索引对应的所述当前计算子向量的元素值,进行乘法计算,得到所述当前计算的基本行块与当前计算子向量的乘法结果;
S3456,对所述一级行块所包括的所有基本行块,依次执行S3452至S3455,得到每个基本行块与当前计算子向量的乘法结果。
8.一种用于稀疏矩阵向量乘方法的数据处理装置,其特征在于,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1-7任一项所述的基于异构众核处理器的稀疏矩阵向量乘方法。
9.一种计算机可存储介质,其特征在于,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行如权利要求1-7任一项所述的基于异构众核处理器的稀疏矩阵向量乘方法。
10.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现权利要求1-7任一项所述的基于异构众核处理器的稀疏矩阵向量乘方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310888283.7A CN116910432A (zh) | 2023-07-19 | 2023-07-19 | 基于异构众核处理器的稀疏矩阵向量乘方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310888283.7A CN116910432A (zh) | 2023-07-19 | 2023-07-19 | 基于异构众核处理器的稀疏矩阵向量乘方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116910432A true CN116910432A (zh) | 2023-10-20 |
Family
ID=88357769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310888283.7A Pending CN116910432A (zh) | 2023-07-19 | 2023-07-19 | 基于异构众核处理器的稀疏矩阵向量乘方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116910432A (zh) |
-
2023
- 2023-07-19 CN CN202310888283.7A patent/CN116910432A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
Anderson et al. | Communication-avoiding QR decomposition for GPUs | |
Cho et al. | MEC: Memory-efficient convolution for deep neural network | |
Langr et al. | Evaluation criteria for sparse matrix storage formats | |
US7640284B1 (en) | Bit reversal methods for a parallel processor | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
US20120221788A1 (en) | Multi-dimensional array manipulation | |
Smailbegovic et al. | Sparse matrix storage format | |
Li et al. | VBSF: a new storage format for SIMD sparse matrix–vector multiplication on modern processors | |
CN114090954A (zh) | 一种基于ft-2000+的整数矩阵乘法内核优化方法 | |
WO2018027706A1 (zh) | Fft处理器及运算方法 | |
US11074214B2 (en) | Data processing | |
CN101561797A (zh) | 在处理系统上对矩阵进行奇异值、特征值分解的方法和装置 | |
Mahdiani et al. | $\Delta $ Δ NN: Power-Efficient Neural Network Acceleration Using Differential Weights | |
CN104572588A (zh) | 矩阵求逆处理方法和装置 | |
CN116842304A (zh) | 一种不规则稀疏矩阵的计算方法及系统 | |
Karimi et al. | Vcsr: An efficient gpu memory-aware sparse format | |
CN117271953A (zh) | 一种用于优化快速傅里叶变换的存内计算加速电路及方法 | |
CN111859277A (zh) | 一种稀疏矩阵向量乘法向量化实现方法 | |
US11886347B2 (en) | Large-scale data processing computer architecture | |
CN116910432A (zh) | 基于异构众核处理器的稀疏矩阵向量乘方法和装置 | |
CN114003198B (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
Stathis et al. | A hierarchical sparse matrix storage format for vector processors | |
CN117407640A (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 |