[发明专利]用于稀疏-密集矩阵乘法的加速器在审
申请号: | 201910227563.7 | 申请日: | 2019-03-25 |
公开(公告)号: | CN110321525A | 公开(公告)日: | 2019-10-11 |
发明(设计)人: | S·纳拉亚纳穆尔蒂;N·R·萨蒂什;A·苏普鲁恩;K·J·珍妮克 | 申请(专利权)人: | 英特尔公司 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 何焜;黄嵩泉 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 稀疏 矩阵乘法 指令 矩阵 非零元素 取出 输出矩阵 加速器 稀疏度 稀疏源 源矩阵 电路 解码 解码电路 输出元素 指令解码 操作码 累加和 处理器 字段 | ||
1.一种用于执行稀疏-密集矩阵乘法(SDMM)指令的处理器,包括:
取出电路,用于从代码存储取出所述SDMM指令,所述SDMM指令具有用于指定操作码、密集输出矩阵、密集源矩阵和稀疏源矩阵的字段,所述稀疏源矩阵具有非零元素的稀疏度,所述稀疏度小于一;
解码电路,用于对所取出的SDMM指令解码;以及
执行电路,用于响应于经解码的SDMM指令而对于所指定的稀疏源矩阵的行M和列K处的每个非零元素进行以下操作:
生成所述非零元素与所指定的密集源矩阵的行K和列N处的每个对应密集元素的乘积;以及
生成每个所生成的乘积与所指定的密集输出矩阵的行M和列N处的对应输出元素的先前值的累加和。
2.如权利要求1所述的处理器,其特征在于,所述稀疏度为0.125或更小。
3.如权利要求1所述的处理器,其特征在于,所述SDMM指令进一步指定以下各项的数据元素的尺寸:所指定的稀疏源矩阵、所指定的密集源矩阵和所指定的密集输出矩阵,所述尺寸为8位、16位、32位、64位、和128位中的一种,所述尺寸被指定为所述指令的操作数或所述操作码的一部分。
4.如权利要求1所述的处理器,其特征在于,所述SDMM指令进一步指定以下各项的数据元素的格式:所指定的稀疏源矩阵、所指定的密集源矩阵和所指定的密集输出矩阵,所述格式为定点、单精度浮点、双精度浮点、扩展精度浮点、和扩展双精度浮点中的一种。
5.如权利要求1-4中的任一项所述的处理器,其特征在于,所述执行电路使用乘法器生成具有与所指定的稀疏源矩阵、所指定的密集源矩阵和所指定的密集输出矩阵的数据元素相同尺寸的所述乘积,使用累加器生成具有所指定的稀疏源矩阵和所指定的密集源矩阵的数据元素的尺寸的两倍的尺寸的所述累加和,并且在将经饱和与舍入的累加和写入所指定的密集输出矩阵之前对所述累加和中的每一个累加和执行饱和与舍入。
6.如权利要求1-4中的任一项所述的处理器,其特征在于,所述执行电路包括单指令多数据(SIMD)执行电路,所述SIMD执行电路包括多个乘法器和多个累加器以并行地对所指定的稀疏源矩阵的多个非零元素执行经解码的SDMM,所述多个非零元素包括16个元素、32个元素、64个元素、和128个元素中的一种。
7.如权利要求1-4中的任一项所述的处理器,其特征在于,进一步包括存储器读取电路,用于读取所指定的稀疏源矩阵和所指定的密集源矩阵并且将结果写入存储器,其中所指定的稀疏源矩阵以压缩格式存储在所述存储器中,所述压缩格式仅包括所指定的稀疏源矩阵的非零元素,每个非零元素由数据值和矩阵位置表示,并且其中所述存储器读取电路以所述压缩格式读取所指定的稀疏源矩阵。
8.如权利要求7所述的处理器,其特征在于,所述压缩格式为以行为主的顺序存储非零元素的压缩稀疏行(CSR)格式或以列为主的顺序存储非零元素的压缩稀疏列(CSC)格式。
9.如权利要求8所述的处理器,其特征在于,所指定的稀疏源矩阵包括预定数量的行和预定数量的列,并且其中所述矩阵位置指定所指定的稀疏源矩阵内的非零元素的索引。
10.如权利要求8所述的处理器,其特征在于:
其中所指定的稀疏源矩阵包括预定数量的行和预定数量的列;
其中当使用所述CSR格式时,所述压缩格式进一步指定每个行中的非零元素的数量,并且将所述矩阵位置指定为行内的非零元素的索引;并且
其中当使用所述CSC格式时,所述压缩格式进一步指定每个列中的非零元素的数量,并且将所述矩阵位置指定为列内的非零元素的索引。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910227563.7/1.html,转载请声明来源钻瓜专利网。