[发明专利]用于卷积神经网络加速器的高效率数据动态存储分配方法有效
申请号: | 202011457745.2 | 申请日: | 2020-12-11 |
公开(公告)号: | CN112506436B | 公开(公告)日: | 2023-01-31 |
发明(设计)人: | 张萌;王党辉;张盛兵;丁汇;李楚曦;姚腾腾;朱挺;王淼 | 申请(专利权)人: | 西北工业大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06N3/0464;G06N3/063 |
代理公司: | 西北工业大学专利中心 61204 | 代理人: | 金凤 |
地址: | 710072 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 卷积 神经网络 加速器 高效率 数据 动态 存储 分配 方法 | ||
1.一种用于卷积神经网络加速器的高效率数据动态存储分配方法,其特征在于,包括以下步骤:
步骤1:划分片外存储空间的功能区组成;
步骤1-1:按照卷积神经网络卷积计算最大层数据量分配特征图图像数据存储空间,记为空间1;
步骤1-2:按照卷积神经网络的总权重数量和偏置及归一化操作最大值分配权重与偏置数据存储空间,记为空间2;
步骤1-3:若卷积神经网络中存在去零编码操作,则按照去零编码操作的最大值分配针对特征图数据的去零编码信息存储空间,记为空间3;否则,若卷积神经网络中不存在去零编码操作,则不分配去零编码信息存储空间;
步骤2:根据卷积神经网络卷积计算最大层数据量确定片外存储空间的网络层组成;
步骤2-1:将空间1的网络层分为两部分,两部分空间大小相等,每部分的空间大小single_data_layer根据公式(1)计算:
single_data_layer=chin*i_width*i_height*data_bitwidth/A (1)其中,chin表示该部分的输入通道数;i_width表示该部分输入特征图的宽;i_height表示该部分输入特征图的高;data_bitwidth表示当前卷积神经网络特征图内单个数据的位宽;A表示片外存储空间一行的数据位宽;
由公式(1)能确定每一层的计算数据量,统计后得出网络层在片外存储空间的地址偏移量;
步骤2-2:将空间2的网络层分为layer_n部分,layer_n表示卷积神经网络的总层数;每部分的空间大小single_weight_layer根据公式(2)计算:
single_weight_layer=(chin*chout*kernel_size2*weight_bitwidth+have_bias*chout*bias_bitwidth+have_bn*chout*bn_parameter*bn_bitwidth)/A (2)
其中,chout表示该部分的输出通道数;kernel_size2表示卷积核尺寸大小;weight_bitwidth表示当前卷积神经网络内单个权重数据的位宽;have_bias表示当前部分是否含有加偏置操作,若有则设为1,反之设为0;bias_bitwidth表示当前卷积神经网络单个偏置值数据的位宽;have_bn表示当前层是否含有归一化操作,若有则设为1,反之设为0;bn_parameter表示当前层归一化操作的常数个数;bn_bitwidth表示当前卷积神经网络单个归一化操作数据的位宽;
由公式(2)能确定每一层的权重相关数据总量,得出每一个权重相关数据层在片外存储空间的地址偏移量;
步骤2-3:若存在空间3时,将空间3的网络层分为两部分,两部分空间大小相等;
步骤3:根据卷积神经网络单层内数据块的定义确定片外存储空间的数据块组成;
步骤3-1:将空间1的网络层分为data_blk_n部分,每一部分是当前层的一个数据块,data_blk_n表示当前层数据块个数,由公式(3)确定:
其中,blk_ch_num表示一个数据块包含的通道数;
每个数据块的空间大小single_data_blk由公式(4)确定:
single_data_blk=blk_ch_num*i_width*i_height*data_bitwidth/A (4)
步骤3-2:将空间2的权重层分为weight_blk_n部分,weight_blk_n表示当前层权重块个数,由公式(5)确定:
每个权重块的空间大小single_weight_blk由公式(6)确定:
single_weight_blk=blk_ch_num*kernel_size2*weight_bitwidth/A (6)
步骤3-3:若存在空间3时,将空间3的网络层分为data_blk_n部分,data_blk_n表示当前层去零解码信息块的个数;
步骤4:根据卷积神经网络加速器并行特性确定片外存储空间的数据点/输出组的组成;
步骤4-1:将空间1的数据块分为pixel_n部分,每一部分是当前数据块的指定数据点在通道方向上的所有数据,pixel_n表示当前数据块的数据点个数由公式(7)确定:
pixel_n=i_width*i_height (7)
若无去零编码需求时,每个数据点的空间大小single_pixel_normal根据公式(8)确定:
single_pixel_normal=i_width*i_height*data_bitwidth/A (8)
步骤4-2:将空间2的权重块分为unit_n部分,每一部分是一个输出组,输出组中存储卷积神经网络加速器中一个一级计算单元所需的权重,unit_n表示卷积神经网络加速器中一级计算单元的个数;
每个输出组的空间大小single_unit由公式(9)确定:
single_unit=blk_ch_num2*kernel_size2*weight_bitwidt/(A*unnit_n) (9)
步骤4-3:若存在空间3时,将空间3的去零解码信息块分为pixel_n部分,每部分根据去零编码信息的构成规则进行分配;
对于任意一个部分,在没有任何零能够剔除的情况下:
a)如果没有数据维度上的变化时,单个数据点的数据量single_pixel_1由公式(10)计算:
sigle_pixel_1=(code_para+1)*burst_bitwidth/data_bitwidth (10)
其中,code_para表示去零编码操作的操作数据量;
此时单个数据点的去零解码信息空间大小code_info_pixel_1由公式(11)计算:
其中,burst_bitwidth表示数据在加速器与片外存储空间交互时的数据位宽;code_bitwidth表示去零解码信息的数据位宽;
b)如果有数据维度上的变化时,单个数据点的数据量single_pixel_2由公式(12)计算:
其中,dts_size2表示DepthtoSpace操作的尺寸;
此时单个数据点的去零解码信息空间大小code_info_pixel_2由公式(13)计算:
步骤4-4:若整个卷积神经网络都不含有数据维度上的变化,那么空间3内单个数据点的去零解码信息空间大小code_info_pixel就取code_info_pixel_1,同时空间1内的每个数据点的空间大小更新为single_pixel_1;若卷积神经网络中任意一层含有数据维度上的变化,那么该层单个数据点的数据量code_info_pixel就取code_info_pixel_1和code_info_pixel_2的最大值,同时空间1内的每个数据点的空间大小更新为single_pixel_2;
此时空间3的单个去零解码信息块的空间大小code_info_blk由公式(14)确定:
code_info_blk=code_info_pixel*i_sidth*i_height (14)
空间3的单个网络层的空间大小code_info_layer由公式(15)确定:
code_info_layer=code_info_blk*data_blk_n (15)
步骤5:根据卷积神经网络加速器并行特性确定片外存储空间的分通道区/输入组的组成;
步骤5-1:当卷积神经网络存在数据维度上的变化时,将空间1内的数据点分为dts_size2个部分,若卷积神经网络无去零编码需求时,每个部分的地址空间大小single_part_1由公式(16)确定:
single_part_1=single_pixel_normal/dts_size2 (16)
若有去零编码需求时,每个部分的地址空间大小single_part_2由公式(17)确定:
single_part_2=single_pixel_2/dts_size2 (17)
步骤5-2:将空间2的输出组划分为subunit_n个部分,每一部分是一个输入组,存储着卷积神经网络加速器中一个二级计算单元的权重,subunit_n表示卷积神经网络加速器中每个一级计算单元中二级计算单元的个数;每个输出组的空间大小single_subunit由公式(18)确定:
single_subunit=single_unit/subunit_n (18)
步骤5-3:当卷积神经网络存在去零编码需求时,将空间3内的数据点分为dts_size2个部分,每个部分的空间大小code_info_part由公式(19)确定:
code_info_part=code_info_pixel_2/dts_size2 (19)
步骤6:按照上述5个步骤操作,加速器所需的所有计算数据的交互规则都已确定;当加速器开始计算时,片内数据交互控制模块根据基地址加上各级地址偏移即得出实际写入读出地址,实现计算数据在片内外交互的控制逻辑。
2.根据权利要求1所述的一种用于卷积神经网络加速器的高效率数据动态存储分配方法,其特征在于,所述A表示片外存储空间一行的数据位宽,A=8。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011457745.2/1.html,转载请声明来源钻瓜专利网。