[发明专利]一种神经网络的全连接层计算方法和装置有效
申请号: | 202010725384.9 | 申请日: | 2020-07-24 |
公开(公告)号: | CN111860838B | 公开(公告)日: | 2022-12-20 |
发明(设计)人: | 宋小妹 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06N3/08 | 分类号: | G06N3/08;G06N3/04 |
代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 杨帆;宋薇薇 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 神经网络 连接 计算方法 装置 | ||
1.一种神经网络的全连接层计算方法,其特征在于,包括执行以下步骤:
接收格式为8位整型变量的输入数据,并判定所述输入数据的输入维度、输出维度、和单次样本是否满足张量核的调用接口的形状要求;
响应于满足所述形状要求而基于8位整型变量的所述输入数据、8位整型变量的权重、和32位整型变量的偏置来定义计算规则;
基于所述计算规则调度所述输入数据、所述权重、和所述偏置,以通过所述调用接口调用所述张量核的计算单元进行矩阵乘法运算,获得二维张量;
将所述二维张量作为全连接层的计算结果输出到下一层;
其中,基于所述计算规则调度所述输入数据、所述权重、和所述偏置,以通过所述调用接口调用所述张量核的计算单元进行矩阵乘法运算,获得二维张量包括:定义执行调度使用的关键参数,并基于所述关键参数执行以下步骤:
对所述输入数据和所述权重执行数据划分,以从所在的全局内存加载到共享内存;
通过所述调用接口的矩阵加载接口将经过数据划分的所述输入数据和所述权重从所述共享内存加载到所述调用接口的矩阵内存作用域;
在所述矩阵内存作用域中通过所述调用接口的矩阵乘法计算接口使用所述张量核的计算单元基于所述计算规则对经过数据划分的所述输入数据和所述权重执行矩阵乘,获得经过数据划分的无偏置二维张量。
2.根据权利要求1所述的方法,其特征在于,判定所述输入数据的输入维度、输出维度、和单次样本是否满足张量核的调用接口的形状要求包括:
基于所述输入数据确定所述输入数据的形状、所述权重的形状、和所述偏置的形状;
基于所述输入数据的形状、所述权重的形状、和所述偏置的形状确定所述输入数据的所述输入维度、所述输出维度、和所述单次样本的数值;
响应于所述输入维度、所述输出维度、和所述单次样本的数值均能被16整除,或所述输入维度数值能被16整除、所述输出维度的数值被8整除、所述单次样本的数值被32整除,或所述输入维度数值能被16整除、所述输出维度的数值被32整除、所述单次样本的数值被8整除,而判定满足所述形状要求。
3.根据权利要求2所述的方法,其特征在于,还包括:响应于满足所述形状要求而调用使用DP4A指令集的计算单元直接计算所述二维张量,并作为全连接层的计算结果输出到下一层。
4.根据权利要求1所述的方法,其特征在于,还包括:基于所述关键参数额外地执行以下步骤:
通过所述调用接口的矩阵存储接口将经过数据划分的所述无偏置二维张量从所述矩阵内存作用域加载到所述共享内存,并在所述共享内存中基于所述计算规则为经过数据划分的所述无偏置二维张量加入所述偏置,获得经过数据划分的所述二维张量,其中所述偏置使用预定的调度方式执行而非所述调用接口执行调度;
将经过数据划分的所述二维张量从所述共享内存加载到所述全局内存,并进一步拼合为所述二维张量。
5.根据权利要求1所述的方法,其特征在于,还包括:在调用所述矩阵加载接口、所述矩阵乘法计算接口、或所述调用接口的矩阵存储接口之前,先对经过数据划分的所述输入数据、所述权重、和所述二维张量执行基于步长参数的Tensorize操作,以允许所述矩阵加载接口、所述矩阵乘法计算接口、或所述矩阵存储接口所使用的计算平台能够识别。
6.根据权利要求1所述的方法,其特征在于,对所述输入数据和所述权重执行数据划分,以从所在的全局内存加载到共享内存还包括:使用神经网络的编译器提供的函数来进行双缓冲优化。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010725384.9/1.html,转载请声明来源钻瓜专利网。