基于GPU的计算二值神经网络卷积的方法及装置制造方法及图纸

技术编号:15502610 阅读:57 留言:0更新日期:2017-06-03 23:25
本发明专利技术实施例提供了一种基于GPU的计算二值神经网络卷积的处理方法,包括:获取根据二值神经网络执行卷积操作的计算请求;根据所述计算请求,开启GPU上的至少一个线程块,其中,每个线程块包括多个线程;基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围;所述至少一个线程块中的每个线程块内的各个线程执行计算过程,得到计算结果;根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果。本发明专利技术设计了基于GPU线程块的两级分块策略,充分利用了GPU的访存特性,从而能够在GPU设备上实现二值神经网络卷积计算,并且计算速度得到了提升,内存消耗得到了减少。

Method and device for calculating convolution of two valued neural networks based on GPU

Including the embodiment of the invention provides a processing method, the calculation of GPU based on two valued neural network convolution: get two value calculation according to the request execution of convolution operation of neural network; according to the calculation request, open at least one piece of thread on the GPU, among them, each thread block includes a plurality of threads; two block strategy based on determining the at least one thread block in each thread block calculation area, and determine the calculation area of every block which includes the thread thread; the at least one thread block in each thread block within each thread to perform the calculation process, the calculated results according to the results; each thread in each thread block from the output of the thread block, determine the corresponding. The invention designs two block strategy based on GPU thread block, make full use of the GPU access characteristics, which can realize the convolution of two valued neural networks on GPU devices, and the calculation speed has improved, memory consumption has been reduced.

【技术实现步骤摘要】
基于GPU的计算二值神经网络卷积的方法及装置
本专利技术涉及计算机视觉领域,更具体地涉及一种基于GPU的计算二值神经网络卷积的方法及装置。
技术介绍
深度学习(DeepLearning)的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。在计算机视觉及相关领域,新兴的深度学习方法相比过去传统方法有了长足的进步。卷积神经网络(Convolutionalneuralnetworks,简称CNNs)是一种深度的监督学习下的机器学习模型,是深度学习的核心操作,它将卷积核(Kernel)与原图像输入进行卷积操作得到输出。一般而言,卷积操作是一个深度学习模型中计算量最大、也是内存开销最多的部分,例如目前的CNN中卷积操作会占用70%以上的计算时间,因此优化卷积操作是很有必要的。为解决卷积计算量大、内存开销多的问题,二值神经网络(BinaryNeuralNetwork,简称BNN)能够将卷积中32比特(bit)浮点数存储改为1bit二值存储,并将浮点计算替换成整数位运算,例如将浮点数乘法映射为按位的同或(XNOR)操作。然而,二值神经网络如何在图形处理单元(GraphicsProcessingUnit,简称GPU)设备上实现卷积的计算是急需解决的技术瓶颈。
技术实现思路
考虑到上述问题而提出了本专利技术。本专利技术提供了一种基于GPU的计算二值神经网络卷积的方法,使得二值神经网络卷积的计算能够在GPU上实现,且能够实现计算速度的提升。根据本专利技术一方面,提供了一种基于GPU的计算二值神经网络卷积的方法,包括:获取根据二值神经网络执行卷积操作的计算请求;根据所述计算请求,开启GPU上的至少一个线程块,其中,每个线程块包括多个线程;基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围;所述至少一个线程块中的每个线程块内的各个线程执行计算过程,得到计算结果;根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果。示例性地,被执行卷积操作的输入数据的物理数据布局为:所述输入数据在通道数维度分为多组,每组包括连续的b位,同一组中的位在物理存储空间上是连续的,相邻的组在所述物理存储空间上是不相邻的;其中b与所述GPU的显存位宽一致。示例性地,所述计算过程包括:使用异或操作模拟XNOR操作的行为对所述输入数据进行计算,并使用popcount指令计算异或操作得到的结果中为1的位的数量,作为所述计算结果。示例性地,所述根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果包括:利用投票函数对每个线程块内的各个线程得到的所述计算结果进行统计,如果所述计算结果中为1的位的数量大于为0的位的数量,则确定所述线程对应的判定结果为正,否则所述线程对应的判定结果为负;将各个线程的所述判定结果整合成一个整数,得到相应的线程块的输出结果。示例性地,所述两级分块策略包括:高层分块策略和低层分块策略,所述基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围,包括:基于所述高层分块策略,确定所述每个线程块的计算区域范围,并进一步根据所述低层分块策略,确定所述每个线程块所包括的线程的计算区域范围。示例性地,所述高层分块策略依赖于所述GPU的共享内存的总量限制,所述低层分块策略依赖于所述GPU的寄存器的数量限制以及最大化指令级别的并行。示例性地,在所述得到计算结果之后,还包括:将所述输出结果存储在物理存储空间中,其中,所述输出结果的物理数据布局为:所述输出结果在通道数维度分为多组,每组包括连续的b位,同一组中的位在所述物理存储空间上是连续的,相邻的组在所述物理存储空间上是不相邻的;其中b与所述GPU的显存位宽一致。示例性地,还包括:在所述每个线程块执行计算过程时,将输入数据载入共享内存中。根据本专利技术另一方面,提供了一种基于GPU的计算二值神经网络卷积操作的装置,包括:获取模块,用于获取根据二值神经网络执行卷积操作的计算请求;开启模块,用于根据所述获取模块获取的所述计算请求,开启GPU上的至少一个线程块,其中,每个线程块包括多个线程;确定模块,用于基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围;计算模块,用于所述至少一个线程块中的每个线程块内的各个线程执行计算过程,得到计算结果;统计模块,用于根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果。该装置能够用于实现前述第一方面所述的基于GPU的计算二值神经网络卷积的方法。根据本专利技术另一方面,提供了一种计算机芯片,该计算机芯片包括GPU,当该GPU执行代码时,能够实现前述第一方面所述的基于GPU的计算二值神经网络卷积的方法。本专利技术实施例中,设计了基于GPU线程块的两级分块策略,充分利用了GPU的访存特性,从而能够在GPU设备上实现二值神经网络的卷积计算,并且计算速度得到了提升,内存消耗得到了减少。附图说明通过结合附图对本专利技术实施例进行更详细的描述,本专利技术的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本专利技术实施例的进一步理解,并且构成说明书的一部分,与本专利技术实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中,相同的参考标号通常代表相同部件或步骤。图1是包括GPU的电子设备的一个示意性框图;图2是本专利技术实施例的基于GPU的计算二值神经网络卷积的方法的一个示意性流程图;图3是本专利技术实施例的线程块的输出区域范围的一个示意图;图4是本专利技术实施例的一种基于GPU的计算二值神经网络卷积的装置的一个示意性框图;图5是本专利技术实施例的一种基于GPU的计算二值神经网络卷积的装置的另一个示意性框图。具体实施方式为了使得本专利技术的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本专利技术的示例实施例。显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,应理解,本专利技术不受这里描述的示例实施例的限制。基于本专利技术中描述的本专利技术实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本专利技术的保护范围之内。随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的中央处理单元(CentralProcessingUnit,简称CPU)。统一计算设备架构(ComputeUnifiedDeviceArchitecture,简称CUDA)是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,从而在应用程序中充分利用CPU和GPU各自的优点。本专利技术的实施例提出了一种基于GPU的计算二值神经网络卷积的方法,其中,GPU可以包括在电子设备中,如图1所示为包括GPU的电子设备的一个示意性框图。图1所示的电子设备10包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108、图像传感器110以及一个或多个非图像传感器114,这些组件通过总线系统112和/或其它形式互连。应当注意,本文档来自技高网...
基于GPU的计算二值神经网络卷积的方法及装置

