[发明专利]一种并行计算方法及装置有效
申请号: | 201811417046.8 | 申请日: | 2018-11-26 |
公开(公告)号: | CN111222624B | 公开(公告)日: | 2022-04-29 |
发明(设计)人: | 苏岚;顾鹏 | 申请(专利权)人: | 深圳云天励飞技术股份有限公司 |
主分类号: | G06N3/04 | 分类号: | G06N3/04;G06N3/06 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 郝传鑫;熊永强 |
地址: | 518000 广东省深圳市龙岗区园山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 并行 计算方法 装置 | ||
本申请提供了一种并行计算方法及装置,所述方法包括:将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵;矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵;从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。本申请通过将输入矩阵进行水平方向的拼接,从而减少了处理器换行处理流水线时所需的载入和存储带来的额外开销,提升了矢量处理器在处理小尺寸数据时的计算性能。
技术领域
本申请涉及计算机领域,尤其涉及一种并行计算方法及装置。
背景技术
神经网络被广泛应用于模式识别、图像处理、函数逼近和优化计算等领域,因其较高的运算速率,受到学术界和工业界越来越广泛的关注。而矢量处理器是专门设计的高度流水线作业的处理器,能够对整个矢量矩阵上逐行进行高效率的操作,因此当前神经网络中的深度学习任务多是使用矢量处理器(如GPU、矢量DSP、带有SIMD扩展指令集的CPU等等)处理运算的。
在卷积神经网络模型中,有一些应用场景,比如计算机视觉领域当中,可能会出现模型的输入矩阵的尺寸很小,但是模型执行的频率又很高的情况,使用矢量处理器对该种情况进行处理时,会存在浪费矢量寄存器位宽、计算流水中断等问题,影响处理器的计算性能。
发明内容
本申请提供了一种并行计算方法及装置,能够使得矢量处理器在处理小尺寸数据时,计算性能得到提升。
第一方面,本申请提供了一种并行计算方法,所述方法包括以下步骤:
将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,其中,所述目标层包括卷积层和池化层,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数,N的值是由矢量处理器的位宽确定的;
矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,其中,所述拼接输出矩阵包含N个输出矩阵;
从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
可选地,所述目标层为卷积层的情况下,所述将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵包括:
在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;
在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;
在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
可选地,在所述目标层是池化层的情况下,所述将卷积神经网络目标层的N个不同的输入矩阵进行水平方向的拼接,得到第一拼接输入矩阵包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳云天励飞技术股份有限公司,未经深圳云天励飞技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811417046.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:搜寻方法及搜寻系统
- 下一篇:一种使用FPGA实现浮点数据累加的方法