一种基于SIMD的卷积运算的并行优化方法技术

技术编号:31724375 阅读:32 留言:0更新日期:2022-01-05 15:48
本发明专利技术针对SIMD单指令多数据特性,提出提供一种基于SIMD的卷积运算的并行优化方法。在减少运算指令和内存读取的基础上,对feature从宽度方向进行分块,分块的宽度BN由可用的SIMD寄存器数决定,这是为了保证一次内层卷积运算数据都在寄存中,通过feature的合理分块,能够在每个块计算中复用kernel和feature,内存访问次数为原来访问次数的1/BN。具体地,本发明专利技术所述方法按块计算输出,对特征向量从宽度方向进行分块,每块的宽度由并行运算所使用的寄存器数决定,根据SIMD指令通过循环优化,在每个块中复用卷积核和部分特征向量,以保证一次内层卷积运算时所有共享数据均在寄存器中,不产生额外访存操作。不产生额外访存操作。不产生额外访存操作。

【技术实现步骤摘要】
一种基于SIMD的卷积运算的并行优化方法


[0001]本专利技术涉及卷积运算优化领域,特别涉及一种基于SIMD的卷积运算的并行优化方法。

技术介绍

[0002]近年来人工智能快速发展,卷积神经网络(CNN)作为计算机视觉方面的核心网络之一,在图像相关网络模型中广泛应用。目前的CNN模型中,全连接层往往在最后一层才会使用,也就是说,CNN的主体是卷积层,而卷积的计算复杂,在网络运行时大部分时间都耗费在计算卷积,随着网络模型的发展在不断增加网络的深度,优化卷积计算就显得尤为重要。而在端级设备上高效执行卷积运算,更是非常的迫切需求,关系到神经网络在端级设备的可用性。
[0003]卷积运算计算量大,为了提高运算效率,目前有很多卷积运算的优化方式。包括:
[0004]1.im2col+GEMM:caffe等很多框架中都使用了这种计算方式,将问题转化为矩阵乘法后可以方便的使用很多矩阵运算库。由于其使用im2col会造成额外的临时内存消耗。尤其在终端设备内存资源较小的情况下,这种优化效率得不偿失。
[0005]2.FFT变换:时域卷积本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于SIMD的卷积运算的并行优化方法,其特征在于,所述方法按块计算输出,对特征向量从宽度方向进行分块,每块的宽度BN由并行运算所使用的寄存器数决定,根据SIMD指令通过循环优化,在每个块中复用卷积核和部分特征向量,以保证一次内层卷积运算时所有共享数据均在寄存器中,不产生额外访存操作。2.根据权利要求1所述的一种基于SIMD的卷积运算的并行优化方法,其特征在于,所述方法进一步包括以下步骤:S1,初始化oh=0,ow=0,oc=0;S2,判断是否输出高度oh<output_height,如果满足条件,则执行下面的循环体,否则结束循环;执行完下面的循环体后执行oh+=1再重新判断oh<output_height直至不满足条件结束循环;S3,判断是否输出宽度ow<output_width/BN*BN,其中BN为分块的宽度,如果满足条件,则执行下面的循环体,否则结束循环;执行完下面的循环体后执行ow+=BN再重新判断ow<output_width/BN*BN直至不满足条件结束循环;S4,判断是否输出通道数oc<output_depth,如果满足条件,则执行下面的循环体,否则结束循环;执行完下面的循环体后执行oc+=1再重新判断oc<output_depth直至不满足条件结束循环;S5,初始化Sumi=0,其中i=0
……
N,kh=0,kw=0,ic=0;S6,判断是否卷积核高度kh<kernel_height,如果满足条件,则执行下面的循环体,否则结束循环;执行完下面的循环体后执行kh+=1再重新判断kh<kernel_height直至不满足条件结束循环;S7,判断是否卷积核宽度kw<kernel_width,如果满足条件,则执行下面的循环体,否则结束循环;执行完下面的循环体后执行kw+=1再重新判断kw<kernel_width直至不满足条件结束循环;S8,判断是否输入通道...

【专利技术属性】
技术研发人员:刘倩邱东升
申请(专利权)人:北京君正集成电路股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1