【技术保护点】
一种基于GPU的计算二值神经网络卷积的方法,其特征在于,包括:获取根据二值神经网络执行卷积操作的计算请求;根据所述计算请求,开启GPU上的至少一个线程块,其中,每个线程块包括多个线程;基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围;所述至少一个线程块中的每个线程块内的各个线程执行计算过程,得到计算结果;根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果。

【技术特征摘要】
1.一种基于GPU的计算二值神经网络卷积的方法,其特征在于,包括:获取根据二值神经网络执行卷积操作的计算请求;根据所述计算请求,开启GPU上的至少一个线程块,其中,每个线程块包括多个线程;基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围;所述至少一个线程块中的每个线程块内的各个线程执行计算过程,得到计算结果;根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果。2.如权利要求1所述的方法,其特征在于,被执行卷积操作的输入数据的物理数据布局为:所述输入数据在通道数维度分为多组,每组包括连续的b位,同一组中的位在物理存储空间上是连续的,相邻的组在所述物理存储空间上是不相邻的;其中b与所述GPU的显存位宽一致。3.如权利要求2所述的方法,其特征在于,所述计算过程包括:使用异或操作模拟XNOR操作的行为对所述输入数据进行计算,并使用popcount指令计算异或操作得到的结果中为1的位的数量,作为所述计算结果。4.如权利要求3所述的方法,其特征在于,所述根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果包括:利用投票函数对每个线程块内的各个线程得到的所述计算结果进行统计,如果所述计算结果中为1的位的数量大于为0的位的数量,则确定所述线程对应的判定结果为正,否则所述线程对应的判定结果为负;将各个线程的所述判定结果整合成一个整数,得到相应的线程块的输出结果。5.如权利要求1至4任一项所述的方法,其特征在于,所述两级分块策略包括:高层分块策略和低层分块策略,所述基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围,包括:基于所述高层分块策略,确定所述每个线程块的计算区域范围,并进一步根据所述低层分块策略,确定所述每个线程块所包括的线程的计算区域范围。6.如权利要求5所述的方法,其特征在于,所述高层分块策略依赖于所述GPU的共享内存的总量限制,所述低层分块策略依赖于所述GPU的寄存器的数量限制以及最大化指令级别的并行。7.如权利要求1至6任一项所述的方法,其特征在于,在所述确定相应的线程块的输出结果之后,还包括:将所述输出结果存储在物理存储空间中,其中,所述输出结果的物理数据布局为:所述输出结果在通道数维度分为多组,每组包括连续的b位,同一组中的位在所述物理存储空间上是连续的,相邻的组在所述物理存储空间上是不相邻的;其中b与所述GPU的显存位宽一致。8.如权利要求1至7任一项所述的方法,其特征在于,还包括:在所述每个线程块执...

【专利技术属性】
技术研发人员:魏铭
申请(专利权)人:北京旷视科技有限公司北京小孔科技有限公司
类型:发明
国别省市:北京,11

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

1