CN110209472B - 任务数据处理方法和板卡 - Google Patents
任务数据处理方法和板卡 Download PDFInfo
- Publication number
- CN110209472B CN110209472B CN201810995760.9A CN201810995760A CN110209472B CN 110209472 B CN110209472 B CN 110209472B CN 201810995760 A CN201810995760 A CN 201810995760A CN 110209472 B CN110209472 B CN 110209472B
- Authority
- CN
- China
- Prior art keywords
- fpga
- task
- data
- task data
- neural network
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/22—Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
- Logic Circuits (AREA)
Abstract
本发明涉及一种任务数据处理方法和板卡,该方法包括:将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;通过所述多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,所述第二神经网络不同于所述第一神经网络;通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果。本申请方案通过FPGA单元实现第一神经网络和第二神经网络对任务数据的并行处理,从而提高了任务数据的处理效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种任务数据处理方法和板卡。
背景技术
随着计算技术的飞速发展,越来越多的数据都需要计算机来处理。尤其随着数据量的迅猛增长,导致对数据处理效率的要求越来越高,尤其对于任务数据处理的效率的要求较高。
然而,传统的任务数据处理,都是采用串行处理的,即在处理过程中需要等待对前一任务数据处理完毕,得到前一任务数据对应的执行结果后,才能继续执行下一个任务数据,这样相较于大量的任务数据量,任务数据处理的效率较低。
发明内容
基于此,有必要针对传统方法造成任务数据处理的效率较低的问题,提供一种任务数据处理方法和板卡。
一种任务数据处理方法,所述方法包括:
将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;
通过所述多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;
将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,所述第二神经网络不同于所述第一神经网络;
通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果。
一种任务数据处理板卡,其特征在于,所述板卡包括:FPGA芯片;所述FPGA芯片中包括第一FPGA单元和第二FPGA单元;
所述FPGA芯片用于将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;通过所述多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,所述第二神经网络不同于所述第一神经网络;通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果。
上述任务数据处理方法和板卡,将多个任务数据并行输入多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络,通过多个第一FPGA单元并行处理任务数据,提高了第一神经网络处理任务数据的效率。向第一FPGA单元所一一对应的第二FPGA单元,输出由每个第一FPGA单元处理相应任务数据所得到的相应中间数据,每个第二FPGA单元用于独立实现一第二神经网络,再通过多个第二FPGA单元并行处理相应的中间数据,进一步提高了第二神经网络处理中间数据的效率。通过FPGA单元实现第一神经网络和第二神经网络对任务数据的并行处理,从而提高了任务数据的处理效率。
附图说明
图1为一个实施例中任务数据处理方法的应用场景图;
图2为一个实施例中任务数据处理方法的流程示意图;
图3为一个实施例中第一FPGA单元并行处理任务数据的示意图;
图4为一个实施例中获取任务数据的步骤的流程示意图;
图5为一个实施例中第二神经网络的处理步骤的流程示意图;
图6为一个实施例中第二FPGA单元执行循环神经网络中子任务的时序图;
图7为另一个实施例中循环神经网络中并行处理子任务的时序图;
图8为一个实施例中任务数据处理方法的流程示意图;
图9为另一个实施例中任务数据处理方法中并行处理任务数据的示意图;
图10为一个实施例中任务数据处理装置的框图;
图11为一个实施例中计算机设备的内部结构示意图;
图12为一个实施例中任务数据处理板卡的内部结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中任务数据处理方法的应用场景图。参照图1,该应用场景中包括CPU(中央处理器,Central Processing Unit/Processor)110、板卡接口120和任务数据处理板卡130。CPU通过板卡接口120与任务数据处理板卡130进行通信。板卡接口120和CPU110集成在计算机设备的主板上,板卡接口120可以是主板上的板卡插槽,任务数据处理板卡130插入板卡插槽即可与CPU 110进行通信。任务数据处理板卡130中集成有FPGA(现场可编程门阵列,Field-Programmable Gate Array)芯片,FPGA芯片中集成有多个第一FPGA单元和多个第二FPGA单元。任务数据处理板卡130为用于处理任务数据的电路板。
如图2所示,在一个实施例中,提供一种任务数据处理方法。任务数据处理方法可以应用于上述图1中的任务数据处理板卡130中。本实施例主要以该方法应用于上述图1中的任务数据处理板卡130来举例说明。参照图2,该任务数据处理方法,具体包括以下步骤:
步骤S202,将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络。
其中,任务数据为待处理任务所对应的数据。任务数据可以是图像识别任务数据,图像识别任务数据为对图像进行识别的任务数据。图像识别任务可以是图像OCR(OpticalCharacter Recognition,光学字符识别)任务,还可以是图像目标识别任务。
具体地,CPU110将任务数据发送至任务数据处理板卡130,任务数据处理板卡130将接收到的任务数据进行存储。任务数据处理板卡130从存储的任务数据中读取多个任务数据。
在一个实施例中,任务数据处理板卡130接收CPU发送的多个任务数据,任务数据处理板卡130将接收到的多个任务数据存储在存储器中。任务数据处理板卡130接收到CPU发送的数据处理指令,根据任务执行指令确定第一FPGA单元的工作单元数量,根据确定的工作单元数量从存储器中读取任务数据。
本实施例中,所述第一神经网络是卷积神经网络(CNN,Convolutional NeuralNetworks)。可以理解的是,所述第一神经网络的主要功能是实现对任务数据的卷积计算,因此,能够实现卷积计算的神经网络都可以是第一神经网络。
其中,每个第一FPGA单元用于独立实现所述卷积神经网络。每个第一FPGA单元独立实现的卷积神经网络为相同的卷积神经网络,相同的卷积神经网络为网络结构和权重参数均相同。第一FPGA单元为任务处理板卡130中的FPGA芯片中用于独立实现卷积神经网络的电路单元。每个第一FPGA单元独立实现的卷积神经网络为相同的卷积神经网络,多个第一FPGA单元可以并行处理多个任务数据的卷积计算任务。
具体地,任务数据处理板卡130从存储器中读取多个任务数据后,将多个任务数据并行输入多个第一FPGA单元。每个任务数据对应一个第一FPGA单元。
在一个实施例中,任务数据处理板卡130从存储器中读取与第一FPGA单元的工作单元数量匹配的任务数据,将读取到的多个任务数据并行输入多个第一FPGA单元。
举例说明,第一FPGA单元的工作单元数量为n(n为正整数),任务数据处理板卡从存储器中读取n个任务数据,同时将读取到的n个任务数据一一对应的输入每个第一FPGA单元。
在一个实施例中,任务处理方法还包括:调用各第一FPGA单元从存储器中读取卷积网络权重参数,通过每个第一FPGA单元根据卷积网络权重参数独立构建卷积神经网络。
具体地,CPU将卷积网络权重参数存储至存储器中。任务数据处理板卡130从存储器中读取卷积网络权重参数,将卷积网络权重参数在第一FPGA单元对应权重缓存中进行缓存。调用各第一FPGA单元从权重缓存中读取卷积网络权重参数,通过每个第一FPGA单元根据卷积网络权重参数独立构建卷积神经网络。
步骤S204,通过多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据。
其中,每个任务数据经过第一FPGA单元中实现的卷积神经网络处理得到中间数据。
具体地,任务数据处理板卡130把多个任务数据并行输入多个第一FPGA单元后,通过多个第一FPGA单元并行对输入的每个任务数据进行处理,得到每个任务数据对应的中间数据。
图3为一个实施例中第一FPGA单元并行处理任务数据的示意图。每个第一FPGA单元处理任务数据时,依次执行第一FPGA单元独立实现的卷积神经网络中的各子任务,即子任务1、子任务2、……、子任务n(n为正整数),多个第一FPGA单元并行处理多个任务数据。
步骤S206,将中间数据输入至与第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,第二神经网络不同于第一神经网络。
每个第二FPGA单元用于独立实现一第二神经网络。本实施例中,所述第二神经网络是循环神经网络(RNN,Recurrent Neural Networks)。可以理解的是,所述第二神经网络的主要功能是实现对任务数据的循环计算,因此,能够实现循环计算的神经网络都可以是第二神经网络。
其中,每个第二FPGA单元独立实现的循环神经网络为相同的循环神经网络,相同的循环神经网络为网络结果和权重参数均相同。第二FPGA单元为任务处理板卡中的FPGA芯片中用于独立实现循环神经网络的电路单元。每个第二FPGA单元独立实现的循环神经网络为相同的循环神经网络,多个第一FPGA单元可以并行处理多个任务数据的循环计算任务。
具体地,任务数据处理板卡130在获取到每个第一FPGA单元输出的中间数据,中间数据与任务数据一一对应。任务数据处理板卡130将每个第一FPGA单元输出的中间数据,输入到每个第一FPGA单元所一一对应的第二FPGA单元中,通过每个第二FPGA单元独立实现的循环神经网络对输入的中间数据进行处理。
在一个实施例中,任务数据处理方法包括:调用各第二FPGA单元从存储器中读取循环网络权重参数,通过每个第二FPGA单元根据循环网络权重参数独立构建循环神经网络。
具体地,CPU将循环网络权重参数存储至存储器中。任务数据处理板卡130从存储器中读取循环网络权重参数,将循环网络权重参数在第二FPGA单元对应权重缓存中进行缓存。调用各第二FPGA单元从权重缓存中读取循环网络权重参数,通过每个第二FPGA单元根据循环网络权重参数独立构建循环神经网络。
步骤S208,通过多个第二FPGA单元并行处理相应的中间数据,获得任务执行结果。
具体地,任务数据处理板卡130将每个任务数据对应的中间数据,输入每个第二FPGA单元后,通过实现循环神经网络的多个第二FPGA单元并行处理相应的中间数据,得到每个任务数据对应的任务执行结果。
在一个实施例中,对于每个任务数据对应的中间数据,任务数据处理板卡130将中间数据输入第二FPGA单元,通过第二FPGA单元实现的循环神经网络对中间数据进行处理,得到每个任务数据对应的任务执行结果。
在一个实施例中,S208具体包括以下内容:通过多个第二FPGA单元并行处理相应的中间数据,得到各任务数据分别对应的任务执行结果;将各任务数据分别对应的任务执行结果写入存储器中,并向CPU发送任务处理完毕通知。CPU在接收到任务处理完毕通知后,从存储器中读取各任务数据分别对应的任务执行结果。
具体地,任务数据处理板卡130将各任务数据分别对应的中间数据并行输入多个第二FPGA单元,通过多个第二FPGA单元并行处理相应的中间数据
本实施例中,将多个任务数据并行输入多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络,通过多个第一FPGA单元并行处理任务数据,提高了第一神经网络处理任务数据的效率。向第一FPGA单元所一一对应的第二FPGA单元,输出由每个第一FPGA单元处理相应任务数据所得到的相应中间数据,每个第二FPGA单元用于独立实现一第二神经网络,再通过多个第二FPGA单元并行处理相应的中间数据,进一步提高了第二神经网络处理中间数据的效率。通过FPGA单元实现第一神经网络和第二神经网络对任务数据的并行处理,从而提高了任务数据的处理效率。
如图4所示,在一个实施例中,步骤S204之前具体还包括获取任务数据的步骤,该步骤具体包括以下内容:
步骤S402,接收CPU发送的任务数据处理指令。
其中,任务数据处理指令用于指示任务数据处理板卡130开始处理任务数据。
具体地,CPU 110通过板卡接口120向任务数据处理板卡130发送任务数据处理指令。
步骤S404,根据任务数据处理指令确定第一FPGA单元的工作单元数量。
具体地,任务数据处理板卡130接收到任务数据处理指令后,统计第一FPGA单元的工作单元数量。
在一个实施例中,任务数据处理板卡130向FPGA芯片发送第一FPGA单元的统计请求,根据所述统计请求,通过FPGA芯片统计第一FPGA单元对应的工作单元数量,获取统计到的工作单元数量。
步骤S406,从存储器中读取与工作单元数量相匹配的多个任务数据;多个任务数据为CPU写入存储器的。
具体地,CPU将多个任务数据存储到存储器中。任务数据处理板卡130从存储器中读取与工作单元数量匹配的多个任务数据。
在一个实施例中,CPU获取任务数据,对任务数据进行预处理,将预处理后的任务数据存储到存储器中。预处理可以是将获取到的任务数据,按照预设数据格式进行处理。
本实施例中,根据任务数据接收指令确定第一FPGA单元的单元数据的工作单元数量,根据确定的工作单元数量从存储器中读取任务数据,保证将读取到的多个任务数据并行输入到各第一FPGA单元进行处理,从而提高任务数据的处理效率。
在一个实施例中,步骤S202具体包括以下内容:将多个任务数据,分别写入每个第一FPGA单元对应的输入缓存;当各第一FPGA单元空闲时,调用第一FPGA单元以分别从各自对应的输入缓存中读取任务数据。
其中,输入缓存为待输入第一FPGA单元的任务数据进行缓存的缓存空间。
具体地,任务数据处理板卡130将多个任务数据,分别写入每个第一FPGA单元对应的输入缓存,待将任务数据输入到输入缓存后,检测各第一FPGA单元是否处于空闲状态,当各第一FPGA单元处于空闲状态时,调用各第一FPGA单元分别从各自对应的输入缓存中读取任务数据。
在一个实施例中,任务数据处理板卡130中设置有总控制单元,任务数据处理板卡130通过总控制单元对第一FPGA单元和第二FPGA单元进行控制。在每个输入缓存在输入任务数据后,任务数据处理板卡130向总控制单元发送第一FPGA单元启动指令,当各第一FPGA单元处于空闲状态时,总体控制单元根据第一FPGA单元启动指令,调用各第一FPGA单元并行读取各自对应的输入缓存中的任务数据,并对任务数据进行并行处理。
在一个实施例中,任务数据处理板卡130中设置有第一控制子单元和第二控制子单元。总控制单元通过第一控制子单元对第一FPGA单元进行控制。总控制单元通过第二控制子单元对第二FPGA单元进行控制。在每个输入缓存在输入任务数据后,任务数据处理板卡向总控制单元发送第一FPGA单元启动指令,总控制单元将第一FPGA单元启动指令发送至第一控制子单元。第一控制子单元根据第一FPGA单元启动指令,调用各第一FPGA单元并行读取各自对应的输入缓存中的任务数据,并对任务数据进行并行处理。
本实施例中,将任务数据输入每个第一FPGA单元各自对应的输入缓存,调用各第一FPGA单元从相应的输入缓存中读取任务数据,保证了各第一FPGA单元同时读取任务数据,从而并行处理任务数据,提高任务数据处理效率。
在一个实施例中,步骤S206具体包括以下内容:获取每个第一FPGA单元根据当前任务数据输出的当前中间数据;调用每个第一FPGA单元从对应的输入缓存中读取下一任务数据,并将输出的当前中间数据,并行输入与每个第一FPGA单元所一一对应的第二FPGA单元。
具体地,任务数据处理板卡130获取第一FPGA单元根据当前任务数据输出的当前中间数据后,如果第一FPGA单元处于空闲状态,则调用处于空闲状态的每个第一FPGA单元从对应的输入缓存中读取下一任务数据,同时将输出的当前中间数据,输入至与每个第一FPGA单元所一一对应的第二FPGA单元。多个第二FPGA单元对各自输入的中间数据并行处理得到各任务数据对应的任务执行结果。
在一个实施例中,任务数据处理板卡130调用各第二FPGA单元对各自输入的中间数据并行处理,在每个中间数据的处理过程中,第二FPGA单元通过独立实现的循环神经网络对中间数据进行处理,得到任务执行结果。
在本实施例中,在将多个任务数据并行输入独立实现卷积神经网络的多个第一FPGA单元,通过各第一FPGA单元中的独立实现的卷积神经网络对输入的任务数据进行并行处理,将各第一FPGA单元输出的中间数据并行输入各第二FPGA单元,通过各第二FPGA单元中独立实现的卷积神经网络处理相应的中间数据,得到任务执行结果,提高了通过卷积神经网络和循环神经网络处理任务数据的效率。
在一个实施例中,第二FPGA单元包括FPGA子单元;步骤S208具体包括以下内容:对于每个任务数据对应的中间数据,分别按照第二神经网络中各子结构的顺序,依次通过各子结构所对应的FPGA子单元执行相应子结构的子任务,得到任务执行结果;在每个FPGA子单元的处理过程中,在前一个中间数据在当前子结构的子任务执行完毕,且当前中间数据在前一子结构的子任务执行完毕后,开始执行当前中间数据在当前子结构的子任务。
如图5所示,在一个实施例中,步骤S208中的第二神经网络可以为循环神经网络,循环神经网络采用长短期记忆(LSTM,Long-Short Term Memory)神经网络,其为一种根据时间序列或字符序列自我调用的特殊神经网络。该循环神经网络包括第一长短记忆子结构、第二长短记忆子结构和全连接子结构。对应的,步骤S208具体可包括以下内容:
步骤S502,对于每个任务数据对应的中间数据,将中间数据输入到第二神经网络中第一长短期记忆子结构对应的FPGA子单元,得到第一子结果。
在本实施例中,所述
具体地,任务数据处理板卡130接收CPU发送的循环神经网络的循环网络权重参数,将所述循环网络权重参数写入到权重缓存。任务数据处理板卡130调用各第二FPGA单元从权重缓存中读取所述循环网络权重参数,每个第二FPGA单元根据循环网络权重参数通过各FPGA子单元构建循环神经网络中的各子结构。任务数据处理板卡130将每个任务数据的中间数据,分别输入到各第二FPGA单元中第一长短记忆子结构对应的FPGA子单元,通过FPGA子单元对应的第一长短记忆子结构来对中间数据进行处理,得到第一子结果。
步骤S504,将第一子结果输入第二神经网络中第二长短期记忆子结构对应的FPGA子单元,得到第二子结果。
具体地,任务数据处理板卡130在得到第一子结果后,将第一子结果输入循环神经网络中第二长短期记忆子结构对应的FPGA子单元,通过FPGA子单元独立实现的第二长短期记忆子结构对所述第一子结果进行处理,得到第二子结果。
步骤S506,将第二子结果输入第二神经网络中全连接子结构对应的FPGA子单元,得到任务执行结果。
具体地,任务数据处理板卡130在得到第二子结果后,将第二子结果输入循环神经网络中全连接子结果对应的FPGA子单元,通过FPGA子单元独立实现的全连接子结构对第二子结果进行处理,得到任务执行结果。
本实施例中,通过第二FPGA单元处理中间数据,在处理过程中可以保证各第二FPGA单元中单独实现的第二神经网络的子结构中,对各中间数据进行并行处理,从而提高了单独实现的第二神经网络中第二FPGA单元的数据处理效率。
图6为一个实施例中第二FPGA单元执行循环神经网络中子任务的流程示意图。请参照图6和图7,第二FPGA单元独立实现循环神经网络,循环神经网络中包括第一长短期记忆子结果、第二长短期记忆子结构和全连接子结构。在独立实现循环神经网络的第二FPGA单元处于空闲状态时,将第一FPGA单元输出的当前中间数据输入第二FPGA单元,第二FPGA单元调用第一长短期记忆子结构根据中间数据执行第一子任务,在当前中间数据的第一子任务执行完毕后,得到当前中间数据的第一子结果。第二FPGA单元将第一子结果输入第二长短期记忆子结构,调用第二长短期记忆子结构根据第一子结果执行当前中间数据对应的第二子任务,在当前中间数据的第二子任务执行完毕后,得到当前中间数据对应第二子结果。在当前中间数据的第二子任务执行完毕,且还存在下一中间数据时,则第二FPGA单元获取下一中间数据,调用第一长短期记忆子网络和全连接子结构,并行执行下一中间数据的第一子任务和当前数据的第三子任务;在当前中间数据的第三子任务执行完毕,得到当前中间数据所对应任务数据的任务执行结果,且下一中间数据的第一子任务执行完毕后,调用第二长短期记忆子结构执行下一中间数据的第二子任务。在当前中间数据的第二子任务执行完毕,且无下一中间数据时,则第二FPGA单元调用全连接子结构执行当前中间数据的第三子任务,在当前中间数据的第三子任务执行完毕,得到当前中间数据所对应任务数据的任务执行结果。
图7为一个实施例中循环神经网络的并行处理子任务的时序图。请参考图7,循环神经网络中对任务数据进行处理过程采用的并行计算,在并行计算过程中通过第一长短期记忆子结构和全连接子结构并行执行。其中,第一长短期记忆子结构对应的计算时间为T0,第二长短期记忆子结构对应的计算时间为T1,全连接子结构对应的计算时间为T2,对于一个任务数据的串行计算所耗费为T0+T1+T2,相对于串行计算而言,并行计算过程中通过第一长短期记忆子结果和全连接结构的并行计算,可以将第一长短器记忆子结构计算所耗费的是时间T0抵消掉。
本实施例中,在独立实现循环神经网络的单个第二FPGA单元,通过第一长短期记忆子结构和全连接子结构并行执行,并行的方法第一长短期记忆子结构的计算时间被全连接子结构的计算时间所抵销,计算时间缩短为T1+T2。这种方法使循环神经网络的吞吐率得到很大的提升,提高了多个中间数据的处理效率,从而提高了任务数据的处理效率。
图8为一个实施例中任务数据处理方法的流程示意图。CPU获取输入的数据,CPU对输入的数据进行预处理得到任务数据,将任务数据输入卷积神经网络得到中间数据,将中间数据输入循环神经网络进行循环处理,直至循环神经网络输入任务执行数据。本实施例中,所述输入数据为图片,所述卷积神经网络用于对预处理后的图片数据进行卷积计算,得到特征图,特征图输入到循环神经网络后,会进行分类和识别等处理,并输出文字识别预测结果。
图9为任务数据处理方法中并行处理任务数据的示意图。CPU对输入的数据进行预处理,得到任务数据,调用独立实现卷积神经网络的各第一FPGA单元对任务数据进行处理,得到中间数据,调用独立实现循环神经网络的各第二FPGA单元对中间数据进行处理,得到任务执行结果。在任务数据的处理过程中,CPU的预处理,第一FPGA单元和第二FPGA单元并行处理。
在此过程中,如果从系统的角度看,上述方法的主流程主要由预处理(CPU负责)、卷积神经网络计算(第一FPGA单元负责)和循环神经网络计算(第二FPGA单元负责)三大部分组成。如果CPU进行单线程调度设计(即串行计算),则吞吐量的计算时间由三大部分计算时间叠加(T0+T1+T2)决定,将占用较长时间进行计算。
而本方案采用了多线程调度的设计(即并行计算),CPU作为主控设备,调度上述的总体控制单元达到并行调度的目的。具体来说,调度过程为:CPU在空闲的时候,只要有计算需求,即进行数据预处理;卷积神经网络(CNN)检测是否有已经预处理完毕的数据,如果有,即进行CNN计算;循环神经网络(RNN)检测是否有CNN的计算完毕的数据,如果有,即进行RNN计算。此种多线程调度设计使得预处理、CNN和RNN能并行进行计算(见图9),使用这种方法吞吐量的计算时间由三大部分计算中时间最长的CNN(T1)所决定,TO和T2的计算时间被抵销,极大地提高了系统的吞吐量。
如图10所示,在一个实施例中,提供一种任务数据处理装置1000,该装置具体包括以下内容:任务数据输入模块1004、数据并行处理模块1006、中间数据输入模块1008和执行结果获得模块1010。
任务数据输入模块1002,用于将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络。
数据并行处理模块1004,用于通过多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据。
中间数据输入模块1006,用于将中间数据输入至与第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,第二神经网络不同于第一神经网络。
执行结果获得模块1008,用于通过多个第二FPGA单元并行处理相应的中间数据,获得任务执行结果。
在一个实施例中,任务数据处理装置1000还包括任务数据获取模块。任务数据获取模块,用于接收CPU发送的任务数据处理指令;根据任务数据处理指令确定第一FPGA单元的工作单元数量;从存储器中读取与工作单元数量相匹配的多个任务数据;多个任务数据为CPU写入存储器的。
在一个实施例中,任务数据输入模块1002还用于将多个任务数据,分别写入每个第一FPGA单元对应的输入缓存;当各第一FPGA单元空闲时,调用第一FPGA单元以分别从各自对应的输入缓存中读取任务数据。
在一个实施例中,中间数据输入模块1006还用于获取每个第一FPGA单元根据当前任务数据输出的当前中间数据;调用每个第一FPGA单元从对应的输入缓存中读取下一任务数据,并将输出的当前中间数据,并行输入与每个第一FPGA单元所一一对应的第二FPGA单元。
在一个实施例中,第二FPGA单元包括FPGA子单元;执行结果获得模块1008还用于对于每个任务数据对应的中间数据,分别按照第二神经网络中各子结构的顺序,依次通过各子结构所对应的FPGA子单元执行相应子结构的子任务,得到任务执行结果;在每个FPGA子单元的处理过程中,在前一个中间数据在当前子结构的子任务执行完毕,且当前中间数据在前一子结构的子任务执行完毕后,开始执行当前中间数据在当前子结构的子任务。
在一个实施例中,执行结果获得模块1008还用于对于每个任务数据对应的中间数据,将中间数据输入到第二神经网络中第一长短期记忆子结构对应的FPGA子单元,得到第一子结果;将第一子结果输入第二神经网络中第二长短期记忆子结构对应的FPGA子单元,得到第二子结果;将第二子结果输入第二神经网络中全连接子结构对应的FPGA子单元,得到任务执行结果。
在一个实施例中,执行结果获得模块1008还用于通过多个第二FPGA单元并行处理相应的中间数据,得到各任务数据分别对应的任务执行结果;将各任务数据分别对应的任务执行结果写入存储器中,并向CPU发送任务处理完毕通知,使CPU根据所述任务处理完毕通知从存储器中读取各任务数据分别对应的任务执行结果。
在一个实施例中,任务数据获取模块还用于调用各第一FPGA单元从存储器中读取第一网络权重参数,并根据第一神经网络权重参数独立构建对应各个第一FPGA单元的卷积神经网络;调用各第二FPGA单元从存储器中读取第二网络权重参数,并根据第二网络权重参数独立构建对应各个第二FPGA单元的循环神经网络。
本实施例中,将多个任务数据并行输入多个第一FPGA单元,每个第一FPGA单元用于独立实现第一神经网络,通过多个第一FPGA单元并行处理任务数据,提高了第一神经网络处理任务数据的效率。向第一FPGA单元所一一对应的第二FPGA单元,输出由每个第一FPGA单元处理相应任务数据所得到的相应中间数据,每个第二FPGA单元用于独立实现第二神经网络,再通过多个第二FPGA单元并行处理相应的中间数数据,进一步提高了第一神经网络处理中间数据的效率。通过FPGA单元实现第一神经网络和第二神经网络对任务数据的并行处理,从而提高了任务数据的处理效率。
图11为一个实施例中计算机设备的内部结构示意图。参照图11,该计算机设备可以是集成有图1中CPU110和板卡接口120,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和板卡接口,板卡接口连接有任务数据处理板卡。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质可存储操作系统和计算机程序。该计算机程序被执行时,可使得处理器执行一种任务数据处理方法。该任务数据处理板卡和计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备和任务数据处理板卡的运行。该内存储器中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种任务数据处理方法。计算机设备的网络接口用于进行网络通信。计算机设备可以是分布式服务器从机。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备或机器人的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的任务数据处理装置1000可以实现为一种计算机程序的形式,计算机程序可在如图11所示的计算机设备上运行。计算机设备的存储器中可存储组成该任务数据处理装置的各个程序模块,比如,图10所示的任务数据输入模块1002、数据并行处理模块1004、中间数据输入模块1006和执行结果获得模块1008。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的任务数据处理方法中的步骤。
例如,图11所示的计算机设备可以通过如图10所示的任务数据处理装置1000中的任务数据输入模块1002将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络。计算机设备可通过数据并行处理模块1004通过多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据。计算机设备可通过中间数据输入模块1006将中间数据输入至与第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,第二神经网络不同于第一神经网络。计算机设备可通过执行结果获得模块1008通过多个第二FPGA单元并行处理相应的中间数据,获得任务执行结果。
如图12所示,本发明还提供一种任务数据处理板卡,包括:FPGA芯片;FPGA芯片中包括第一FPGA单元和第二FPGA单元。
FPGA芯片用于将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;通过多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;将中间数据输入至与第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,第二神经网络不同于第一神经网络;通过多个第二FPGA单元并行处理相应的中间数据,获得任务执行结果。
在一个实施例中,任务数据处理板卡包括:存储器;存储器与FPGA芯片相连接;任务处理板卡通过板卡接口与CPU相连接。
FPGA芯片还用于接收CPU发送的任务数据处理指令;根据任务数据处理指令确定第一FPGA单元的工作单元数量;从存储器中读取与工作单元数量相匹配的多个任务数据;多个任务数据为CPU写入存储器的。
在一个实施例中,任务数据处理板卡包括:FPGA芯片中包括输入缓存;输入缓存分别与各FPGA单元对应。
FPGA芯片还用于将多个任务数据,分别写入每个第一FPGA单元对应的输入缓存;当各第一FPGA单元空闲时,调用第一FPGA单元以分别从各自对应的输入缓存中读取任务数据。
在一个实施例中,任务数据处理板卡:FPGA芯片还用于获取每个第一FPGA单元根据当前任务数据输出的当前中间数据;调用每个第一FPGA单元从对应的输入缓存中读取下一任务数据,并将输出的当前中间数据,并行输入与每个第一FPGA单元所一一对应的第二FPGA单元。
在一个实施例中,任务数据处理板卡包括:第二FPGA单元包括FPGA子单元。
FPGA芯片还用于对于每个任务数据对应的中间数据,分别按照第二神经网络中各子结构的顺序,依次通过各子结构所对应的FPGA子单元执行相应子结构的子任务,得到任务执行结果;在每个FPGA子单元的处理过程中,在前一个中间数据在当前子结构的子任务执行完毕,且当前中间数据在前一子结构的子任务执行完毕后,开始执行当前中间数据在当前子结构的子任务。
在一个实施例中,任务数据处理板卡包括:FPGA芯片还用于对于每个任务数据对应的中间数据,将中间数据输入到第二神经网络中第一长短期记忆子结构对应的FPGA子单元,得到第一子结果;将第一子结果输入第二神经网络中第二长短期记忆子结构对应的FPGA子单元,得到第二子结果;将第二子结果输入第二神经网络中全连接子结构对应的FPGA子单元,得到任务执行结果。
在一个实施例中,任务数据处理板卡包括:FPGA芯片还用于通过多个第二FPGA单元并行处理相应的中间数据,得到各任务数据分别对应的任务执行结果;将各任务数据分别对应的任务执行结果写入存储器中,并向CPU发送任务处理完毕通知,使CPU根据任务处理完毕通知从存储器中读取各任务数据分别对应的任务执行结果。
在一个实施例中,任务数据处理板卡包括:FPGA芯片还用于调用各第一FPGA单元从存储器中读取第一网络权重参数,并根据第一神经网络权重参数独立构建对应各个第一FPGA单元的卷积神经网络;调用各第二FPGA单元从存储器中读取第二网络权重参数,并根据第二网络权重参数独立构建对应各个第二FPGA单元的循环神经网络。
本实施例中,将多个任务数据并行输入多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络,通过多个第一FPGA单元并行处理任务数据,提高了第一神经网络处理任务数据的效率。向第一FPGA单元所一一对应的第二FPGA单元,输出由每个第一FPGA单元处理相应任务数据所得到的相应中间数据,每个第二FPGA单元用于独立实现一第二神经网络,再通过多个第二FPGA单元并行处理相应的中间数据,进一步提高了第二神经网络处理中间数据的效率。通过FPGA单元实现第一神经网络和第二神经网络对任务数据的并行处理,从而提高了任务数据的处理效率。
在一个实施例中,请参照图12,提供一种任务数据处理板卡130。该任务数据处理板卡130通过板卡接口120与CPU110连接。任务数据处理板卡包括存储器和FPGA芯片。CPU通过通道0对存储器中第一FPGA单元对应的存储空间进行数据读写,CPU通过通道1对存储器中第二FPGA单元对应的存储空间进行读写。FPGA芯片中设置有多个第一FPGA单元和第一FPGA单元一一对应的输入缓存,还设置有第一FPGA单元对应的权重缓存。FPGA芯片中还设置有多个第二FPGA单元和第二FPGA单元对应的权重缓存和输出缓存。FPGA芯片中设置有总体控制单元、第一控制单元和第二控制单元,FPGA芯片通过总体控制单元对第一控制单元和第二控制单元进行控制,通过第一控制单元对各第一FPGA单元进行控制,通过第二控制单元对第二FPGA单元进行控制。每个第一FPGA单元从权重缓存中获取卷积网络权重参数,根据卷积网络权重参数独立实现卷积神经网络。每个第二FPGA单元从权重缓存中获取循环网络权重参数,根据循环网络权重参数独立实现循环神经网络。
本发明还提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述的任务数据处理方法。
本发明还提供一种存储有计算机程序的存储介质,所述计算机程序被处理器执行时,使得处理器执行上述的任务数据处理方法。
本实施例中,将多个任务数据并行输入多个第一FPGA单元,每个第一FPGA单元用于独立实现卷积神经网络,通过多个第一FPGA单元并行处理任务数据,提高了卷积神经网络处理任务数据的效率。向第一FPGA单元所一一对应的第二FPGA单元,输出由每个第一FPGA单元处理相应任务数据所得到的相应中间数据,每个第二FPGA单元用于独立实现循环神经网络,再通过多个第二FPGA单元并行处理相应的中间数数据,进一步提高了卷积神经网络处理中间数据的效率。通过FPGA单元实现卷积神经网络和循环神经网络对任务数据的并行处理,从而提高了任务数据的处理效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (22)
1.一种任务数据处理方法,所述方法包括:
将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;
通过所述多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;
将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,所述第二神经网络不同于所述第一神经网络;
通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果;每个所述第二FPGA单元包括FPGA子单元;
其中,所述通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果包括:
对于每个任务数据对应的中间数据,分别按照第二神经网络中各子结构的顺序,依次通过各所述子结构所对应的FPGA子单元执行相应子结构的子任务,得到任务执行结果;
在每个所述FPGA子单元的处理过程中,在前一个中间数据在当前子结构的子任务执行完毕,且当前中间数据在前一子结构的子任务执行完毕后,开始执行当前中间数据在当前子结构的子任务。
2.根据权利要求1所述的方法,其特征在于,所述将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络之前,还包括:
接收CPU发送的任务数据处理指令;
根据所述任务数据处理指令确定第一FPGA单元的工作单元数量;
从存储器中读取与所述工作单元数量相匹配的多个任务数据;所述多个任务数据为所述CPU写入所述存储器的。
3.根据权利要求1所述的方法,其特征在于,所述将多个任务数据并行输入到多个第一FPGA单元包括:
将所述多个任务数据,分别写入每个第一FPGA单元对应的输入缓存;
当所述各第一FPGA单元空闲时,调用所述第一FPGA单元以分别从各自对应的输入缓存中读取任务数据。
4.根据权利要求1所述的方法,其特征在于,所述将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元包括:
获取每个所述第一FPGA单元根据当前任务数据输出的当前中间数据;
调用每个所述第一FPGA单元从对应的输入缓存中读取下一任务数据,并将所述输出的当前中间数据,并行输入与每个所述第一FPGA单元所一一对应的第二FPGA单元。
5.根据权利要求1所述的方法,其特征在于,所述对于每个任务数据对应的中间数据,分别按照第二神经网络中子结构的顺序,依次通过各所述子结构所对应的FPGA子单元执行相应子结构的子任务包括:
对于每个任务数据对应的中间数据,将所述中间数据输入到所述第二神经网络中第一长短期记忆子结构对应的FPGA子单元,得到第一子结果;
将所述第一子结果输入所述第二神经网络中第二长短期记忆子结构对应的FPGA子单元,得到第二子结果;
将所述第二子结果输入所述第二神经网络中全连接子结构对应的FPGA子单元,得到任务执行结果。
6.根据权利要求1所述的方法,其特征在于,所述通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果包括:
通过多个所述第二FPGA单元并行处理相应的中间数据,得到各任务数据分别对应的任务执行结果;
将所述各任务数据分别对应的任务执行结果写入存储器中,并向CPU发送任务处理完毕通知,使所述CPU根据所述任务处理完毕通知从所述存储器中读取所述各任务数据分别对应的任务执行结果。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
调用各第一FPGA单元从存储器中读取第一网络权重参数,并根据所述第一神经网络权重参数独立构建对应各个第一FPGA单元的卷积神经网络;
调用各第二FPGA单元从存储器中读取第二网络权重参数,并根据所述第二网络权重参数独立构建对应各个第二FPGA单元的循环神经网络。
8.一种任务数据处理板卡,其特征在于,所述板卡包括:FPGA芯片;所述FPGA芯片中包括第一FPGA单元和第二FPGA单元;所述第二FPGA单元包括FPGA子单元;
所述FPGA芯片用于将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;通过所述多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,所述第二神经网络不同于所述第一神经网络;通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果;
所述FPGA芯片还用于对于每个任务数据对应的中间数据,分别按照第二神经网络中各子结构的顺序,依次通过各所述子结构所对应的FPGA子单元执行相应子结构的子任务,得到任务执行结果;在每个所述FPGA子单元的处理过程中,在前一个中间数据在当前子结构的子任务执行完毕,且当前中间数据在前一子结构的子任务执行完毕后,开始执行当前中间数据在当前子结构的子任务。
9.根据权利要求8所述的板卡,其特征在于,所述板卡还包括:存储器;所述存储器与所述FPGA芯片相连接;所述任务处理板卡通过板卡接口与CPU相连接;
所述FPGA芯片还用于接收CPU发送的任务数据处理指令;根据所述任务数据处理指令确定第一FPGA单元的工作单元数量;从存储器中读取与所述工作单元数量相匹配的多个任务数据;所述多个任务数据为所述CPU写入所述存储器的。
10.根据权利要求8所述的板卡,其特征在于,所述板卡还包括:所述FPGA芯片中包括输入缓存;所述输入缓存分别与各FPGA单元对应;
所述FPGA芯片还用于将所述多个任务数据,分别写入每个第一FPGA单元对应的输入缓存;当所述各第一FPGA单元空闲时,调用所述第一FPGA单元以分别从各自对应的输入缓存中读取任务数据。
11.根据权利要求8所述的板卡,其特征在于,所述板卡还包括:所述FPGA芯片还用于获取每个所述第一FPGA单元根据当前任务数据输出的当前中间数据;调用每个所述第一FPGA单元从对应的输入缓存中读取下一任务数据,并将所述输出的当前中间数据,并行输入与每个所述第一FPGA单元所一一对应的第二FPGA单元。
12.根据权利要求8所述的板卡,其特征在于,所述板卡还包括:
所述FPGA芯片还用于对于每个任务数据对应的中间数据,将所述中间数据输入到所述第二神经网络中第一长短期记忆子结构对应的FPGA子单元,得到第一子结果;将所述第一子结果输入所述第二神经网络中第二长短期记忆子结构对应的FPGA子单元,得到第二子结果;将所述第二子结果输入所述第二神经网络中全连接子结构对应的FPGA子单元,得到任务执行结果。
13.根据权利要求8所述的板卡,其特征在于,所述板卡还包括:
所述FPGA芯片还用于通过多个所述第二FPGA单元并行处理相应的中间数据,得到各任务数据分别对应的任务执行结果;将所述各任务数据分别对应的任务执行结果写入存储器中,并向CPU发送任务处理完毕通知;
所述CPU还用于根据所述任务处理完毕通知从所述存储器中读取所述各任务数据分别对应的任务执行结果。
14.一种任务数据处理装置,其特征在于,所述装置包括:
任务数据输入模块,用于将多个任务数据并行输入到多个第一FPGA单元,每个第一FPGA单元用于独立实现一第一神经网络;
数据并行处理模块,用于通过所述多个第一FPGA单元,并行处理所输入的每个任务数据,输出多个中间数据;
中间数据输入模块,用于将所述中间数据输入至与所述第一FPGA单元一一对应的第二FPGA单元;每个第二FPGA单元用于独立实现一第二神经网络,所述第二神经网络不同于所述第一神经网络;
执行结果获得模块,用于通过多个所述第二FPGA单元并行处理相应的中间数据,获得任务执行结果;每个所述第二FPGA单元包括FPGA子单元;
其中,所述执行结果获得模块,还用于对于每个任务数据对应的中间数据,分别按照第二神经网络中各子结构的顺序,依次通过各所述子结构所对应的FPGA子单元执行相应子结构的子任务,得到任务执行结果;在每个所述FPGA子单元的处理过程中,在前一个中间数据在当前子结构的子任务执行完毕,且当前中间数据在前一子结构的子任务执行完毕后,开始执行当前中间数据在当前子结构的子任务。
15.根据权利要求14所述的装置,其特征在于,所述任务数据处理装置还包括任务数据获取模块,所述任务数据获取模块用于:
接收CPU发送的任务数据处理指令;
根据所述任务数据处理指令确定第一FPGA单元的工作单元数量;
从存储器中读取与所述工作单元数量相匹配的多个任务数据;所述多个任务数据为所述CPU写入所述存储器的。
16.根据权利要求14所述的装置,其特征在于,所述任务数据输入模块还用于:
将所述多个任务数据,分别写入每个第一FPGA单元对应的输入缓存;
当所述各第一FPGA单元空闲时,调用所述第一FPGA单元以分别从各自对应的输入缓存中读取任务数据。
17.根据权利要求14所述的装置,其特征在于,所述中间数据输入模块还用于:
获取每个所述第一FPGA单元根据当前任务数据输出的当前中间数据;
调用每个所述第一FPGA单元从对应的输入缓存中读取下一任务数据,并将所述输出的当前中间数据,并行输入与每个所述第一FPGA单元所一一对应的第二FPGA单元。
18.根据权利要求14所述的装置,其特征在于,所述执行结果获得模块还用于:
对于每个任务数据对应的中间数据,将所述中间数据输入到所述第二神经网络中第一长短期记忆子结构对应的FPGA子单元,得到第一子结果;
将所述第一子结果输入所述第二神经网络中第二长短期记忆子结构对应的FPGA子单元,得到第二子结果;
将所述第二子结果输入所述第二神经网络中全连接子结构对应的FPGA子单元,得到任务执行结果。
19.根据权利要求14所述的装置,其特征在于,所述执行结果获得模块还用于:
通过多个所述第二FPGA单元并行处理相应的中间数据,得到各任务数据分别对应的任务执行结果;
将所述各任务数据分别对应的任务执行结果写入存储器中,并向CPU发送任务处理完毕通知,使所述CPU根据所述任务处理完毕通知从所述存储器中读取所述各任务数据分别对应的任务执行结果。
20.根据权利要求14-19任一项所述的装置,其特征在于,所述装置还用于:
调用各第一FPGA单元从存储器中读取第一网络权重参数,并根据所述第一神经网络权重参数独立构建对应各个第一FPGA单元的卷积神经网络;
调用各第二FPGA单元从存储器中读取第二网络权重参数,并根据所述第二网络权重参数独立构建对应各个第二FPGA单元的循环神经网络。
21.一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器执行时,使得处理器执行权利要求1至7中任一项所述的方法的步骤。
22.一种存储有计算机程序的存储介质,所述计算机程序被处理器执行时,使得处理器执行权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810995760.9A CN110209472B (zh) | 2018-08-29 | 2018-08-29 | 任务数据处理方法和板卡 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810995760.9A CN110209472B (zh) | 2018-08-29 | 2018-08-29 | 任务数据处理方法和板卡 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209472A CN110209472A (zh) | 2019-09-06 |
CN110209472B true CN110209472B (zh) | 2023-04-07 |
Family
ID=67779873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810995760.9A Active CN110209472B (zh) | 2018-08-29 | 2018-08-29 | 任务数据处理方法和板卡 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209472B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045732B (zh) * | 2019-12-05 | 2023-06-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、芯片、设备及存储介质 |
CN113472550A (zh) * | 2020-03-30 | 2021-10-01 | 阿里巴巴集团控股有限公司 | 分布式管理方法及系统、以及管理系统 |
CN111860810A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种基于fpga的神经网络运算方法、装置及设备 |
CN111858630B (zh) * | 2020-07-10 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN111740847B (zh) * | 2020-08-24 | 2020-12-11 | 常州楠菲微电子有限公司 | 一种基于fpga的高速网络数据传输系统及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101527010B (zh) * | 2008-03-06 | 2011-12-07 | 上海理工大学 | 人工神经网络算法的硬件实现方法及其系统 |
US10169513B2 (en) * | 2016-05-06 | 2019-01-01 | Baidu Usa Llc | Method and system for designing FPGA based on hardware requirements defined in source code |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN108228969A (zh) * | 2017-12-07 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向深度神经网络的双fpga协同工作方法 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
-
2018
- 2018-08-29 CN CN201810995760.9A patent/CN110209472B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110209472A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209472B (zh) | 任务数据处理方法和板卡 | |
CN109325494B (zh) | 图片处理方法、任务数据处理方法和装置 | |
WO2022105805A1 (zh) | 数据的处理方法及存算一体芯片 | |
US11436050B2 (en) | Method, apparatus and computer program product for resource scheduling | |
CN110704177B (zh) | 计算任务处理方法、装置、计算机设备和存储介质 | |
CN111104169B (zh) | 指令列表调度方法、装置、计算机设备及存储介质 | |
CN112231054B (zh) | 基于k8s集群的多模型推理服务部署方法及装置 | |
CN110717574A (zh) | 一种神经网络运行方法、装置及异构智能芯片 | |
CN110503385A (zh) | 业务处理方法、装置、计算机设备和存储介质 | |
CN111338779A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN111381946B (zh) | 任务处理方法、装置及相关产品 | |
KR20210106217A (ko) | 인공 신경망의 재구성을 수행하는 프로세서, 이를 포함하는 전자 장치 및 프로세서의 동작 방법 | |
CN114205160B (zh) | 基于区块链的数据处理方法、装置及电子设备 | |
CN113220429B (zh) | Java线程池的任务处理方法、装置、设备和介质 | |
US20220100814A1 (en) | Graphics processor and acceleration method thereof | |
CN112732819A (zh) | 基于etl的数据处理方法、装置、设备和存储介质 | |
CN113032118A (zh) | 用于计算机应用程序的异步操作处理方法和相应的系统 | |
CN112149951A (zh) | 风险控制方法、装置、计算机设备和存储介质 | |
CN114282504B (zh) | 一种服务器开发方法、装置、计算机设备及存储介质 | |
CN111382116B (zh) | 数据接收方法、装置及相关产品 | |
CN112232594B (zh) | 一种多星应急观测任务规划方法、装置和计算机设备 | |
US20220308920A1 (en) | Task scheduling method, and computing device and application processor using the same | |
CN111382857B (zh) | 任务处理装置、神经网络处理器芯片、组合装置以及电子设备 | |
CN115204379A (zh) | 神经网络模型部署方法、装置、计算机设备及存储介质 | |
US11966789B2 (en) | System and method for queuing node load for malware analysis |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |