一种稀疏矩阵乘指令实现方法及系统

    专利2026-08-07  5


    本发明涉及处理器,特别是涉及一种稀疏矩阵乘指令实现方法及系统。


    背景技术:

    1、如何在不太影响性能的前提下减少神经网络的计算量,是目前神经网络优化的重点方向。

    2、现有技术中,通过剪除训练好的模型中一些不重要的参数,从而压缩神经网络的规模。由于剪除的是权重较小的参数,因此对模型输出结果的影响很小。这种方法被称为剪枝,经过不断的研究和发展,剪枝已经成为了最重要的神经网络优化技术之一,经过剪枝,可以使得轻量级的网络在边缘设备上也能有较快的推理速度,并且推理结果精度与压缩前的网络接近。

    3、目前,常规的稀疏矩阵,例如神经网络细粒度自动剪枝得到的矩阵,往往不够规整,导致出现实际压缩比不高、访存不均匀、负载不均衡等情况,在常规计算装置上无法达到理论性能,对矩阵乘的加速没有明显的帮助。

    4、因此,提供一种对存储空间、访存带宽有显著优化效果,可以减少存储体访问冲突,实现负载均衡,且针对不同稀疏度优化后的稀疏矩阵乘效率有明显提升的稀疏矩阵乘指令实现方法及系统是本领域技术人员亟待解决的问题。


    技术实现思路

    1、本发明的目的在于提供一种稀疏矩阵乘指令实现方法及系统,该方法逻辑清晰,安全、有效、可靠且操作简便,对存储空间、访存带宽有显著优化效果,可以减少存储体访问冲突,实现负载均衡,且针对不同稀疏度优化后的稀疏矩阵乘效率有明显提升。

    2、基于以上目的,本发明提供的技术方案如下:

    3、一种稀疏矩阵乘指令实现方法,包括如下步骤:

    4、根据稀疏矩阵乘指令中的矩阵规模、稀疏度和数据类型,获取压缩后的稀疏矩阵;

    5、根据加载的所述压缩后的稀疏矩阵的行编号和稀疏索引矩阵,获取稀疏索引矩阵数据;

    6、根据所述矩阵规模、所述行编号和所述稀疏索引矩阵数据,获取稠密矩阵;

    7、根据所述稀疏索引矩阵数据,使所述压缩后的稀疏矩阵和所述稠密矩阵执行矩阵乘操作,以获取目标矩阵,并写入所述目标矩阵对应的寄存器中。

    8、优选地,所述根据稀疏矩阵乘指令中的矩阵规模、稀疏度和数据类型,获取压缩后的稀疏矩阵,包括如下步骤:

    9、预设初始稀疏矩阵和所述稀疏度为s;

    10、根据所述初始稀疏矩阵的矩阵规模和数据类型,将所述初始稀疏矩阵中每一行分割为长度为a的k/a个向量;

    11、分别对每一个所述向量进行剪枝,以保留其中a×s个非零元素,生成所述压缩后的稀疏矩阵。

    12、优选地,获取稀疏索引矩阵,包括如下步骤:

    13、在分别对每一个所述向量进行剪枝过程中,生成每一个所述向量的索引值;

    14、整合每一个所述向量的索引值,生成所述稀疏索引矩阵。

    15、优选地,获取稠密矩阵,具体为:

    16、根据所述矩阵规模,在对应的寄存器中,读取所述行编号和所述稀疏索引矩阵数据相等的矩阵数据,作为所述稠密矩阵。

    17、优选地,所述根据所述压缩后的稀疏矩阵、所述稀疏索引矩阵数据和所述获取稠密矩阵执行矩阵乘操作,以获取目标矩阵,包括如下步骤:

    18、分别读取所述压缩后的稀疏矩阵第i行、所述稀疏索引矩阵第i行和所述稠密矩阵第i列;

    19、根据所述稀疏索引矩阵第i行数据值对所述稠密矩阵的第j列进行筛选,以获取所述稠密矩阵第j列数据值;

    20、将所述压缩后的稀疏矩阵第i行数据值和所述稠密矩阵第j列数据值点积,以获取目标矩阵第i行第j列数据值;

    21、重复上述步骤,以获取所述目标矩阵所有行和所有列的数据值。

    22、优选地,所述写入所述目标矩阵对应的寄存器中,具体为:

    23、以获取所述目标矩阵所有行和所有列的数据值的顺序,分别将所述目标矩阵每一行每一列的数据值写入对应的寄存器中。

    24、一种稀疏矩阵乘指令实现系统,包括:稀疏矩阵模块、索引矩阵数据模块、稠密矩阵模块和目标矩阵模块;

    25、所述稀疏矩阵模块,用于根据稀疏矩阵乘指令中的矩阵规模、稀疏度和数据类型,获取压缩后的稀疏矩阵;

    26、所述索引矩阵数据模块,用于根据加载的所述压缩后的稀疏矩阵的行编号和稀疏索引矩阵,获取稀疏索引矩阵数据;

    27、所述稠密矩阵模块,用于根据所述矩阵规模、所述行编号和所述稀疏索引矩阵数据,获取稠密矩阵;

    28、所述目标矩阵模块,用于根据所述稀疏索引矩阵数据,使所述压缩后的稀疏矩阵和所述稠密矩阵执行矩阵乘操作,以获取目标矩阵,并写入所述目标矩阵对应的寄存器中。

    29、本发明提供的稀疏矩阵乘指令实现方法,是通过已获取的稀疏矩阵乘指令中的矩阵规模、稀疏度和数据类型,对初始的稀疏矩阵进行压缩,得到压缩后的稀疏矩阵;通过加载的压缩后的稀疏矩阵的行编号和根据稀疏矩阵建立的稀疏索引矩阵,获取稀疏索引矩阵数据;通过矩阵规模、行编号和稀疏索引矩阵数据,获取稠密矩阵;通过稀疏索引矩阵数据使压缩后的稀疏矩阵和稠密矩阵执行矩阵乘操作,从而获得目标矩阵,并将目标矩阵写入对应的寄存器中。

    30、相比于现有技术,本发明可以无需额外的逻辑判断快速得到压缩的稀疏矩阵,并且根据相应的稀疏索引矩阵数据和稠密矩阵进行矩阵乘操作,以使得对存储空间、访存带宽有显著优化效果,可以减少存储体访问冲突,实现负载均衡,且针对不同稀疏度优化后的稀疏矩阵乘效率有明显提升。

    31、本发明还提供了一种稀疏矩阵乘指令实现系统,由于该系统与该方法属于相同的技术构思,解决相同的技术问题,理应具有相同的有益效果,在此不再赘述。



    技术特征:

    1.一种稀疏矩阵乘指令实现方法,其特征在于,包括如下步骤:

    2.如权利要求1所述的稀疏矩阵乘指令实现方法,其特征在于,所述根据稀疏矩阵乘指令中的矩阵规模、稀疏度和数据类型,获取压缩后的稀疏矩阵,包括如下步骤:

    3.如权利要求2所述的稀疏矩阵乘指令实现方法,其特征在于,获取稀疏索引矩阵,包括如下步骤:

    4.如权利要求1所述的稀疏矩阵乘指令实现方法,其特征在于,获取稠密矩阵,具体为:

    5.如权利要求1所述的稀疏矩阵乘指令实现方法,其特征在于,所述根据所述压缩后的稀疏矩阵、所述稀疏索引矩阵数据和所述获取稠密矩阵执行矩阵乘操作,以获取目标矩阵,包括如下步骤:

    6.如权利要求1所述的稀疏矩阵乘指令实现方法,其特征在于,所述写入所述目标矩阵对应的寄存器中,具体为:

    7.一种稀疏矩阵乘指令实现系统,其特征在于,包括:稀疏矩阵模块、索引矩阵数据模块、稠密矩阵模块和目标矩阵模块;


    技术总结
    本发明提供的稀疏矩阵乘指令实现方法,是通过已获取的稀疏矩阵乘指令中的矩阵规模、稀疏度和数据类型,对初始的稀疏矩阵进行压缩,得到压缩后的稀疏矩阵;通过加载的压缩后的稀疏矩阵的行编号和根据稀疏矩阵建立的稀疏索引矩阵,获取稀疏索引矩阵数据;通过矩阵规模、行编号和稀疏索引矩阵数据,获取稠密矩阵;通过稀疏索引矩阵数据使压缩后的稀疏矩阵和稠密矩阵执行矩阵乘操作,从而获得目标矩阵,并将目标矩阵写入对应的寄存器中,系统具有相同的有益效果。

    技术研发人员:刘胜,郭阳,崔剑峰,雷元武,陈小文,李晨,张洋,刘畅,汤先拓
    受保护的技术使用者:中国人民解放军国防科技大学
    技术研发日:
    技术公布日:2024/4/29
    转载请注明原文地址:https://wp.8miu.com/read-100227.html

    最新回复(0)