System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及神经网络加速,尤其涉及一种稀疏卷积神经网络加速器及其实现方法。
技术介绍
1、卷积神经网络(convolutional neural networks,cnn)由于其在计算机视觉领域的良好表现被各行各业广泛运用,其拥有参数量大及运算数据复用率高的特点,这使得针对cnn设计的定制电路拥有相对cpu与gpu更高的能效比。针对cnn的稀疏特性,可以设计定制的硬件加速器加快对于网络的运算速度,并有效地节省功耗。
2、目前,利用卷积运算的笛卡尔积特性进行设计的硬件加速器,可以最大程度地发挥稀疏的优势进行加速。然而,利用笛卡尔积特性设计的加速器通常具有随机输出的映射地址,使其普遍存在着哈希冲突,导致运算延时,同时地址分配会导致存储器资源开销大和数据线路互连密度高。可见,现有笛卡尔积加速器存在哈希冲突、存储器资源开销大及线路互连密度高的问题。
技术实现思路
1、本申请提供了一种稀疏卷积神经网络加速器及其实现方法,能够降低哈希冲突的概率,从而提升加速器的运算速度,同时降低存储器和线路互连密度导致的硬件资源开销,实现更高的能效比和更低的资源占用。
2、第一方面,本申请实施例提供了一种稀疏卷积神经网络加速器,该加速器包括运算单元阵列、哈希编码模块及输出存储模块,输出存储模块包括多个累加存储器;
3、运算单元阵列包括多个运算单元组,每个运算单元组对应连接有一个哈希编码模块和一个累加存储器,且该运算单元组只对其对应的累加存储器进行访问;每个运算单元组包含多个运
4、哈希编码模块用于接收输入权重稀疏编码,并根据输入权重稀疏编码生成查找表,查找表用于标记发生哈希冲突的卷积运算中间结果;
5、运算单元用于接收输入激活数据、输入激活稀疏编码、输入权重数据及查找表,根据输入激活数据和输入权重数据计算得到多个卷积运算中间结果,根据输入激活稀疏编码检索查找表以确定多个卷积运算中间结果中发生哈希冲突的卷积运算中间结果,对各发生哈希冲突的卷积运算中间结果求和,并将求和得到的输出结果发送给该运算单元对应的累加存储器进行存储;
6、输入激活数据被配置成包含间隔行数为预设值的至少两行输入激活值。
7、在其中一个实施例中,输入权重数据包含多个输入权重;每行输入激活值包含一个或多个输入激活值;
8、运算单元包括乘法器阵列和滚动求和模块,乘法器阵列中含有多个乘法器;
9、乘法器阵列用于将单个输入激活值广播到多个乘法器与不同的输入权重相乘,得到多个卷积运算中间结果;
10、滚动求和模块用于根据输入激活稀疏编码检索查找表以确定多个卷积运算中间结果中发生哈希冲突的卷积运算中间结果,对发生哈希冲突的卷积运算中间结果求和,并将求和得到的输出结果发送给运算单元对应的累加存储器。
11、在其中一个实施例中,滚动求和模块包括多个滚动单元,每个滚动单元与乘法器阵列中的每个乘法器一一对应连接,以接收乘法器输出的卷积运算中间结果;
12、每个滚动单元还分别与左侧相邻的多个滚动单元互相连接,以接收左侧相邻的多个滚动单元分别输出的多个邻近卷积运算中间结果;
13、滚动单元用于根据输入激活稀疏编码和查找表从多个邻近卷积运算中间结果中选取出待求和计算的邻近卷积运算中间结果进行存储,并将存储的待求和计算的邻近卷积运算中间结果与在下一个时钟周期接收到的发生哈希冲突的卷积运算中间结果进行求和计算,将求和得到的输出结果发送给运算单元对应的累加存储器。
14、在其中一个实施例中,滚动单元包括寄存器、第一多路选择器、第二多路选择器、第三多路选择器及第一加法器;
15、第二多路选择器的输入数据为滚动单元的左侧第一个滚动单元输出的第一邻近卷积运算中间结果、左侧第二个滚动单元输出的第二邻近卷积运算中间结果以及无求和关系时的零值;
16、第一多路选择器用于检索查找表中输入激活稀疏编码对应的哈希编码,并根据哈希编码控制第二多路选择器在第一邻近卷积运算中间结果和第二邻近卷积运算中间结果中选取出待求和计算的邻近卷积运算中间结果发送给寄存器进行存储;
17、寄存器用于存储待求和计算的邻近卷积运算中间结果;
18、第一加法器用于在下一个时钟周期到来时,将待求和计算的邻近卷积运算中间结果与滚动单元接收到的卷积运算中间结果通过第一加法器进行求和计算,将求和得到的输出结果发送给运算单元对应的累加存储器第一加法器;
19、第三多路选择器用于将滚动单元接收到的卷积运算中间结果先后发送给该滚动单元右侧相邻的两个滚动单元。
20、在其中一个实施例中,输出存储模块还包括交叉开关路由器;
21、交叉开关路由器用于将每个运算单元的输出结果发送给该运算单元对应的累加存储器。
22、在其中一个实施例中,累加存储器包括第二加法器和存储器;
23、第二加法器用于从存储器中取出输出结果对应的存储地址的当前值,对当前值与输出结果进行求和,并将求和结果送回输出结果对应的存储地址存储。
24、在其中一个实施例中,存储器配置为仅按行进行分块,不按列进行分块。
25、在其中一个实施例中,该加速器还包括输入存储模块,输入存储模块与计算机内存装置连接;
26、输入存储模块包括输入激活存储器、输入激活编码存储器、输入权重存储器及权重稀疏编码存储器;
27、运算单元分别连接输入激活存储器、输入激活编码存储器及输入权重存储器,哈希编码模块连接权重稀疏编码存储器;
28、输入激活存储器、输入激活编码存储器、输入权重存储器及权重稀疏编码存储器分别用于存储计算机内存装置发送的输入激活数据、输入激活编码、输入权重数据及输入权重稀疏编码。
29、在其中一个实施例中,该加速器还包括输出激活存储器和后处理模块,后处理模块连接输出激活存储器,输出激活存储器连接计算机内存装置;
30、输出激活存储器用于从累加存储器中获取输出激活数据,并进行存储,输出激活数据为累加存储器中存储的输出结果数据;输出激活存储器还用于将存储的输出激活数据发送给计算机内存装置;
31、后处理模块用于在接收到后续处理指令时,对输出激活存储器中存储的输出激活数据进行处理。
32、第二方面,本申请实施例提供了一种基于上述任一实施例中的稀疏卷积神经网络加速器的实现方法,该方法包括:
33、将稀疏卷积神经网络加速器的输入数据中的输入激活数据配置成间隔行数为预设值的至少两行输入激活值,输入数据包括输入激活数据、输入权重数据、输入激活数据对应的输入激活稀疏编码及输入权重数据对应的输入权重稀疏编码;
34、将输入权重稀疏编码输入哈希编码模块,哈希编码模块根据输入权重稀疏编码生成查找表,查找表用于标记发生哈希冲突的卷积运算中间结果;
35、将输入激活数据、输入激活稀疏编码、输入权重数据及查找表输入运算本文档来自技高网...
【技术保护点】
1.一种稀疏卷积神经网络加速器,其特征在于,所述加速器包括运算单元阵列、哈希编码模块及输出存储模块,所述输出存储模块包括多个累加存储器;
2.根据权利要求1所述的加速器,其特征在于,所述输入权重数据包含多个输入权重;每行所述输入激活值包含一个或多个输入激活值;
3.根据权利要求2所述的加速器,其特征在于,所述滚动求和模块包括多个滚动单元,每个所述滚动单元与所述乘法器阵列中的每个乘法器一一对应连接,以接收所述乘法器输出的卷积运算中间结果;
4.根据权利要求3所述的加速器,其特征在于,所述滚动单元包括寄存器、第一多路选择器、第二多路选择器、第三多路选择器及第一加法器;
5.根据权利要求1所述的加速器,其特征在于,所述输出存储模块还包括交叉开关路由器;
6.根据权利要求1至5中任一项所述的加速器,其特征在于,所述累加存储器包括第二加法器和存储器;
7.根据权利要求6所述的加速器,其特征在于,所述存储器配置为仅按行进行分块,不按列进行分块。
8.根据权利要求1所述的加速器,其特征在于,所述加速器还包括输入
9.根据权利要求1所述的加速器,其特征在于,所述加速器还包括输出激活存储器和后处理模块,所述后处理模块连接所述输出激活存储器,所述输出激活存储器连接计算机内存装置;
10.一种基于权利要求1至9中任一项所述的稀疏卷积神经网络加速器的实现方法,其特征在于,所述方法包括:
...【技术特征摘要】
1.一种稀疏卷积神经网络加速器,其特征在于,所述加速器包括运算单元阵列、哈希编码模块及输出存储模块,所述输出存储模块包括多个累加存储器;
2.根据权利要求1所述的加速器,其特征在于,所述输入权重数据包含多个输入权重;每行所述输入激活值包含一个或多个输入激活值;
3.根据权利要求2所述的加速器,其特征在于,所述滚动求和模块包括多个滚动单元,每个所述滚动单元与所述乘法器阵列中的每个乘法器一一对应连接,以接收所述乘法器输出的卷积运算中间结果;
4.根据权利要求3所述的加速器,其特征在于,所述滚动单元包括寄存器、第一多路选择器、第二多路选择器、第三多路选择器及第一加法器;
5.根据权利要求1所述的加速器,其特征在于,所述...
【专利技术属性】
技术研发人员:刘欣宇,袁悦来,王俊榕,胡胜发,
申请(专利权)人:广州安凯微电子股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。