一种深度神经网络运算系统及方法技术方案

技术编号:16547488 阅读:30 留言:0更新日期:2017-11-11 12:06
本申请公开了一种深度神经网络运算系统及方法,包括:CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。本发明专利技术通过将深度神经网络的GEMM计算节点移植到FPGA中,由CPU接收用户输入的目标数据,基于深度神经网络将目标数据转化为深度神经网络输入层数据,并发送至FPGA,FPGA利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果,完成运算,基于FPGA的硬件特性,由FPGA完成推算环节,极大地降低了运算能耗,降低了运行成本。

A deep neural network computing system and method

The invention discloses a system and a method for computing the depth of the neural network, including: CPU, for receiving the target data, processed by the depth of the neural network, the input layer data from the depth of the neural network; FPGA, for computing nodes and perform parallel computing program using the depth calculation process of neural networks in the GEMM, calculate the input data. The calculated results. The node transplanting depth GEMM neural network calculation to the FPGA, the target data received by the CPU user input, the depth of the neural network based on the target data into the depth of the neural network input layer data, and send to FPGA FPGA, using the depth of neural networks in the GEMM computing nodes and parallel computing program execution link calculation. The calculation of the input layer data, calculated results, complete the operation, the hardware based on the characteristics of FPGA, completed by FPGA calculation process, which greatly reduces the computation of energy consumption, reduce operating costs.

【技术实现步骤摘要】
一种深度神经网络运算系统及方法
本专利技术涉及深度神经网络加速计算领域,特别涉及一种深度神经网络运算系统及方法。
技术介绍
GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。GPU通用计算方面的标准目前有OpenCL(OpenComputingLanguage,开放运算语言)、CUDA(ComputeUnifiedDeviceArchitecture)、ATISTREAM。其中,OpenCL是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。目前对深度神经网络的加速方法通常采用GPU加速方法,其高度优化的计算库cudnn及高性能的GPU并行处理架构,使得深度神经网络在GPU平台上的加速性能十分优越,但其高耗电量造成能耗比很低,也是极大的弊端。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种深度神经网络运算系统及方法,以降低耗电量,提高能耗比,降低运行成本。其具体方案如下:一种深度神经网络运算系统,包括:CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。可选的,所述FPGA,包括:GEMM计算单元,用于利用激活函数所述输入层数据,得到所述计算结果;其中,所述激活函数为:式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。可选的,所述FPGA,包括:并行运算单元,用于通过#pragaunrollx展开计算所述推算环节,其中,x表示利用PCIe带宽数确定的展开层数。本专利技术还公开了一种深度神经网络运算方法,包括:接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。可选的,所述利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果的过程,包括:利用激活函数所述输入层数据和并行运算程序执行推算环节,得到所述计算结果;其中,所述激活函数为:式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。可选的,所述利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节的过程,包括:通过#pragaunrollx展开并行计算所述GEMM计算节点,执行所述推算环节,其中,x表示利用PCIe带宽数确定的展开层数。本专利技术中,深度神经网络运算系统,包括:CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。本专利技术通过将深度神经网络的GEMM计算节点移植到FPGA中,由CPU接收用户输入的目标数据,基于深度神经网络将目标数据转化为深度神经网络输入层数据,并发送至FPGA,FPGA利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果,完成运算,基于FPGA的硬件特性,由FPGA完成推算环节,极大地降低了运算能耗,降低了运行成本。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例公开的一种深度神经网络运算系统结构示意图;图2为本专利技术实施例公开的一种深度神经网络运算方法流程示意图;图3为本专利技术实施例公开的一种深度神经网络GEMM节点结构示意图;图4为本专利技术实施例公开的一种深度神经网络GEMM节点输出层结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例公开了一种深度神经网络运算系统,参见图1所示,该系统包括:CPU11,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据。具体的,CPU11接收用户输入的目标数据,目标数据的形式可以为一段代码,或一个计算任务,CPU11将目标数据转化为满足深度神经网络输入层的格式,并且输入到输入层,从而得到深度神经网络的输入层数据,以便于后续深度神经网络的隐含层和输出层对目标数据进行处理,得到计算结果。FPGA12(FieldProgrammableGateArray,现场可编程门阵列),用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。具体的,FPGA12是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,可以实现对深度神经网络快速的并行计算。具体的,利用OpenCL语言将GEMM算法移植到FPGA12的kernel端,利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。本专利技术实施例中,FPGA12,具体可以包括GEMM计算单元和并行运算单元;其中,GEMM计算单元,用于利用激活函数输入层数据,得到计算结果;其中,激活函数为:式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。其中,隐含层中各节点计算相对独立,且均与上一层节点有关,计算方法相同,均为GEMM算法,每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的阀值还有激活函数计算得到的。需要说明的是,隐含层可以根据用户的计算要求进行设定,而不仅只局限于两层。并行运算单元,用于通过#pragaunrollx展开计算推算环节,其中,x表示利用PCIe带宽数确定的展开层数。具体的,FPGA12接收CPU11处理得到的输入层数据,基于PCIe带宽数,通过#pragaunrollx程序可以生成与PCIe带宽数相对应的深度神经网络中的GEMM计算节点数,每个GEMM计算节点利用激活函数输入层数据,并行运算,执行推算环节,得到计算结果。其中,展开层数,也可以在满足PCIe带宽数最大限定范围内,根据用户实际应用需求进行设定,例如,根据PCIe带宽数展开层数最多为本文档来自技高网...
一种深度神经网络运算系统及方法

【技术保护点】
一种深度神经网络运算系统,其特征在于,包括:CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。

【技术特征摘要】
1.一种深度神经网络运算系统,其特征在于,包括:CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。2.根据权利要求1所述的深度神经网络运算系统,其特征在于,所述FPGA,包括:GEMM计算单元,用于利用激活函数所述输入层数据,得到所述计算结果;其中,所述激活函数为:式中,Sj表示中间输出结果,m表示神经元个数,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。3.根据权利要求1所述的深度神经网络运算系统,其特征在于,所述FPGA,包括:并行运算单元,用于通过#pragaunrollx展开计算所述推算环节,其中,x表示利用PCIe带宽数确定的展开层数。4.一种深度神经网络运算方法,其特征在于,包括:接收目标数据,利用深度神...

【专利技术属性】
技术研发人员:李磊
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1