CN107341545A - 一种深度神经网络运算系统及方法 - Google Patents
一种深度神经网络运算系统及方法 Download PDFInfo
- Publication number
- CN107341545A CN107341545A CN201710611302.6A CN201710611302A CN107341545A CN 107341545 A CN107341545 A CN 107341545A CN 201710611302 A CN201710611302 A CN 201710611302A CN 107341545 A CN107341545 A CN 107341545A
- Authority
- CN
- China
- Prior art keywords
- neural network
- deep neural
- calculate
- gemm
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请公开了一种深度神经网络运算系统及方法,包括:CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。本发明通过将深度神经网络的GEMM计算节点移植到FPGA中,由CPU接收用户输入的目标数据,基于深度神经网络将目标数据转化为深度神经网络输入层数据,并发送至FPGA,FPGA利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果,完成运算,基于FPGA的硬件特性,由FPGA完成推算环节,极大地降低了运算能耗,降低了运行成本。
Description
技术领域
本发明涉及深度神经网络加速计算领域,特别涉及一种深度神经网络运算系统及方法。
背景技术
GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。GPU通用计算方面的标准目前有OpenCL(Open Computing Language,开放运算语言)、CUDA(Compute UnifiedDevice Architecture)、ATI STREAM。其中,OpenCL是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
目前对深度神经网络的加速方法通常采用GPU加速方法,其高度优化的计算库cudnn及高性能的GPU并行处理架构,使得深度神经网络在GPU平台上的加速性能十分优越,但其高耗电量造成能耗比很低,也是极大的弊端。
发明内容
有鉴于此,本发明的目的在于提供一种深度神经网络运算系统及方法,以降低耗电量,提高能耗比,降低运行成本。其具体方案如下:
一种深度神经网络运算系统,包括:
CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;
FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。
可选的,所述FPGA,包括:
GEMM计算单元,用于利用激活函数所述输入层数据,得到所述计算结果;其中,
所述激活函数为:
式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。
可选的,所述FPGA,包括:
并行运算单元,用于通过#praga unroll x展开计算所述推算环节,其中,x表示利用PCIe带宽数确定的展开层数。
本发明还公开了一种深度神经网络运算方法,包括:
接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;
利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。
可选的,所述利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果的过程,包括:
利用激活函数所述输入层数据和并行运算程序执行推算环节,得到所述计算结果;其中,
所述激活函数为:
式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。
可选的,所述利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节的过程,包括:
通过#praga unroll x展开并行计算所述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(Field Programmable Gate Array,现场可编程门阵列),用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。
具体的,FPGA12是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,可以实现对深度神经网络快速的并行计算。
具体的,利用OpenCL语言将GEMM算法移植到FPGA12的kernel端,利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。
本发明实施例中,FPGA12,具体可以包括GEMM计算单元和并行运算单元;其中,
GEMM计算单元,用于利用激活函数输入层数据,得到计算结果;其中,
激活函数为:
式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。
其中,隐含层中各节点计算相对独立,且均与上一层节点有关,计算方法相同,均为GEMM算法,每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的阀值还有激活函数计算得到的。
需要说明的是,隐含层可以根据用户的计算要求进行设定,而不仅只局限于两层。
并行运算单元,用于通过#praga unroll x展开计算推算环节,其中,x表示利用PCIe带宽数确定的展开层数。
具体的,FPGA12接收CPU11处理得到的输入层数据,基于PCIe带宽数,通过#pragaunroll x程序可以生成与PCIe带宽数相对应的深度神经网络中的GEMM计算节点数,每个GEMM计算节点利用激活函数输入层数据,并行运算,执行推算环节,得到计算结果。
其中,展开层数,也可以在满足PCIe带宽数最大限定范围内,根据用户实际应用需求进行设定,例如,根据PCIe带宽数展开层数最多为20层,用户可以设定展开层数为10层。
需要说明的是,由于FPGA12硬件特性,FPGA12的能耗量远低于GPU,因此,将深度神经网络的GEMM计算节点移植到FPGA12中,通过FPGA12执行深度神经网络的计算环节,能够极大地降低能耗,从而降低运行成本。
可见,本发明实施例通过将深度神经网络的GEMM计算节点移植到FPGA12中,由CPU11接收用户输入的目标数据,基于深度神经网络将目标数据转化为深度神经网络输入层数据,并发送至FPGA12,FPGA12利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果,完成运算,基于FPGA12的硬件特性,由FPGA12完成推算环节,极大地降低了运算能耗,降低了运行成本。
本发明实施例还公开了一种深度神经网络运算方法,参见图2所示,该方法包括:
步骤S11:接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;
步骤S12:利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果。
具体的,可以利用激活函数输入层数据和并行运算程序执行推算环节,得到计算结果;其中,
激活函数为:
式中,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。
具体的,可以通过#praga unroll x展开并行计算GEMM计算节点,执行推算环节,其中,x表示利用PCIe带宽数确定的展开层数。
其中,在深度神经网络中,全连接层主要由GEMM节点计算及分类器输出计算。GEMM节点计算由于深度神经网络的网络特性,其隐含层的同层节点间计算是相对独立的,参见图3所示,且在推算阶段均且只与上层节点相关,参见图4所示。FPGA在处理并行计算时优势明显,其通过硬件特性实现数据并行处理能力。
可见,本发明实施例通过将深度神经网络的GEMM计算节点移植到FPGA中,由CPU接收用户输入的目标数据,基于深度神经网络将目标数据转化为深度神经网络输入层数据,并发送至FPGA,FPGA利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算输入层数据,得到计算结果,完成运算,基于FPGA的硬件特性,由FPGA完成推算环节,极大地降低了运算能耗,降低了运行成本。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种深度神经网络运算系统及方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种深度神经网络运算系统,其特征在于,包括:
CPU,用于接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;
FPGA,用于利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。
2.根据权利要求1所述的深度神经网络运算系统,其特征在于,所述FPGA,包括:
GEMM计算单元,用于利用激活函数所述输入层数据,得到所述计算结果;其中,
所述激活函数为:
式中,Sj表示中间输出结果,m表示神经元个数,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。
3.根据权利要求1所述的深度神经网络运算系统,其特征在于,所述FPGA,包括:
并行运算单元,用于通过#praga unroll x展开计算所述推算环节,其中,x表示利用PCIe带宽数确定的展开层数。
4.一种深度神经网络运算方法,其特征在于,包括:
接收目标数据,利用深度神经网络进行处理,得到深度神经网络的输入层数据;
利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果。
5.根据权利要求4所述的深度神经网络运算系统,其特征在于,所述利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节,计算所述输入层数据,得到计算结果的过程,包括:
利用激活函数所述输入层数据和并行运算程序执行推算环节,得到所述计算结果;其中,
所述激活函数为:
式中,Sj表示中间输出结果,m表示神经元个数,wij表示第一隐含层节点i和第二隐含层节点j之间的权值,bj表示第二隐含层节点j的阀值,xj表示第二隐含层节点j的输出值。
6.根据权利要求4所述的深度神经网络运算系统,其特征在于,所述利用深度神经网络中的GEMM计算节点和并行运算程序执行推算环节的过程,包括:
通过#praga unroll x展开并行计算所述GEMM计算节点,执行所述推算环节,其中,x表示利用PCIe带宽数确定的展开层数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710611302.6A CN107341545A (zh) | 2017-07-25 | 2017-07-25 | 一种深度神经网络运算系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710611302.6A CN107341545A (zh) | 2017-07-25 | 2017-07-25 | 一种深度神经网络运算系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107341545A true CN107341545A (zh) | 2017-11-10 |
Family
ID=60217479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710611302.6A Pending CN107341545A (zh) | 2017-07-25 | 2017-07-25 | 一种深度神经网络运算系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341545A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992299A (zh) * | 2017-11-27 | 2018-05-04 | 郑州云海信息技术有限公司 | 神经网络超参数提取转换方法、系统、装置及存储介质 |
CN108320019A (zh) * | 2018-02-06 | 2018-07-24 | 澎峰(北京)科技有限公司 | 用于深度卷积神经网络的卷积计算方法及装置 |
CN108491924A (zh) * | 2018-02-11 | 2018-09-04 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理装置 |
CN110717574A (zh) * | 2018-07-11 | 2020-01-21 | 杭州海康威视数字技术股份有限公司 | 一种神经网络运行方法、装置及异构智能芯片 |
CN111078286A (zh) * | 2018-10-19 | 2020-04-28 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
WO2021035394A1 (zh) * | 2019-08-23 | 2021-03-04 | 深圳鲲云信息科技有限公司 | 分布式人工智能应用数据加速方法、系统及计算机设备 |
WO2021142713A1 (zh) * | 2020-01-16 | 2021-07-22 | 北京比特大陆科技有限公司 | 神经网络处理的方法、装置与系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140289445A1 (en) * | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
CN106951309A (zh) * | 2017-04-25 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种虚拟化平台虚拟机计算性能测试的方法及系统 |
-
2017
- 2017-07-25 CN CN201710611302.6A patent/CN107341545A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140289445A1 (en) * | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
CN106951309A (zh) * | 2017-04-25 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种虚拟化平台虚拟机计算性能测试的方法及系统 |
Non-Patent Citations (4)
Title |
---|
KING-FIVE: "pragma UNROLL的用法", 《HTTPS://BLOG.CSDN.NET/U013625961/ARTICLE/DETAILS/62422097》 * |
张易: "FPGA超越GPU,问鼎下一代深度学习主引擎", 《HTTP://M.SOHU.COM/A/129910543_473283》 * |
方睿 等: "卷积神经网络的FPGA并行加速方案设计", 《计算机工程与应用》 * |
李义: "基于相关学习神经网络的图像识别方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992299A (zh) * | 2017-11-27 | 2018-05-04 | 郑州云海信息技术有限公司 | 神经网络超参数提取转换方法、系统、装置及存储介质 |
CN108320019A (zh) * | 2018-02-06 | 2018-07-24 | 澎峰(北京)科技有限公司 | 用于深度卷积神经网络的卷积计算方法及装置 |
CN108320019B (zh) * | 2018-02-06 | 2020-11-24 | 澎峰(北京)科技有限公司 | 用于深度卷积神经网络的卷积计算方法及装置 |
CN108491924A (zh) * | 2018-02-11 | 2018-09-04 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理装置 |
CN108491924B (zh) * | 2018-02-11 | 2022-01-07 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理装置 |
CN110717574A (zh) * | 2018-07-11 | 2020-01-21 | 杭州海康威视数字技术股份有限公司 | 一种神经网络运行方法、装置及异构智能芯片 |
CN111078286A (zh) * | 2018-10-19 | 2020-04-28 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
CN111078286B (zh) * | 2018-10-19 | 2023-09-01 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
WO2021035394A1 (zh) * | 2019-08-23 | 2021-03-04 | 深圳鲲云信息科技有限公司 | 分布式人工智能应用数据加速方法、系统及计算机设备 |
CN112840357A (zh) * | 2019-08-23 | 2021-05-25 | 深圳鲲云信息科技有限公司 | 分布式人工智能应用数据加速方法、系统及计算机设备 |
WO2021142713A1 (zh) * | 2020-01-16 | 2021-07-22 | 北京比特大陆科技有限公司 | 神经网络处理的方法、装置与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341545A (zh) | 一种深度神经网络运算系统及方法 | |
Cichocka et al. | SILVEREYE–the implementation of Particle Swarm Optimization algorithm in a design optimization tool | |
CN107169560A (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN108256177A (zh) | 一种河流水沙模型的参数优化方法和系统 | |
CN103942028B (zh) | 应用在密码技术中的大整数乘法运算方法及装置 | |
Zheng et al. | Improving the efficiency of multi-objective evolutionary algorithms through decomposition: An application to water distribution network design | |
CN109300309A (zh) | 路况预测方法及装置 | |
Noilublao et al. | Simultaneous topology, shape, and sizing optimisation of plane trusses with adaptive ground finite elements using MOEAs | |
Ayad et al. | Parametric analysis for genetic algorithms handling parameters | |
Li et al. | A CPU-based algorithm for traffic optimization based on sparse convolutional neural networks | |
CN109472734A (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
Rahardja | Application of the c4. 5 algorithm for identifying regional zone status using a decision tree in the covid-19 series | |
Kaveh et al. | Optimal design of double-layer barrel vaults using CBO and ECBO algorithms | |
CN103885842B (zh) | 一种带加速节点的片上网络的优化整体的任务映射方法 | |
Yanhua et al. | Simulation of the spatial and temporal changes of complex non-point source loads in a lake watershed of central China | |
Posthoff et al. | The Solution of Discrete Constraint Problems Using Boolean Models-The Use of Ternary Vectors for Parallel SAT-Solving | |
Infante et al. | Positive solutions for a class of nonlocal impulsive BVPs via fixed point index | |
JP7120308B2 (ja) | データ処理装置、データ処理回路およびデータ処理方法 | |
CN103793745B (zh) | 一种分布式粒子群优化方法 | |
Antonelli et al. | Carbon flux models in the Mata-Atlântica rain forest of Brazil | |
Sharma | Procedural city generator | |
CN105224506A (zh) | 一种用于gpu异构集群的高性能fft方法 | |
Garrett et al. | GPU-accelerated cellular automata based finite-difference model for seismic wave propagation with OpenCL | |
CN102339274A (zh) | 一种快速傅里叶变换处理器 | |
CN107888590A (zh) | 一种基于gpu与贝叶斯网络推理的未知木马的检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171110 |
|
RJ01 | Rejection of invention patent application after publication |