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上的至少一个线程块,其中,每个线程块包括多个线程;基于两级分块策略,确定所述至少一个线程块中每个线程块的计算区域范围,并确定每个线程块所包括的线程的计算区域范围;所述至少一个线程块中的每个线程块内的各个线程执行计算过程,得到计算结果;根据每个线程块内的各个线程得到的所述计算结果,确定相应的线程块的输出结果。
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。