CN113360188B - 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 - Google Patents
一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 Download PDFInfo
- Publication number
- CN113360188B CN113360188B CN202110541392.2A CN202110541392A CN113360188B CN 113360188 B CN113360188 B CN 113360188B CN 202110541392 A CN202110541392 A CN 202110541392A CN 113360188 B CN113360188 B CN 113360188B
- Authority
- CN
- China
- Prior art keywords
- sparse matrix
- optimization
- vector multiplication
- optimization option
- performance
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 196
- 238000003672 processing method Methods 0.000 title claims abstract description 61
- 238000005457 optimization Methods 0.000 claims abstract description 435
- 239000011159 matrix material Substances 0.000 claims abstract description 183
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims description 16
- 230000011218 segmentation Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000010801 machine learning Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000002474 experimental method Methods 0.000 description 4
- 230000001788 irregular Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001747 exhibiting effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- RZVAJINKPMORJF-UHFFFAOYSA-N Acetaminophen Chemical compound CC(=O)NC1=CC=C(O)C=C1 RZVAJINKPMORJF-UHFFFAOYSA-N 0.000 description 1
- 241000534414 Anotopterus nikparini Species 0.000 description 1
- 241001229889 Metis Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
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
本发明提供一种用于优化稀疏矩阵‑向量乘的并行处理方法及装置,涉及并行程序任务分配技术领域,该方法包括以下步骤:输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;获取每次迭代后的稀疏矩阵‑向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵‑向量乘的性能并输出,本发明通过执行不同的优化选项,并行进行对应次数的迭代,这些优化选项可供用户自主选择,将现有的关于SpMV运算的优化方案与选择策略相结合,综合考虑性能提升上、总时间开销上以及实际应用上等因素,设计一个多级优化框架,给SpMV运算带来更高的实用性。
Description
技术领域
本发明涉及并行程序任务分配技术领域,尤其涉及一种用于优化稀疏矩阵-向量乘的并行处理方法及装置。
背景技术
在科学计算和人工智能领域,稀疏矩阵-向量乘(Sparse Matrix-VectorMultiplication,SpMV)运算有着广泛的应用。SpMV可在很多情况下代替稠密矩阵运算,可以大量节省内存占用,减少计算开销。矩阵向量乘法不同于矩阵和矩阵的乘法,而是属于完全访存密集型的计算。稀疏矩阵一般只存储非零元的信息,非零元的存储格式决定了访存的模式,这需要根据非零元的分布模式和要做的计算类型来设计。标准的稀疏矩阵存储格式主要有:坐标格式(Coordinate,COO)和压缩稀疏行格式(Compressed Sparse Row,CSR)等。
目前对稀疏矩阵运算的优化方法有很多种,包括存储格式与算法优化策略、基于机器学习的自动调优策略、使用图或超图分割技术的优化策略等。在存储格式与算法方面,主要工作方式有CSR5、Sliced ELLPACK等。在超图分割方面,主要工作方式有Fiduccia-Mattheyses(FM)算法、串行超图分割工具PaToH等。在机器学习的自动调优方面,主要工作方式有BASMAT自动调优器,BASMAT自动调优器通过机器学习训练了一个关于稀疏矩阵特征的DT分类器,通过DT分类器将稀疏矩阵按照其规则度分为三类,分别为:MB类:此类中的矩阵受内存带宽限制,通常表现出规则的稀疏结构;ML类:此类中的矩阵受内存延迟的约束,由于高度不规则的稀疏模式,在访问向量时显示出较差的局部性;TI类:此类中的矩阵具有非常不均匀的行长度,会出现负载均衡现象。通过这三种不同的分类,对不同的稀疏矩阵采取不同的SpMV算法的优化方法,MB采用CSR-sym,CSR-vi,CSR-delta;ML采用CSR-vertica;TI采用CSR-merge。
现有的SpMV运算中存在以下不足:
1.在性能提升上:新的SpMV运算在优化后得到的性能反而比使用基础的SpMV算法得到的性能低;
2.在总时间开销上:研究人员提出的大多数SpMV运算的优化方案致力于加快SpMV运算的执行速度,关注的时间开销仅仅只有SpMV的执行时间(Te),这些SpMV运算的优化方案几乎没有考虑额外的时间消耗问题,比如格式转换所需的时间开销。
3.在实际应用上:对于一个实际问题的解决往往单靠一种优化方法是无法完成的,而是需要融合使用多种优化方法,但是机器学习的应用限制是不可忽视的,因为机器学习的模型是在确定的硬件环境上训练获得的,所以经过机器学习得到的模型也只能用在特定的硬件环境中,不能大规模的应用于其他的硬件环境。使得一些具有优秀性能的网络模型受到硬件的限制,无法应用到现实生活中。
综上所述,需要对现有的稀疏矩阵-向量乘运算进行改进。
发明内容
本发明提供一种用于优化稀疏矩阵-向量乘的并行处理方法及装置,用以解决现有技术中SpMV性能提升上、总时间开销上以及实际应用上存在的缺陷,实现设计一个多级优化框架,给SpMV运算带来更高的实用性。
本发明提供一种用于优化稀疏矩阵-向量乘的并行处理方法,包括以下步骤:
输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
根据本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,所述第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作;
所述第二优化选项使用CSR格式存储稀疏矩阵,对稀疏矩阵进行负载均衡优化后执行并行稀疏矩阵-向量乘操作;
所述第三优化选项使用SELL-C-δ或CSR5格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作;
所述第四优化选项对待处理的稀疏矩阵进行重新排序,对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作。
根据本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,所述第一次数为1次,所述第二次数为2至99次,所述第三次数为100至999次,所述第四次数为大于999次。
根据本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,所述第一优化选项使用OpenMP指令。
根据本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,稀疏矩阵采用第二优化选项进行优化时,具体包括以下步骤:
判断是否有线程未工作;
若不存在未工作的线程,使用CSR-LBL格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能;
若存在未工作的线程,使用CSR-LBLT格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
根据本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,稀疏矩阵采用第三优化选项进行优化时,具体包括以下步骤:
获取稀疏矩阵的行的变化;其中,所述行的变化为稀疏矩阵行长度标准差与行平均长度的比值;
若行的变化大于设定的阈值vt,使用CSR5格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能;
若行的变化不大于设定的阈值vt,使用SELL-C-δ格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
根据本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,稀疏矩阵采用第四优化选项进行优化时,具体包括以下步骤:
基于图或超图分割技术对待处理的稀疏矩阵进行重新排序;
对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作,输出待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能。
本发明还提供一种用于优化稀疏矩阵-向量乘的并行处理装置,包括:
多级优化模块,用于输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
性能输出模块,用于获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述用于优化稀疏矩阵-向量乘的并行处理方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述用于优化稀疏矩阵-向量乘的并行处理方法的步骤。
本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法及装置,通过执行不同的优化选项,并行进行对应次数的迭代,SpMV总时间开销是从读取稀疏矩阵后开始计时,一直到执行完毕SpMV算法,并随着优化选项的逐级提升,总时间开销也是逐级增加,同时这些优化选项可供用户自主选择,将现有的关于SpMV运算的优化方案与选择策略相结合,综合考虑性能提升上、总时间开销上以及实际应用上等因素,设计一个多级优化框架,给SpMV运算带来更高的实用性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中SpMV在总时间开销的计算模式的示意图;
图2是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法的流程示意图;
图3是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法中选用第二优化选项时的流程示意图;
图4是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法中选用第三优化选项时的流程示意图;
图5是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法中选用第四优化选项时的流程示意图一;
图6是本发明提供的用于优化稀疏矩阵-向量乘的并行处理装置的结构示意图;
图7是本发明提供的用于优化稀疏矩阵-向量乘的并行处理装置中选用第二优化选项时的结构示意图;
图8是本发明提供的用于优化稀疏矩阵-向量乘的并行处理装置中选用第三优化选项时的结构示意图;
图9是本发明提供的用于优化稀疏矩阵-向量乘的并行处理装置中选用第四优化选项时的结构示意图;
图10是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法及装置的逻辑示意图;
图11是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法及装置中选用第二优化选项时的效果图;
图12是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法及装置中稀疏矩阵使用SELL-C-δ格式存储的主要数据布局图;
图13是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法及装置中稀疏矩阵使用CSR5格式存储的主要数据布局图;
图14是本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法及装置中选用第四优化选项时的效果图;
图15是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
经过长期的实践验证,现有的SpMV运算的优化方案中存在以下不足:
1.在性能提升上:对于部分稀疏矩阵而言,会出现使用新的SpMV运算的优化方法得到的性能比使用基础的CSR存储的SpMV运算的得到的性能低的现象。如“cant”这个规则的稀疏矩阵,经实验验证,使用基础CSR-SpMV运算得到的性能是140GFlops,但是使用优化后的CSR5-SpMV运算的性能是92GFlops,相比基础的SpMV算法,降低了40%的性能。
2.在总时间开销上:目前SpMV运算最常见的总时间计算模式是:总时间=格式转换时间+执行时间,即首先分析输入稀疏矩阵的稀疏结构,将其转换为改进后的格式(稀疏矩阵转换为改进的存储格式的这个操作可以手动选择完成,也可以由支持机器学习的选择器自动选择),然后,对存储在新格式中的稀疏矩阵运行相应的SpMV算法。但是在有些SpMV运算的优化方案的工作中,目前这种总时间计算模式就显得不合适了,主要原因是在这些SpMV运算的优化方案中总的时间开销不单单由这两部分决定,还包括对优化方法的预测的时间、对稀疏矩阵自身操作的时间等。比如对稀疏矩阵使用图或超图分割技术进行重新排序,在前期的稀疏矩阵的处理上需要消耗很长的时间,如果在后期的SpMV运算中速度的提升幅度不能弥补甚至超过前期消耗的时间,那么总消耗时间就不会有明显的减少。有时甚至会出现前期消耗的时间有可能是一次SpMV运算的时间的几百倍甚至几千倍的现象。当迭代算法中的SpMV运算调用的次数很少时,这个现象将会表现得更加明显。
如图1中的①所示,在前期,研究人员提出的大多数优化方案致力于加快SpMV运算的执行速度,关注的时间开销仅仅只有SpMV的执行时间(Te),这些SpMV运算的优化方案几乎没有考虑额外的时间消耗问题,比如格式转换所需的时间开销。
经过实验验证,不能只关注SpMV的执行时间,也要考虑其他的时间开销,如格式转换所需的时间,也就是最常见的总时间计算模式:总时间=格式转换时间+执行时间。这些时间开销是研发人员必须关注的,因为目前SpMV运算的优化方案的目的之一就是减少这部分的时间开销。相比于SpMV的执行时间,这些时间的消耗是巨大的。正如图1中的②所示,现有的SpMV运算,存在将格式转换消耗的时间(Tc)以及SpMV运算执行的时间的和作为整体的开销时间。
虽然时间开销的范围在逐步完善,但是在实际的测试实验中有些时间的开销还是被忽视了,尤其是在优化方案中不常被关注到的部分,而且这些时间的消耗相比于SpMV的执行时间可以高达千倍。如图1中的③,预处理时间(Tp)(例如,分析矩阵时间、划分矩阵时间等时间)就是极易被忽略的时间开销。
3.在实际应用上:对于一个实际问题的解决往往单靠一种SpMV运算的优化方案是无法完成的,而是需要融合使用多种SpMV运算的优化方案,如HYB这种存储方法,它通过一个调优参数K将COO和ELL两种格式融合在一起;使用机器学习技术可以实现根据矩阵特征为其选择合适的优化方案的目标,但是机器学习的应用限制是不可忽视的,因为机器学习的模型是在确定的硬件环境上训练获得的。所以经过机器学习得到的模型也只能用在特定的硬件环境中,不能大规模的应用于其他的硬件环境。使得一些具有优秀性能的网络模型受到硬件的限制,无法应用到现实生活中。
综上所述,下面结合图2和图10描述本发明的用于优化稀疏矩阵-向量乘的并行处理方法,本发明的用于优化稀疏矩阵-向量乘的并行处理方法综合考虑性能提升上、总时间开销上以及实际应用上等因素,旨在优化SpMV运算,将现有的关于SpMV运算的优化方案与选择策略相结合,设计一个多级优化框架,给SpMV运算带来更高的实用性,该方法包括以下步骤:
S100、输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的优化选项并行进行对应次数的迭代。
S200、获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出。
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项,第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作,第一优化选项提供基础的性能,并且作为其他优化选项的参考;第二优化选项使用CSR格式存储稀疏矩阵,对稀疏矩阵进行负载均衡优化后执行并行稀疏矩阵-向量乘操作,以解决线程负载不均衡的问题;第三优化选项使用SELL-C-δ或CSR5格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作,以实现向量化和细粒度的负载均衡;第四优化选项将重点放在实现更好的数据局部性上,对待处理的稀疏矩阵进行重新排序,对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作。
在步骤S100中:
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项。
在本实施例中,第一次数为1次,第二次数为2至99次,第三次数为100至999次,第四次数为大于999次。
在步骤S200中,同时不管迭代次数为多少次,在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
稀疏矩阵-向量乘的性能指的是稀疏矩阵-向量乘的运算能力,可以体现在稀疏矩阵-向量乘的总时间开销上,总时间开销越小表示稀疏矩阵-向量乘的性能越好,总时间开销越大表示稀疏矩阵-向量乘的性能越差。在本实施例中,稀疏矩阵-向量乘的性能可以通过浮点操作性能(Giga Floating-point Operations per Second,GFLOPS)进行验证。
本发明提供的用于优化稀疏矩阵-向量乘的并行处理方法,通过执行不同的优化选项,并行进行对应次数的迭代,SpMV总时间开销是从读取稀疏矩阵后开始计时,一直到执行完毕SpMV算法,并随着优化选项的逐级提升,总时间开销也是逐级增加,同时这些优化选项可供用户自主选择,将现有的关于SpMV运算的优化方案与选择策略相结合,综合考虑性能提升上、总时间开销上以及实际应用上等因素,设计一个多级优化框架,给SpMV运算带来更高的实用性。
可以理解的是,在本发明用于优化稀疏矩阵-向量乘的并行处理方法中,输入一个待处理的稀疏矩阵后,用户还可以自主选择优化选项,并最后会输出相应的SpMV的性能。上述提到的用户可以自主选择优化选项,即用户自主选择是通过第一优选选项、第二优化选项、第三优化选项和第四优化选项中的任一选项作为SpMV运算的优化方案。需要说明的是,在用户可以自主选择第四优化选项时,也会进行第一至第三优化选项的优化,并将四种优化选项输出的最优性能确定为第四优化选项输出的性能,同理,在用户可以自主选择第三优化选项时,也会进行第一至第二优化选项的优化,并将三种优化选项输出的最优性能确定为第三优化选项输出的性能;在用户可以自主选择第二优化选项时,也会进行第一优化选项的优化,并将两种优化选项输出的最优性能确定为第二优化选项输出的性能。
第一优化选项使用最简单OpenMP指令,第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作,输出对应的稀疏矩阵-向量乘的性能。同时,第一优化选项提供本发明用于优化稀疏矩阵-向量乘的并行处理方法最基础的性能,并作为第二优化选项、第三优化选项和第四优化选项输出的性能的参考。
下面结合图3描述本发明的用于优化稀疏矩阵-向量乘的并行处理方法,稀疏矩阵采用第二优化选项进行优化时,具体包括以下步骤:
S121、判断是否有线程未工作;
S122、若不存在未工作的线程,使用CSR-LBL格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能;
S123、若存在未工作的线程,使用CSR-LBLT格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
请参阅图11,在使用第一优化选项时即使用最基本的CSR格式存储的并行SpMV操作时,虽然运算速度相对于串行的SpMV算法会有数倍的提升。但是并行SpMV操作的本质是将稀疏矩阵的每行依次分配给每个线程,所以有可能会出现线程执行的非零元的数量不均衡的问题。这个问题主要是由于稀疏矩阵存在的非零元排布不规律的现象而产生的。如图11中(b)部分所示,当使用8个线程进行并行SpMV操作时,平均一个线程执行稀疏矩阵的两行,有的线程最多要执行的是24个非零元,而最少要执行的非零元数是2个。
因此,对于那些行长度适当且分布比较规则的稀疏矩阵来说,第一优化选项虽然可以提供足够快的运算速度,然而很明显,大多数的稀疏矩阵在某种程度上非零元的分布是不规则的,所以在本发明的用于优化稀疏矩阵-向量乘的并行处理方法中还融合并提供了第二优化选项,通过第二优化选项来解决线程负载不均衡的问题。
在第二优化选项中,会使用一个两步优化的策略,这个策略非常像Greathous和Daga提出的CSR-Adaptive方法。因为它们的预处理时间开销不同,所以第二优化选项中两种优化方法是分开使用的,分别是使用CSR-LBL格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行SpMV操作,以及使用CSR-LBLT格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行SpMV操作。第二优化选项判断到底使用哪种优化方法是通过判断是否有线程未工作来实现的,具体的,若不存在未工作的线程,使用CSR-LBL格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能;若存在未工作的线程,使用CSR-LBLT格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
本发明的用于优化稀疏矩阵-向量乘的并行处理方法的第二优化选项中期待使用更长的时间完成预处理工作可以得到更好的负载均衡的效果。由于每个优化选项内部都会被设计成为黑匣子,对于不同的稀疏矩阵,因此第二优化选项通过自动选择并采用这两种优化方法中的一种,然后对其进行操作,从而输出最好的性能。
由于不能保证第二优化选项中两种优化方法总是比第一优化选项的速度快,所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法将第二优化选项当前取得的SpMV的性能与第一优化选项中的SpMV性能进行比较。最后,选择最好的性能(可能是采用第一优化选项输出的性能或第二优化选项输出的性能)作为第二优化选项输出的性能。
下面结合图4描述本发明的用于优化稀疏矩阵-向量乘的并行处理方法,稀疏矩阵采用第三优化选项进行优化时,具体包括以下步骤:
S131、获取稀疏矩阵的行的变化;其中,所述行的变化为稀疏矩阵行长度标准差与行平均长度的比值。
S132、若行的变化大于设定的阈值vt,使用CSR5格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
S133、若行的变化不大于设定的阈值vt,使用SELL-C-δ格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
在第三优化选项中,也使用到了两种优化方法,首先第三优化选项会计算稀疏矩阵的行的变化,即行长度标准差与行平均长度的比值,如果该比值越大,则表示稀疏矩阵的不平衡问题越严重,如果该比值的变化大于设定好的阈值vt,则自动选择CSR5格式进行SpMV运算操作;否则,则使用SELL-C-δ格式进行SpMV运算操作。
在本发明的用于优化稀疏矩阵-向量乘的并行处理方法中,通过第三优化选项解决稀疏矩阵的非零元分布的问题,第三优化选项的目标是实现向量化和细粒度的负载均衡。具体的,第三优化选项采用两个有代表性的工作SELL-C-δ格式和CSR5格式来实现目标。
请参阅图12,SELL-C-δ存储格式是基本ELL格式和分块ELL格式的变体。它首先将稀疏矩阵的行分为δ块,并在每个δ块中进一步划分出C块。C的值通常与单指令流多数据流操作(Single Instruction Stream,Multiple Data Stream,SIMD)的单位宽度相匹配(例如,C=4可以看作是双精度数据类型,它可以用于256位的AVX2指令集),可以用于细粒度向量化。为了实现在更宽的范围内对局部的行进行重新排序,以尽量减少填充到基本ELL结构中的零的数量,δ的值一般是C的倍数。图12展示了稀疏矩阵使用SELL-C-δ格式存储的主要数据布局,其中C=4,δ=8。
虽然SELL-C-δ格式可以为规则的稀疏矩阵带来很好的向量化,但对于稀疏矩阵的非零元分布不规则的情况,它的负载均衡的表现可能很差。因此,在第三优化选项中还结合了CSR5格式,以获得良好的向量化和对不规则稀疏矩阵的负载均衡。
请参阅图13,CSR5格式存储稀疏矩阵是通过使用大小相同的2D块(通常一块包含不超过100个非零元,并且块的列数等于SIMD的单位宽度)来实现的。因为每一个块是一个基本的工作单元,存储的非零元素不一定是稀疏矩阵的一整行的非零元素或一整行中的一部分的非零元素,所以整个SpMV运算可以实现负载均衡的效果。此外,每个SIMD操作一个2D块中的一列,这样可以实现向量化的效果。图13展示了了稀疏矩阵使用CSR5格式存储的主要数据布局,使用到了4个大小为4×4的2D块。
因为每个优化选项都会被设计成为黑匣子,因此对于不同的稀疏矩阵,本发明的用于优化稀疏矩阵-向量乘的并行处理方法通过自动选择优化选项,以采用不同的优化方法对稀疏矩阵进行操作,从而得到最好的性能。此外,由于不能保证第三优化选项中两种优化方法总是比第二优化选项和第一优化选项的速度快,所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法将第三优化选项当前取得的SpMV的性能与第二优化选项和第一优化选项中的SpMV性能进行比较。最后,选择最好的性能(可能是采用第一优化选项输出的性能、第二优化选项输出的性能或第三优化选项输出的性能)作为第三优化选项输出的性能。
下面结合图5描述本发明的用于优化稀疏矩阵-向量乘的并行处理方法,稀疏矩阵采用第四优化选项进行优化时,具体包括以下步骤:
S141、基于图或超图分割技术对待处理的稀疏矩阵进行重新排序。
S142、对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作,输出待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能。
在前两个优化选项实现负载均衡和向量化之后,第四优化选项将重点放在实现更好的数据局部性上。
在对SpMV算法的优化方法中,向量x的不规则访问通常是SpMV工作的主要性能瓶颈之一。因此,在第四优化选项中重新排布稀疏矩阵的行和列,以增加向量x的数据重用性。除了对共享内存的SpMV工作的研究外,还有另一组工作致力于通过在分布式内存平台上的图或超图分割重新排列稀疏矩阵来加速SpMV运算。图或超图分割可以通过平衡计算和减少通信来有效地提高可伸缩性。由于节点之间的通信(即将向量x的一部分从远端转移到近端)类似于在共享内存上访问向量x,因此在本发明的用于优化稀疏矩阵-向量乘的并行处理方法中使用这一思想作为第四优化选项。
在第四优化选项中,对于稀疏矩阵的重新排序,优选的,采用METIS作为图或超图分割的工具。请参阅图14,经过在第四优化选项的优化后,稀疏矩阵首先被均匀地划分为四个区域,经过图或超图分割工具的划分之后,每个区域的非零元个数大致相同。此外,划分后的大多数非零元分布在对角块上,这意味着对向量x访问的表现可能会更好。具体来说,在原始稀疏矩阵(图14的(a))中,四个对角线块总共包含了25个非零元,小于重新排序后稀疏矩阵的对角线块中的50个非零元(图14的(c))。
同样的,由于不能保证第四优化选项输出的性能总是比第三优化选项输出的性能好,所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法将第四优化选项得到的SpMV性能与第四优化选项得到的SpMV性能进行比较。最后,选择最好的性能(可能是第四优化选项输出的性能、第三优化选项输出的性能、第二优化选项输出的性能或者第一优化选项输出的性能)作为第四优化选项输出的性能。
如图1中的③所示,在本发明的用于优化稀疏矩阵-向量乘的并行处理方法中重点考虑到了预处理时间(Tp)(预处理时间(Tp)是每一个优化选项从读入稀疏矩阵开始到SpMV的执行之间的所有的时间开销)的开销问题。从长期测试实验中发现,在两种不同的优化方法面前,性能之间的差距有可能不是很大,但是预处理时间(Tp)之间的差距却是巨大的。因此,尽管有些优化方案在SpMV的执行上得到了可观的性能,但是它们的预处理时间往往会是一笔巨大的开销。所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法充分考虑到了预处理时间这个变量。
为了给预处理时间(Tp)确定一个合理的范围,本发明的用于优化稀疏矩阵-向量乘的并行处理方法使用N值进行定义。对于一个完整的稀疏矩阵的计算操作,为了保证实验结果没有偶然性,一般会迭代多次的SpMV运算。优化后的整体时间与优化前的整体时间可视为:
T_pretreatment+T_optimized\times N_i=T_ordinary\times N_i
当N值到达一定数目后,优化后的整体运行时间就会远小于未优化的整体运行时间,这时预处理消耗的时间在整体时间中的占比减少,我们优化的目的也就达到了。当然得出的N值并不是无限大的,如果大多数的N值超出了设定的阈值,而且性能并没有得到相应的提升,那么这样的优化方法的存在就是没有价值的。在一定阈值之内,我们希望分布的大多数N值越小越好。从应用程序的角度来看,N值与可以执行的迭代次数相关。具体来说,当迭代次数大于N值时,消耗更多的预处理时间来实现SpMV优化的操作是值得的。否则,最好只使用最基本的CSR存储的并行SpMV操作。
本发明的用于优化稀疏矩阵-向量乘的并行处理方法的时间开销是从读取稀疏矩阵后开始计时,一直到执行完毕SpMV算法,并随着优化选项的逐级提升,总时间开销也是逐级增加,同时可以实现并行SpMV的性能的逐级提升。第一优化选项是运行基本的并行CSR存储的SpMV操作,因此它理想的N值始终为1;第二优化选项的理想N值可以保持在十次级别以内;第三优化选项的理想N值在百次级别以内;第四优化选项的理想N值高达千次级别。举个例子,如果迭代次数约为100次,那么选择第三优化选项通常会获得最佳的整体性能。
本发明的用于优化稀疏矩阵-向量乘的并行处理方法可以根据不同稀疏矩阵的稀疏结构制定相应的选择策略(黑匣子)即在每种优化选择中通过稀疏矩阵的不规则度选择不同的优化算法
下面对本发明提供的用于优化稀疏矩阵-向量乘的并行处理装置进行描述,下文描述的用于优化稀疏矩阵-向量乘的并行处理装置与上文描述的用于优化稀疏矩阵-向量乘的并行处理方法可相互对应参照。
下面结合图6和图10描述本发明的用于优化稀疏矩阵-向量乘的并行处理装置,本发明的用于优化稀疏矩阵-向量乘的并行处理装置综合考虑性能提升上、总时间开销上以及实际应用上等因素,旨在优化SpMV运算,将现有的关于SpMV运算的优化方案与选择策略相结合,设计一个多级优化框架,给SpMV运算带来更高的实用性,该装置包括:
多级优化模块100,输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的优化选项并行进行对应次数的迭代。
性能输出模块200,用于获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出。
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项,第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作,第一优化选项提供基础的性能,并且作为其他优化选项的参考;第二优化选项使用CSR格式存储稀疏矩阵,对稀疏矩阵进行负载均衡优化后执行并行稀疏矩阵-向量乘操作,以解决线程负载不均衡的问题;第三优化选项使用SELL-C-δ或CSR5格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作,以实现向量化和细粒度的负载均衡;第四优化选项将重点放在实现更好的数据局部性上,对待处理的稀疏矩阵进行重新排序,对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作。
在多级优化模块100中:
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项。
在本实施例中,第一次数为1次,第二次数为2至99次,第三次数为100至999次,第四次数为大于999次。
在性能输出模块200中,同时不管迭代次数为多少次,在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
本发明提供的用于优化稀疏矩阵-向量乘的并行处理装置,通过多级优化模块100执行不同的优化选项,并行进行对应次数的迭代,SpMV总时间开销是从读取稀疏矩阵后开始计时,一直到执行完毕SpMV算法,并随着优化选项的逐级提升,总时间开销也是逐级增加,同时这些优化选项可供用户自主选择,将现有的关于SpMV运算的优化方案与选择策略相结合,综合考虑性能提升上、总时间开销上以及实际应用上等因素,设计一个多级优化框架,给SpMV运算带来更高的实用性。
第一优化选项使用最简单OpenMP指令,第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作,输出对应的稀疏矩阵-向量乘的性能。同时,第一优化选项提供本发明用于优化稀疏矩阵-向量乘的并行处理装置最基础的性能,并作为第二优化选项、第三优化选项和第四优化选项输出的性能的参考。
下面结合图7描述本发明的用于优化稀疏矩阵-向量乘的并行处理装置,稀疏矩阵采用第二优化选项进行优化时,多级优化模块100具体包括:
第一判断单元121,用于判断是否有线程未工作;
第一优化单元122,用于若不存在未工作的线程,使用CSR-LBL格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
第二优化单元123,用于若存在未工作的线程,使用CSR-LBLT格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
由于不能保证第二优化选项中两种优化方法总是比第一优化选项的速度快,所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法将第二优化选项当前取得的SpMV的性能与第一优化选项中的SpMV性能进行比较。最后,选择最好的性能(可能是采用第一优化选项输出的性能或第二优化选项输出的性能)作为第二优化选项输出的性能。
下面结合图8描述本发明的用于优化稀疏矩阵-向量乘的并行处理装置,稀疏矩阵采用第三优化选项进行优化时,多级优化模块100具体包括:
第二判断单元131,用于获取稀疏矩阵的行的变化;其中,所述行的变化为稀疏矩阵行长度标准差与行平均长度的比值。
第三优化单元132,用于若行的变化大于设定的阈值vt,使用CSR5格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
第四优化单元133,用于若行的变化不大于设定的阈值vt,使用SELL-C-δ格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
因为每个优化选项都会被设计成为黑匣子,因此对于不同的稀疏矩阵,本发明的用于优化稀疏矩阵-向量乘的并行处理方法通过自动选择优化选项,以采用不同的优化方法对稀疏矩阵进行操作,从而得到最好的性能。此外,由于不能保证第三优化选项中两种优化方法总是比第二优化选项和第一优化选项的速度快,所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法将第三优化选项当前取得的SpMV的性能与第二优化选项和第一优化选项中的SpMV性能进行比较。最后,选择最好的性能(可能是采用第一优化选项输出的性能、第二优化选项输出的性能或第三优化选项输出的性能)作为第三优化选项输出的性能。
下面结合图9描述本发明的用于优化稀疏矩阵-向量乘的并行处理装置,稀疏矩阵采用第四优化选项进行优化时,多级优化模块100具体包括:
重新排序单元141,用于基于图或超图分割技术对待处理的稀疏矩阵进行重新排序。
第五优化单元142,用于对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作,输出待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能。
在前两个优化选项实现负载均衡和向量化之后,第四优化选项将重点放在实现更好的数据局部性上。
同样的,由于不能保证第四优化选项输出的性能总是比第三优化选项输出的性能好,所以本发明的用于优化稀疏矩阵-向量乘的并行处理方法将第四优化选项得到的SpMV性能与第四优化选项得到的SpMV性能进行比较。最后,选择最好的性能(可能是第四优化选项输出的性能、第三优化选项输出的性能、第二优化选项输出的性能或者第一优化选项输出的性能)作为第四优化选项输出的性能。
图15示例了一种电子设备的实体结构示意图,如图15所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行用于优化稀疏矩阵-向量乘的并行处理方法,该方法包括以下步骤:
S100、输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
S200、获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的用于优化稀疏矩阵-向量乘的并行处理方法,该方法包括以下步骤:
S100、输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
S200、获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的用于优化稀疏矩阵-向量乘的并行处理方法,该方法包括以下步骤:
S100、输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
S200、获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种用于优化稀疏矩阵-向量乘的并行处理方法,其特征在于,包括以下步骤:
输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能;
其中,所述第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作;所述第二优化选项使用CSR格式存储稀疏矩阵,对稀疏矩阵进行负载均衡优化后执行并行稀疏矩阵-向量乘操作;所述第三优化选项使用SELL-C-δ或CSR5格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作;所述第四优化选项对待处理的稀疏矩阵进行重新排序,对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作;
其中,所述第一次数、所述第二次数、所述第三次数和所述第四次数是递增的。
2.根据权利要求1所述的用于优化稀疏矩阵-向量乘的并行处理方法,其特征在于,所述第一次数为1次,所述第二次数为2至99次,所述第三次数为100至999次,所述第四次数为大于999次。
3.根据权利要求1所述的用于优化稀疏矩阵-向量乘的并行处理方法,其特征在于,所述第一优化选项使用OpenMP指令。
4.根据权利要求1所述的用于优化稀疏矩阵-向量乘的并行处理方法,其特征在于,稀疏矩阵采用第二优化选项进行优化时,具体包括以下步骤:
判断是否有线程未工作;
若不存在未工作的线程,使用CSR-LBL格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能;
若存在未工作的线程,使用CSR-LBLT格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
5.根据权利要求1所述的用于优化稀疏矩阵-向量乘的并行处理方法,其特征在于,稀疏矩阵采用第三优化选项进行优化时,具体包括以下步骤:
获取稀疏矩阵的行的变化;其中,所述行的变化为稀疏矩阵行长度标准差与行平均长度的比值;
若行的变化大于设定的阈值vt,使用CSR5格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能;
若行的变化不大于设定的阈值vt,使用SELL-C-δ格式存储待处理的稀疏矩阵,并对待处理的稀疏矩阵执行并行稀疏矩阵-向量乘操作并输出对应的稀疏矩阵-向量乘的性能。
6.根据权利要求1所述的用于优化稀疏矩阵-向量乘的并行处理方法,其特征在于,稀疏矩阵采用第四优化选项进行优化时,具体包括以下步骤:
基于图或超图分割技术对待处理的稀疏矩阵进行重新排序;
对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作,输出待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能。
7.一种用于优化稀疏矩阵-向量乘的并行处理装置,其特征在于,包括:
多级优化模块(100),用于输入待处理的稀疏矩阵,根据迭代次数,确定当前的优化选项,并根据当前的所述优化选项并行进行对应次数的迭代;
性能输出模块(200),用于获取每次迭代后的稀疏矩阵-向量乘的性能,取迭代后得到的性能的平均值作为待处理的稀疏矩阵对应的稀疏矩阵-向量乘的性能并输出;
其中,优化选项包括第一优化选项、第二优化选项、第三优化选项和第四优化选项;
当迭代次数为第一次数时,当前的优化选项确定为第一优化选项;
当迭代次数为第二次数时,当前的优化选项确定为第一优化选项和第二优化选项;
当迭代次数为第三次数时,当前的优化选项确定为第一优化选项、第二优化选项和第三优化选项;
当迭代次数为第四次数时,当前的优化选项确定为第一优化选项、第二优化选项、第三优化选项和第四优化选项;
在并行进行每次迭代时,将当前确定的优化选项中输出最优的稀疏矩阵-向量乘的性能作为当次迭代的稀疏矩阵-向量乘的性能;
其中,所述第一优化选项使用CSR格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作;所述第二优化选项使用CSR格式存储稀疏矩阵,对稀疏矩阵进行负载均衡优化后执行并行稀疏矩阵-向量乘操作;所述第三优化选项使用SELL-C-δ或CSR5格式存储稀疏矩阵,并对稀疏矩阵执行并行稀疏矩阵-向量乘操作;所述第四优化选项对待处理的稀疏矩阵进行重新排序,对重新排序后的稀疏矩阵执行并行稀疏矩阵-向量乘操作;
其中,所述第一次数、所述第二次数、所述第三次数和所述第四次数是递增的。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述用于优化稀疏矩阵-向量乘的并行处理方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述用于优化稀疏矩阵-向量乘的并行处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110541392.2A CN113360188B (zh) | 2021-05-18 | 2021-05-18 | 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110541392.2A CN113360188B (zh) | 2021-05-18 | 2021-05-18 | 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360188A CN113360188A (zh) | 2021-09-07 |
CN113360188B true CN113360188B (zh) | 2023-10-31 |
Family
ID=77526506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110541392.2A Active CN113360188B (zh) | 2021-05-18 | 2021-05-18 | 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360188B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN106407158A (zh) * | 2016-09-12 | 2017-02-15 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN106775594A (zh) * | 2017-01-13 | 2017-05-31 | 中国科学院软件研究所 | 一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
CN108596326A (zh) * | 2018-04-25 | 2018-09-28 | 北京邮电大学 | 一种支持大规模组合优化问题的稀疏蚂蚁***及求解方法 |
CN109086819A (zh) * | 2018-07-26 | 2018-12-25 | 北京京东尚科信息技术有限公司 | caffemodel模型压缩方法、***、设备及介质 |
CN110443359A (zh) * | 2019-07-03 | 2019-11-12 | 中国石油大学(华东) | 基于自适应联合剪枝-量化的神经网络压缩算法 |
CN111796796A (zh) * | 2020-06-12 | 2020-10-20 | 杭州云象网络技术有限公司 | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 |
CN111984418A (zh) * | 2020-07-20 | 2020-11-24 | 中国人民解放军国防科技大学 | 稀疏矩阵向量乘并行任务粒度参数自动调优方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160259826A1 (en) * | 2015-03-02 | 2016-09-08 | International Business Machines Corporation | Parallelized Hybrid Sparse Matrix Representations for Performing Personalized Content Ranking |
-
2021
- 2021-05-18 CN CN202110541392.2A patent/CN113360188B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN106407158A (zh) * | 2016-09-12 | 2017-02-15 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN106775594A (zh) * | 2017-01-13 | 2017-05-31 | 中国科学院软件研究所 | 一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
CN108596326A (zh) * | 2018-04-25 | 2018-09-28 | 北京邮电大学 | 一种支持大规模组合优化问题的稀疏蚂蚁***及求解方法 |
CN109086819A (zh) * | 2018-07-26 | 2018-12-25 | 北京京东尚科信息技术有限公司 | caffemodel模型压缩方法、***、设备及介质 |
CN110443359A (zh) * | 2019-07-03 | 2019-11-12 | 中国石油大学(华东) | 基于自适应联合剪枝-量化的神经网络压缩算法 |
CN111796796A (zh) * | 2020-06-12 | 2020-10-20 | 杭州云象网络技术有限公司 | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 |
CN111984418A (zh) * | 2020-07-20 | 2020-11-24 | 中国人民解放军国防科技大学 | 稀疏矩阵向量乘并行任务粒度参数自动调优方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘伟峰.高可扩展、高性能和高实用的稀疏矩阵计算研究进展与挑战.《数值计算与计算机应用》.2020,第41卷(第4期),259-281. * |
Also Published As
Publication number | Publication date |
---|---|
CN113360188A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102011671B1 (ko) | 이종 계산 장치 기반의 질의 처리 방법 및 장치 | |
Peng et al. | Parallel and distributed sparse optimization | |
JP6927320B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
KR20180075368A (ko) | 인공 신경망 모델에서 메모리 효율성 및 학습 속도 향상을 위한 드롭아웃 방법과 이를 이용한 학습 방법 | |
KR20170128080A (ko) | 신경 네트워크를 구현하는 방법 및 장치 | |
EP4033379A1 (en) | Implementing dilated convolution in hardware | |
US20200090051A1 (en) | Optimization problem operation method and apparatus | |
JP2021022373A (ja) | 負荷を均衡化するための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム | |
Shin et al. | Enhanced partitioning of dnn layers for uploading from mobile devices to edge servers | |
CN113886092A (zh) | 一种计算图执行方法、装置及相关设备 | |
WO2023134453A1 (zh) | 一种算子的处理方法及计算机设备 | |
Nomura et al. | Algebraic Multigrid Solver using coarse grid aggregation with independent aggregation | |
KR102643431B1 (ko) | 심층 강화학습을 위한 심층 신경망 학습 가속 장치 및 그 방법 | |
CN113360188B (zh) | 一种用于优化稀疏矩阵-向量乘的并行处理方法及装置 | |
US20030144748A1 (en) | Apparatus for optimizing combinatorial optimization problems | |
US11010515B2 (en) | Implementing fixed-point polynomials in hardware logic | |
US20210049496A1 (en) | Device and methods for a quantum circuit simulator | |
Kamiura et al. | MOGADES: Multi-objective genetic algorithm with distributed environment scheme | |
KR102657904B1 (ko) | 뉴럴 네트워크에서의 다중 레벨 단계적 양자화 방법 및 장치 | |
Alba et al. | Advanced models of cellular genetic algorithms evaluated on SAT | |
Sarma et al. | Exploiting activation based gradient output sparsity to accelerate backpropagation in cnns | |
CN112580796A (zh) | 用于神经网络的剪枝方法、装置以及*** | |
Boulmier et al. | On the benefits of anticipating load imbalance for performance optimization of parallel applications | |
US20240119254A1 (en) | Mapping neural networks to hardware | |
CN113255269B (zh) | 一种性能驱动的多fpga雅克比模版计算最优部署方法及*** |
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 |