[发明专利]一种神经网络卷积的方法和设备有效
申请号: | 202010333460.1 | 申请日: | 2020-04-24 |
公开(公告)号: | CN111539526B | 公开(公告)日: | 2022-12-06 |
发明(设计)人: | 王申领 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06N3/08 | 分类号: | G06N3/08;G06N3/04;G06N5/04;G06F17/15;G06F17/16 |
代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 刘小峰 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 神经网络 卷积 方法 设备 | ||
1.一种神经网络卷积的方法,其特征在于,包括以下步骤:
判断待输入图片的参数是否满足Tensorcore计算的矩阵形状;
响应于所述图片的参数满足Tensorcore计算的矩阵形状,进行二维卷积的操作符的定义;
根据所述操作符的定义的规则进行满足Tensorcore计算的调度的设计,其中,满足Tensorcore计算的调度的设计包括数据划分方式设计和存储层次设计,其中进行所述数据划分方式设计包括设定原始数据为Data(N,H,W,Ic),卷积核kernel(kh,kw,Ic,Oc),外层循环Outer[H,W,N,Oc],内层循环[kh,kw,Ic],其中H为原始数据高,W为原始数据宽,kh为卷积核高,kw为卷积核宽,将矩阵进行卷积矩阵乘化为[H,W,kh×kw×(N,Ic)×(Ic,Oc)],进行卷积矩阵乘Tensorcore化为[N/16,H,W,Oc/16,Ic/16×kh×kw×(16,16)×(16,16)],其中进行存储层次设计包括设计CUDA中grid和block的存储层次,一个所述block中包括8个warp,每一个所述warp包括32个thread,在所述warp层,将N以及Oc根据所述Tensorcore计算的形状要求分别划分2和4个tile,同时划分Ic为2个tile,在每次进行tile计算时将数据以及卷积核数据存放于寄存器中,在所述block层,将N以及Oc根据所述Tensorcore计算的形状要求分别划分4和2个tile,并将所述tile分配给每一个所述warp进行计算,在每次进行所述tile的计算时将所有线程需要数据以及卷积核数据循环存放于共享内存中,在所述grid层,将H和W两个维度分配给所述grid的z维度,另外的x以及y维度分别负责N以及Oc划分剩余的部分,在整个所述grid层数据计算时将数据由全局内存读入并将计算完成的数据写回所述全局内存;
将累加器进行初始化,并将所述输入图片加载到共享内存中;
执行所述调度以得到卷积计算的结果。
2.根据权利要求1所述的方法,其特征在于,所述图片的参数包括输入图片的数量N、输入图片的通道数Ic和输出图片的通道数Oc。
3.根据权利要求2所述的方法,其特征在于,满足Tensorcore计算的矩阵形状包括三种:N×Ic×Oc为16×16×16的矩阵、N×Ic×Oc为8×16×32的矩阵、和N×Ic×Oc为32×16×8的矩阵。
4.根据权利要求3所述的方法,其特征在于,判断所述图片的参数是否满足Tensorcore计算的矩阵形状包括:
将所述图片的N、Ic和Oc依次与所述三种矩阵中的N、Ic和Oc对应的数值进行取余;
响应于所述图片的N、Ic和Oc与至少一种矩阵中的N、Ic和Oc对应的数值的余都为0,判断所述图片的参数满足Tensorcore计算的矩阵形状。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010333460.1/1.html,转载请声明来源钻瓜专利网。