System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算数据处理领域、并行程序任务分配,并特别涉及一种基于哈希的稀疏矩阵向量乘法优化方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
技术介绍
1、在计算稀疏矩阵向量乘法中,由于稀疏矩阵存在大量零元素,因此绝大多数计算资源被浪费了,且由于稀疏矩阵规模庞大,对应的向量同样需要占用大量存储,导致其难以完整存储在一些边缘设备的高带宽存储上,在计算过程中需频繁访问低带宽存储,造成大量访存开销。
2、现有技术1为此提出基于每个线程在处理相同数目非零元素时具有相同时间开销的假设提出csr5存储格式,将稀疏矩阵中的非零元素逐行填充进固定大小的矩阵块中,实现每个并行单元处理相同数目的非零元素,具有相同的计算量,并引入如图1中bit-flag等数组辅助线程间并行。该方法在小规模的稀疏矩阵上取得了较好的效果,但并未考虑到实际应用中稀疏矩阵具有大规模的特点,当输入为大规模的稀疏矩阵,同一时刻同一线程束内各线程处理的元素可能位于不同带宽的存储上,这会导致访存时间不同从而破坏上述假设,导致同一线程束内各线程的实际运行速度受限于访问低带宽存储的线程。
3、现有技术2考虑到处理大规模稀疏矩阵时的访存问题,并据此提出regu2d存储格式,该格式采用二维划分方法,将稀疏矩阵向量乘法进一步划分为各子矩阵块独立进行矩阵向量乘法,以及产生的中间向量组合并两个步骤,如图2所示。并且该方法采用动态规划,将非零元素数目相近的行在同一线程束内计算,并引入零填充从而保证每个线程束具有相同的计算任务。该方法在计算速度上取得了较好的效果,
4、第一,上述现有技术1在保证并行负载均衡的同时忽略了对存储访问的考虑,由于计算特点,线程在向量上随机访问,而高带宽存储不足以保存完整的向量,这导致需要对低带宽存储频繁访问,因此造成了大量访存的时间开销。而本专利技术中使用二维划分方法保证各子矩阵块对向量访问的局部性,因此只需在高带宽的gpu共享存储上存储向量片段,减少访存造成的时间开销。第二,上述现有技术2采用二维划分方法,保证子矩阵块内的并行负载均衡,但并未考虑到各子矩阵块间负载可能并不相同,这是稀疏矩阵非零元素的分布导致的,而当前的二维划分方法并没有很好的实现线程束间的负载均衡。第三,不论现有技术1还是现有技术2都存在方法的预处理成本较高问题,需要设计一种轻量化、可并行的预处理方式。
技术实现思路
1、本专利技术的目的是解决上述现有技术的块间并行负载不均以及预处理成本过大问题,提出了一种基于哈希的稀疏矩阵向量乘法优化方法。
2、具体来说,针对现有技术的不足,如图7所示,本专利技术提出一种基于哈希的稀疏矩阵向量乘法优化方法,其中包括:
3、初始步骤,依据神经网络硬件加速器的硬件结构,对待矩阵向量乘的稀疏矩阵进行划分,得到多个稀疏矩阵块,对该多个稀疏矩阵块进行线性哈希映射,得到待划分矩阵;
4、划分步骤,根据该待划分矩阵的规模及该硬件结构,划分该待划分矩阵,得到该待划分矩阵的并行执行部分和竞争执行部分,其中该并行执行部分和该竞争执行部分各自包含多个子矩阵块;
5、执行步骤,神经网络硬件加速器通过对该子矩阵块间竞争执行计算任务,块内并行执行计算任务,得到多个子矩阵计算结果,并通过查找哈希表还原写入的原本顺序;
6、合并步骤,根据该原本顺序合并该多个子矩阵计算结果,得到矩阵向量乘的最终结果。
7、所述的基于哈希的稀疏矩阵向量乘法优化方法,其中该初始步骤包括:
8、依据硬件结构构建输入稀疏矩阵的二维划分模型,对稀疏矩阵块进行线性哈希映射,将稀疏矩阵存储格式转换为hbp格式的该待划分矩阵,具体的:
9、该格式转换在划分后的稀疏矩阵块间实现并行,处理步骤主要由数据起止位置搜索,子矩阵块内线性哈希映射和hbp存储格式生成三部分组成,数据起止位置搜索通过二分查找获取当前正在处理的稀疏矩阵块中各行的首个非零元素位置,并顺序遍历直至在当前稀疏矩阵块的范围中对应行的最后一个元素位置;
10、稀疏矩阵块内线性哈希映射以各行非零元素数目为输入,利用线性哈希变换聚集相近元素的特点,将稀疏矩阵块内各行行号映射到与之前大小相同的哈希表内,并使得非零元素数目相同或相近的行能够映射到相邻的位置;哈希变换的结果存储在一张定长的哈希表中,其长度等于二维划分后每个稀疏矩阵块所包含的行数之和,大小为该稀疏矩阵行的总数num_of_row乘稀疏矩阵在列方向稀疏矩阵块数block_col_num,哈希表初始值记为-1表示当前该位置为空;哈希表的索引为实际执行时的顺序,哈希表中存储的值为对应的原始行位置,所使用的哈希变换具体见下式:
11、
12、式中,output_hash为输出的对应行的位置,在矩阵向量乘法计算中根据该位置先后执行计算,其范围大于等于0小于块内行数end_row,block_row_nnz为稀疏矩阵块内该行的非零元素数目,该数值在数据起止位置搜索步骤得到,hbp_m和hbp_n分别为二维划分的行和列大小,ρ为输入的矩阵整体的稀疏度,ω为该神经网络加速器的单指令多线程模式下一组线程束的大小;hbp_m的取值需为ω的整数倍,i为位置偏移量,当哈希映射的位置发生冲突时更改i以寻找邻近的空闲位置,end_row为稀疏矩阵块所包含的行数,稀疏矩阵中最后一行块包含的行数可能小于hbp_m,需要进行判断,end_row取值具体见下式:
13、
14、式中,num_of_row为输入的矩阵整体的行数目,block_row_num为输入矩阵经过二维划分后在行方向上的稀疏矩阵块数,block_m为当前正在处理的稀疏矩阵块对应的行号,block_m取值范围大于等于0小于block_row_num;
15、hbp存储格式包含非零元素列号cols,非零元素值data,块内访问非零元素索引add_sign,零行索引zero_row,各个块首个非零元素所存储的位置begin_nnz以及哈希表output_hash,hbp存储格式在非零元素列号cols、非零元素值data上的长度和非零元素索引add_sign的长度均等于非零元素数目,零行索引zero_row和哈希表output_hash长度等于行数乘以列块数,各个块首个非零元素所存储的位置begin_nnz等于总稀疏矩阵块数;每个二维划分后的稀疏矩阵块作为数据存储和读取的基本单元。
16、所述的基于哈希的稀疏矩阵向量乘法优化方法,其中该划分步骤包括:
17、并行执行部分及竞争执行部分的划分根据该稀疏矩阵的规模和稀疏矩阵块尺寸计算得到,并行执行部分划分过程遵循各个线程分配相同数目的块计算任务,同一线程中待计算的块应尽量位于相同的列中的原则;未被划分为并行执行的部分则被归为竞争执行部分,竞争执行部分中每一个子矩阵块在本文档来自技高网...
【技术保护点】
1.一种基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,包括:
2.如权利要求1所述的基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,该初始步骤包括:
3.如权利要求1所述的基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,该划分步骤包括:
4.如权利要求2所述的基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,该执行步骤包括:
5.一种基于哈希的稀疏矩阵向量乘法优化装置,其特征在于,包括:
6.如权利要求5所述的基于哈希的稀疏矩阵向量乘法优化装置,其特征在于,该初始模块包括:
7.如权利要求5所述的基于哈希的稀疏矩阵向量乘法优化装置,其特征在于,该划分模块包括:
8.一种电子设备,其特征在于,包括权利要求5-7所述的一种基于哈希的稀疏矩阵向量乘法优化装置,该电子设备或连接有信息显示设备,该信息显示设备用于以用户设置的显示参数、属性或通过人工智能模型,显示该矩阵向量乘的最终结果。
9.一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1-4中任一所述基于哈
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-4中任一所述基于哈希的稀疏矩阵向量乘法优化方法的步骤。
...【技术特征摘要】
1.一种基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,包括:
2.如权利要求1所述的基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,该初始步骤包括:
3.如权利要求1所述的基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,该划分步骤包括:
4.如权利要求2所述的基于哈希的稀疏矩阵向量乘法优化方法,其特征在于,该执行步骤包括:
5.一种基于哈希的稀疏矩阵向量乘法优化装置,其特征在于,包括:
6.如权利要求5所述的基于哈希的稀疏矩阵向量乘法优化装置,其特征在于,该初始模块包括:
7.如权利要求5所述的基于哈希的稀疏矩阵向量乘...
【专利技术属性】
技术研发人员:刁博宇,闫晨,刘杭达,徐勇军,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。