[发明专利]一种稀疏矩阵加速计算方法、装置、设备及介质有效
申请号: | 202110024925.X | 申请日: | 2021-01-08 |
公开(公告)号: | CN112732222B | 公开(公告)日: | 2023-01-10 |
发明(设计)人: | 杨琳琳 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F7/523 | 分类号: | G06F7/523;G06F17/16 |
代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 刘小峰;李红萧 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 稀疏 矩阵 加速 计算方法 装置 设备 介质 | ||
1.一种稀疏矩阵加速计算方法,其特征在于,所述方法包括:
读取待相乘的第一稀疏矩阵,对所述第一稀疏矩阵进行非零检测,并根据检测结果生成所述第一稀疏矩阵每行数据的第一状态信息并存储至寄存器;
将检测到的第一稀疏矩阵的非零数据存储至RAM;
读取待相乘的第二稀疏矩阵,对所述第二稀疏矩阵进行非零检测,并根据检测结果生成所述第二稀疏矩阵每列数据的第二状态信息并存储至寄存器;
对第一状态信息和第二状态信息进行逻辑运算,根据逻辑运算结果读取RAM中的数据并与第二稀疏矩阵的数据进行乘积运算以得到乘积矩阵的数据;
所述将检测到的第一稀疏矩阵的非零数据存储至RAM的步骤包括:
将所述RAM划分为若干子RAM;
将同一行的非零数据及该数据的列号按列号从小到大存储至同一个子RAM中,并生成每行的每个非零数据的列号与子RAM存储地址对应关系的地址码表,以及生成每个非零行的行号与每一个子RAM对应关系表;
所述读取待相乘的第二稀疏矩阵,对所述第二稀疏矩阵进行非零检测,并根据检测结果生成所述第二稀疏矩阵每列数据的第二状态信息并存储至寄存器的步骤包括:
按列读取第二稀疏矩阵的数据;
将每一列的若干数据分别与零进行比较;
若读取的数据等于零,则将数据对应的状态位标记为0;
若读取的数据不等于零,则将数据对应的状态位标记为1;
将每一列的若干数据的状态位标记按行号从小到大排列得到所述第二状态信息;
所述对第一状态信息和第二状态信息进行逻辑运算,根据逻辑运算结果读取RAM中的数据并与第二稀疏矩阵的数据进行乘积运算以得到乘积矩阵的数据的步骤包括:
将第二稀疏矩阵某一列的第二状态信息与每个第一稀疏矩阵的第一状态信息进行按位与运算;
响应于按位与运算结果不等于零,则获取按位与运算结果中状态位标记等于1的位号,将某一列的列号作为目标列号,将第一状态信息对应的行号作为目标行号;
根据所述目标行号和每个非零行的行号与每一个子RAM对应关系表确定目标子RAM;
将所述位号与每行的每个非零数据的列号与子RAM存储地址对应关系的地址码表进行匹配以确定第一目标数据,并将所述位号和所述某一列的数据的行号进行匹配以确定第二目标数据;
对相同位号对应的所述第一目标数据和所述第二目标数据进行乘积操作,并将不同位号对应的乘积操作结果累加,以得到乘积矩阵位于所述目标行号和所述目标列号处的目标数据值。
2.根据权利要求1所述的方法,其特征在于,所述读取待相乘的第一稀疏矩阵,对所述第一稀疏矩阵进行非零检测,并根据检测结果生成所述第一稀疏矩阵每行数据的第一状态信息并存储至寄存器的步骤包括:
按行读取第一稀疏矩阵的数据;
将每一行中的数据分别与零进行比较;
若读取的数据等于零,则将数据对应的状态位标记为0;
若读取的数据不等于零,则将数据对应的状态位标记为1;
将每一行的若干数据的状态位标记按列号从小到大排列得到所述第一状态信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述目标数据值携带所述目标行号和目标列号存储至DMA,并对所述目标数据值的数量进行统计,并将统计值存储至寄存器。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
响应于第一稀疏矩阵与所述第二稀疏矩阵完成乘积运算,则产生中断信号,并利用上层软件读取寄存器中所述统计值;
根据所述统计值读取DMA中的目标数据及其携带的目标行号和目标列号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110024925.X/1.html,转载请声明来源钻瓜专利网。