CN105389772B - 基于图形处理器的数据处理方法和装置 - Google Patents
基于图形处理器的数据处理方法和装置 Download PDFInfo
- Publication number
- CN105389772B CN105389772B CN201510876116.6A CN201510876116A CN105389772B CN 105389772 B CN105389772 B CN 105389772B CN 201510876116 A CN201510876116 A CN 201510876116A CN 105389772 B CN105389772 B CN 105389772B
- Authority
- CN
- China
- Prior art keywords
- kernel
- data processing
- thread
- layer
- gpu
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 141
- 230000008569 process Effects 0.000 claims abstract description 127
- 238000012545 processing Methods 0.000 claims abstract description 87
- 239000011159 matrix material Substances 0.000 claims description 84
- 238000004364 calculation method Methods 0.000 claims description 13
- 241001269238 Data Species 0.000 claims description 11
- 238000005457 optimization Methods 0.000 description 20
- 235000019580 granularity Nutrition 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 7
- 230000010354 integration Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000015654 memory Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明提出一种基于图形处理器的数据处理方法和装置。其中,该数据处理方法包括:在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM算法的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。本发明实施例的数据处理方法,有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于图形处理器的数据处理方法和装置。
背景技术
长短期记忆人工神经网络(Long-Short Term Memory,LSTM)是一种时间递归神经网络,适于处理和预测时间序列中间隔和延迟非常长的重要事件。双向LSTM从历史和未来两个方向学习输入特征,具有更高的识别精度,然而双向LSTM引入了更大的计算量,增大了模型训练的时间。
当前,GPU(Graphics Processing Unit,图形处理器)已经成为深度学***台有MXNet、Kaldi、TensorFlow、Nervana等。其中,MXNet、Kaldi、TensorFlow都提供了双向LSTM的算法实现,其GPU线性代数库大多采用NVidia提供的cuBLAS库。而与前三者不同的是,Nervana的目的是构建一套跨平台的线性代数库。
然而,目前存在的问题是,采用逐帧递推方式的双向LSTM的算法包含大量细粒度计算过程,而GPU在细粒度计算中难以充分发挥其海量计算资源优势,而且GPU的调用具有不可忽略的运行开销,因此存在GPU利用率低的问题。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种基于图形处理器的数据处理方法,该数据处理方法有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
本发明的第二个目的在于提出一种基于图形处理器的数据处理装置。
为达上述目的,本发明第一方面实施例提出了一种基于图形处理器的数据处理方法,包括:在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。
本发明实施例的基于图形处理器的数据处理方法,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
为达上述目的,本发明第二方面实施例提出了一种基于图形处理器的数据处理装置,包括:创建模块,用于在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;第一处理模块,用于通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。
本发明实施例的基于图形处理器的数据处理装置,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的基于图形处理器的数据处理方法的流程图;
图2是本发明一个具体实施例的基于图形处理器的数据处理方法的流程图;
图3是本发明另一个具体实施例的基于图形处理器的数据处理方法的流程图;
图4是本发明一个实施例的LSTM的计算过程的优化流程图;
图5是本发明一个实施例的基于图形处理器的数据处理装置的结构示意图;
图6是本发明一个具体实施例的基于图形处理器的数据处理装置的结构示意图;
图7是本发明另一个具体实施例的基于图形处理器的数据处理装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
图1是本发明一个实施例的基于图形处理器的数据处理方法的流程图。
如图1所示,基于图形处理器的数据处理方法包括:
S101,在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,第一线程用于调用双向LSTM的前向层Kernel序列,第二线程用于调用双向LSTM算法的反向层Kernel序列。
在本发明的一个实施例中将前向层Kernel序列和反向层Kernel序列分别派发至GPU的两条数据流中,以使GPU并行执行前向层Kernel序列和反向层Kernel序列。
具体地,双向LSTM的算法中,前向层和反向层的计算过程是相互独立的,因此可以利用GPU加速部件的硬件支持,同一个GPU可以并发执行前向层和反向层的计算过程。具体而言,在主机的CPU上派生两个线程,即第一线程和第二线程,使用同一个GPU上两条不同的数据流,将前向层和反向层的Kernel序列分别派发在两条数据流中,以使GPU的硬件完成Kernel序列的调度过程。换言之,在对双向LSTM计算过程的优化中,首先以较大的优化粒度对LSTM的计算过程进行优化,判断LSTM的计算过程中是否存在可以并发执行的Kernel序列,例如LSTM的前向层Kernel序列和反向层Kernel序列,基于CUDA(Compute UnifiedDevice Architecture,一种由NVIDIA推出的通用并行计算架构)提供的流机制,将并发的前向层Kernel序列和反向层Kernel序列分派之GPU的不同的数据流中,使之并发执行。
S102,通过第一线程和第二线程控制GPU进行并行数据处理。
本发明实施例的基于图形处理器的数据处理方法,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
图2是本发明一个具体实施例的基于图形处理器的数据处理方法的流程图。
如图2所示,基于图形处理器的数据处理方法包括:
S201,在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,第一线程用于调用双向LSTM的前向层Kernel序列,第二线程用于调用双向LSTM算法的反向层Kernel序列。
在本发明的一个实施例中将前向层Kernel序列和反向层Kernel序列分别派发至GPU的两条数据流中,以使GPU并行执行前向层Kernel序列和反向层Kernel序列。
具体地,双向LSTM的算法中,前向层和反向层的计算过程是相互独立的,因此可以利用GPU加速部件的硬件支持,同一个GPU可以并发执行前向层和反向层的计算过程。具体而言,在主机的CPU上派生两个线程,即第一线程和第二线程,使用同一个GPU上两条不同的数据流,将前向层和反向层的Kernel序列分别派发在两条数据流中,以使GPU的硬件完成Kernel序列的调度过程。换言之,在对双向LSTM计算过程的优化中,首先以较大的优化粒度对LSTM的计算过程进行优化,判断LSTM的计算过程中是否存在可以并发执行的Kernel序列,例如LSTM的前向层Kernel序列和反向层Kernel序列,基于CUDA(Compute UnifiedDevice Architecture,一种由NVIDIA推出的通用并行计算架构)提供的流机制,将并发的前向层Kernel序列和反向层Kernel序列分派之GPU的不同的数据流中,使之并发执行。
S202,通过第一线程和第二线程控制GPU进行并行数据处理。
S203,分别获取双向LSTM的前向层和反向层计算过程中的多个矩阵单元。
其中,Kernel序列中包括多个Kernel程序,每个Kernel程序用于计算双向LSTM的前向层中的多个矩阵单元,或者用于计算双向LSTM的后向层中的多个矩阵单元。具体而言,双向LSTM算法的正向层和反向层计算过程中,均包含对输入门矩阵、输出门矩阵、遗忘门矩阵和CELL矩阵的计算过程,这些矩阵的计算过程之间有些有数据处理相关性,有些没有数据处理相关性。其中,无数据处理相关性是指矩阵的计算过程不依赖于其它矩阵的计算结果,例如,前向层中包含Ka、Kb和Kc三个矩阵的计算过程,如果Kb的计算过程依赖于Ka的计算结果,则表示Ka和Kb的计算过程存在数据处理相关性,而如果Kc的计算过程不依赖于Kb的计算结果,则表示Kb和Kc的计算过程不存在数据处理相关性。因此,对于无数据处理相关性的矩阵,可以并行执行两个或者两个以上矩阵的计算过程。
S204,将至少两个无数据处理相关性的矩阵单元合并为一个,并应用一个Kernel程序处理合并后的矩阵单元。
具体地,将多个矩阵单元中的两个或者两个以上的无数据处理相关性的矩阵单元合并为一个,例如,原有的两个矩阵分别是100﹡100的矩阵,若判断这两个矩阵无数据处理相关性,则将这两个矩阵合并为一个100﹡200的矩阵,应用Kernel程序处理合并后的矩阵单元。换言之,将无数据处理相关性的矩阵单元对应的Kernel程序合并成一个Kernel程序,应用合并后的Kernel程序,利用GPU的硬件多线程机制完成对无数据处理相关性的矩阵的计算过程。
应当理解的是,本实施例中进一步以较小的优化粒度对同一数据流中的Kernel序列进行优化,针对GPU的同一数据流中的Kernel序列中,判断是否存在无数据处理相关性的多个Kernel程序,若存在则将无数据处理相关性的多个Kernel程序进行合并。
本发明实施例的基于图形处理器的数据处理方法,将无数据处理相关性的多个矩阵单元对应的Kernel程序合并为一个Kernel程序,通过GPU完成合并后的Kernel程序的计算过程,从而增大了GPU的计算粒度,减少了GPU的调用次数,有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
图3是本发明另一个具体实施例的基于图形处理器的数据处理方法的流程图。
如图3所示,基于图形处理器的数据处理方法包括:
S301,在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,第一线程用于调用双向LSTM的前向层Kernel序列,第二线程用于调用双向LSTM算法的反向层Kernel序列。
在本发明的一个实施例中将前向层Kernel序列和反向层Kernel序列分别派发至GPU的两条数据流中,以使GPU并行执行前向层Kernel序列和反向层Kernel序列。
具体地,双向LSTM的算法中,前向层和反向层的计算过程是相互独立的,因此可以利用GPU加速部件的硬件支持,同一个GPU可以并发执行前向层和反向层的计算过程。具体而言,在主机的CPU上派生两个线程,即第一线程和第二线程,使用同一个GPU上两条不同的数据流,将前向层和反向层的Kernel序列分别派发在两条数据流中,以使GPU的硬件完成Kernel序列的调度过程。换言之,在对双向LSTM计算过程的优化中,首先以较大的优化粒度对LSTM的计算过程进行优化,判断LSTM的计算过程中是否存在可以并发执行的Kernel序列,例如LSTM的前向层Kernel序列和反向层Kernel序列,基于CUDA(Compute UnifiedDevice Architecture,一种由NVIDIA推出的通用并行计算架构)提供的流机制,将并发的前向层Kernel序列和反向层Kernel序列分派之GPU的不同的数据流中,使之并发执行。
S302,通过第一线程和第二线程控制GPU进行并行数据处理。
S303,分别获取双向LSTM的前向层和反向层计算过程中的多个矩阵单元。
其中,Kernel序列中包括多个Kernel程序,每个Kernel程序用于计算双向LSTM的前向层中的多个矩阵单元,或者用于计算双向LSTM的后向层中的多个矩阵单元。具体而言,双向LSTM算法的正向层和反向层计算过程中,均包含对输入门矩阵、输出门矩阵、遗忘门矩阵和CELL矩阵的计算过程,这些矩阵的计算过程之间有些有数据处理相关性,有些没有数据处理相关性。其中,无数据处理相关性是指矩阵的计算过程不依赖于其它矩阵的计算结果,例如,前向层中包含Ka、Kb和Kc三个矩阵的计算过程,如果Kb的计算过程依赖于Ka的计算结果,则表示Ka和Kb的计算过程存在数据处理相关性,而如果Kc的计算过程不依赖于Kb的计算结果,则表示Kb和Kc的计算过程不存在数据处理相关性。因此,对于无数据处理相关性的矩阵,可以并行执行两个或者两个以上矩阵的计算过程。
S304,将至少两个无数据处理相关性的矩阵单元合并为一个,并应用一个Kernel程序处理合并后的矩阵单元。
具体地,将多个矩阵单元中的两个或者两个以上的无数据处理相关性的矩阵单元合并为一个,例如,原有的两个矩阵分别是100﹡100的矩阵,若判断这两个矩阵无数据处理相关性,则将这两个矩阵合并为一个100﹡200的矩阵,应用Kernel程序处理合并后的矩阵单元。换言之,将无数据处理相关性的矩阵单元对应的Kernel程序合并成一个Kernel程序,应用合并后的Kernel程序,利用GPU的硬件多线程机制完成对无数据处理相关性的矩阵的计算过程。
S305,针对有数据处理相关性的矩阵单元,应用一个Kernel计算过程处理每个矩阵单元中至少两个无数据处理相关性的元素。
其中,每个Kernel程序中包括多个Kernel计算过程,每个Kernel计算过程用于一个矩阵单元中一个元素的计算过程。具体而言,在双向LSTM的矩阵计算过程中存在大量的元素级操作,本实施例中进一步以最小的优化粒度对Kernel序列的计算过程进行优化,对于矩阵单元中的多个元素,将两个或者两个以上的无数据处理相关性的元素的对应的Kernel计算过程合并为一个计算过程。
进而,将多个针对元素的Kernel计算过程合并为一个Kernel计算过程,再将多个Kernel计算过程合并为一个Kernel程序,在CPU创建的线程内顺序地完成有数据处理相关性的矩阵单元的计算过程。
本发明实施例的基于图形处理器的数据处理方法,将无数据处理相关性的矩阵单元的Kernel程序中的Kernel计算过程合并为一个Kernel计算过程,进而将多个Kernel计算过程合并为一个Kernel程序,通过GPU完成合并后的Kernel程序的计算过程,从而减少了对GPU外部存储器的访问次数,减少了GPU的调用次数,有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
应当理解的是,如图4所示,图4中示出了应用本发明优化方法的具体应用流程,按照自上而下的步骤展开,其优化粒度逐渐变小。首先,判断双向LTSM的计算过程中是否存在可并发执行的Kernel序列,通过CPU创建的不同线程将Kernel序列分派至不同的流中,使之并发执行。其次,在同一数据流内的Kernel序列中,判断是否存在无数据处理相关性的多个Kernel程序,如果存在无数据处理相关性的多个Kernel程序,则应用图2实施例中的方法将无数据处理相关性的多个Kernel程序合并为一个Kernel程序。最后,针对同一数据流内并且存在数据处理相关性的Kernel程序,判断每个Kernel程序中的元素级的计算过程是否满足合并条件,如果满足合并条件则应用图3实施例中的方法将多个元素的Kernel计算过程合并为一个Kernel计算过程,进而合并多个Kernel计算过程为一个Kernel程序。针对双向LTSM的计算过程,基于深度学习的声学训练过程计算量和数据量都很大,模型训练时间极大地制约了新技术新方法的验证周期,基于本发明的双向LTSM的计算过程的优化方法,可以有效缩短模型的训练时间,降低研发成本。此外,语音识别的速度直接影响用户的体验,基于本发明的双向LTSM的计算过程的优化方法,可以有效地缩短语音识别的延迟,提高线上语音识别的速度。另外,本发明的双向LTSM的计算过程的优化方法还可以作为普适方法用于其他深度学习框架中。
为了实现上述实施例,本发明还提出一种基于图形处理器的数据处理装置。
图5是本发明一个实施例的基于图形处理器的数据处理装置的结构示意图。
如图5所示,基于图形处理器的数据处理装置包括:创建模块100和第一处理模块200。
其中,创建模块100用于在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,第一线程用于调用双向LSTM的前向层Kernel序列,第二线程用于调用双向LSTM算法的反向层Kernel序列。第一处理模块200用于通过第一线程和第二线程控制GPU进行并行数据处理。
其中,第一处理模块200还用于将前向层Kernel序列和反向层Kernel序列分别派发至GPU的两条数据流中,以使GPU并行执行前向层Kernel序列和反向层Kernel序列。具体地,双向LSTM的算法中,前向层和反向层的计算过程是相互独立的,因此可以利用GPU加速部件的硬件支持,同一个GPU可以并发执行前向层和反向层的计算过程。具体而言,创建模块100在主机的CPU上派生两个线程,即第一线程和第二线程,第一处理模块200使用同一个GPU上两条不同的数据流,将前向层和反向层的Kernel序列分别派发在两条数据流中,以使GPU的硬件完成Kernel序列的调度过程。换言之,在对双向LSTM计算过程的优化中,首先以较大的优化粒度对LSTM的计算过程进行优化,判断LSTM的计算过程中是否存在可以并发执行的Kernel序列,例如LSTM的前向层Kernel序列和反向层Kernel序列,基于CUDA(ComputeUnified Device Architecture,一种由NVIDIA推出的通用并行计算架构)提供的流机制,将并发的前向层Kernel序列和反向层Kernel序列分派之GPU的不同的数据流中,使之并发执行。
本发明实施例的基于图形处理器的数据处理装置,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
图6是本发明一个具体实施例的基于图形处理器的数据处理装置的结构示意图。
如图6所示,基于图形处理器的数据处理装置包括:创建模块100、第一处理模块200、获取模块300和第二处理模块400。
其中,获取模块300用于分别获取双向LSTM的前向层和反向层计算过程中的多个矩阵单元。第二处理模块400用于将至少两个无数据处理相关性的矩阵单元合并为一个,并应用一个Kernel程序处理合并后的矩阵单元。其中,Kernel序列中包括多个Kernel程序,每个Kernel程序用于计算双向LSTM的前向层中的多个矩阵单元,或者用于计算双向LSTM的后向层中的多个矩阵单元。具体而言,双向LSTM算法的正向层和反向层计算过程中,均包含对输入门矩阵、输出门矩阵、遗忘门矩阵和CELL矩阵的计算过程,这些矩阵的计算过程之间有些有数据处理相关性,有些没有数据处理相关性。其中,无数据处理相关性是指矩阵的计算过程不依赖于其它矩阵的计算结果,例如,前向层中包含Ka、Kb和Kc三个矩阵的计算过程,如果Kb的计算过程依赖于Ka的计算结果,则表示Ka和Kb的计算过程存在数据处理相关性,而如果Kc的计算过程不依赖于Kb的计算结果,则表示Kb和Kc的计算过程不存在数据处理相关性。因此,对于无数据处理相关性的矩阵,第二处理模块400可以并行执行两个或者两个以上矩阵的计算过程。
具体地,第二处理模块400将多个矩阵单元中的两个或者两个以上的无数据处理相关性的矩阵单元合并为一个,例如,原有的两个矩阵分别是100﹡100的矩阵,若判断这两个矩阵无数据处理相关性,则将这两个矩阵合并为一个100﹡200的矩阵,应用Kernel程序处理合并后的矩阵单元。换言之,第二处理模块400将无数据处理相关性的矩阵单元对应的Kernel程序合并成一个Kernel程序,应用合并后的Kernel程序,利用GPU的硬件多线程机制完成对无数据处理相关性的矩阵的计算过程。
本发明实施例的基于图形处理器的数据处理装置,将无数据处理相关性的多个矩阵单元对应的Kernel程序合并为一个Kernel程序,通过GPU完成合并后的Kernel程序的计算过程,从而增大了GPU的计算粒度,减少了GPU的调用次数,有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
图7是本发明另一个具体实施例的基于图形处理器的数据处理装置的结构示意图。
如图7所示,基于图形处理器的数据处理装置包括:创建模块100、第一处理模块200、获取模块300、第二处理模块400、第三处理模块500。
其中,第三处理模块500用于针对有数据处理相关性的矩阵单元,应用一个Kernel计算过程处理每个矩阵单元中至少两个无数据处理相关性的元素。其中,每个Kernel程序中包括多个Kernel计算过程,每个Kernel计算过程用于一个矩阵单元中一个元素的计算过程。具体而言,在双向LSTM的矩阵计算过程中存在大量的元素级操作,本实施例中进一步以最小的优化粒度对Kernel序列的计算过程进行优化,对于矩阵单元中的多个元素,第三处理模块500将两个或者两个以上的无数据处理相关性的元素的对应的Kernel计算过程合并为一个计算过程。
进而,第三处理模块500将多个针对元素的Kernel计算过程合并为一个Kernel计算过程,再将多个Kernel计算过程合并为一个Kernel程序,在CPU创建的线程内顺序地完成有数据处理相关性的矩阵单元的计算过程。
本发明实施例的基于图形处理器的数据处理装置,将无数据处理相关性的矩阵单元的Kernel程序中的Kernel计算过程合并为一个Kernel计算过程,进而将多个Kernel计算过程合并为一个Kernel程序,通过GPU完成合并后的Kernel程序的计算过程,从而减少了对GPU外部存储器的访问次数,减少了GPU的调用次数,有效的提高了GPU的执行效率,缩短了LSTM的计算过程的执行时间。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于图形处理器的数据处理方法,其特征在于,包括以下步骤:
在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;
通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。
2.如权利要求1所述的数据处理方法,其特征在于,通过所述第一线程和所述第二线程控制所述图形处理器进行并行数据处理,包括:
将所述前向层Kernel序列和所述反向层Kernel序列分别派发至所述GPU的两条数据流中,以使所述GPU并行执行所述前向层Kernel序列和所述反向层Kernel序列。
3.如权利要求1或2所述的数据处理方法,其特征在于,所述前向层Kernel序列和所述反向层Kernel序列包括多个Kernel程序,所述处理方法还包括:
分别获取所述双向LSTM的前向层和反向层计算过程中的多个矩阵单元;
将至少两个无数据处理相关性的矩阵单元合并为一个,并应用一个所述Kernel程序处理合并后的矩阵单元。
4.如权利要求3所述的数据处理方法,其特征在于,每个Kernel程序中包括多个Kernel计算过程,所述处理方法还包括:
针对有数据处理相关性的矩阵单元,应用一个所述Kernel计算过程处理每个矩阵单元中至少两个无数据处理相关性的元素。
5.如权利要求3所述的数据处理方法,其特征在于,所述双向LSTM的前向层和反向层计算过程中的多个矩阵单元包括输入门矩阵、输出门矩阵、遗忘门矩阵和CELL矩阵。
6.一种基于图形处理器的数据处理装置,其特征在于,包括:
创建模块,用于在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;
第一处理模块,用于通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。
7.如权利要求6所述的数据处理装置,其特征在于,所述第一处理模块还用于:
将所述前向层Kernel序列和所述反向层Kernel序列分别派发至所述GPU的两条数据流中,以使所述GPU并行执行所述前向层Kernel序列和所述反向层Kernel序列。
8.如权利要求6或7所述的数据处理装置,其特征在于,所述前向层Kernel序列和所述反向层Kernel序列包括多个Kernel程序,所述处理装置还包括:
获取模块,用于分别获取所述双向LSTM的前向层和反向层计算过程中的多个矩阵单元;
第二处理模块,用于将至少两个无数据处理相关性的矩阵单元合并为一个,并应用一个所述Kernel程序处理合并后的矩阵单元。
9.如权利要求8所述的数据处理装置,其特征在于,每个Kernel程序中包括多个Kernel计算过程,所述处理装置还包括:
第三处理模块,用于针对有数据处理相关性的矩阵单元,应用一个所述Kernel计算过程处理每个矩阵单元中至少两个无数据处理相关性的元素。
10.如权利要求8所述的数据处理装置,其特征在于,所述双向LSTM的前向层和反向层计算过程中的多个矩阵单元包括输入门矩阵、输出门矩阵、遗忘门矩阵和CELL矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510876116.6A CN105389772B (zh) | 2015-12-02 | 2015-12-02 | 基于图形处理器的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510876116.6A CN105389772B (zh) | 2015-12-02 | 2015-12-02 | 基于图形处理器的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389772A CN105389772A (zh) | 2016-03-09 |
CN105389772B true CN105389772B (zh) | 2018-09-07 |
Family
ID=55422026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510876116.6A Active CN105389772B (zh) | 2015-12-02 | 2015-12-02 | 基于图形处理器的数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389772B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105869024A (zh) * | 2016-04-20 | 2016-08-17 | 北京小米移动软件有限公司 | 商品的推荐方法及装置 |
CN109284825B (zh) * | 2016-04-29 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 用于执行lstm运算的装置和方法 |
EP3451239A4 (en) | 2016-04-29 | 2020-01-01 | Cambricon Technologies Corporation Limited | APPARATUS AND METHOD FOR PERFORMING RECURRENT NEURONAL NETWORK AND LTSM CALCULATIONS |
CN106126492B (zh) * | 2016-06-07 | 2019-02-05 | 北京高地信息技术有限公司 | 基于双向lstm神经网络的语句识别方法及装置 |
WO2019078885A1 (en) * | 2017-10-20 | 2019-04-25 | Google Llc | PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE |
CN107993185A (zh) * | 2017-11-28 | 2018-05-04 | 北京潘达互娱科技有限公司 | 数据处理方法及装置 |
CN110197262B (zh) * | 2018-02-24 | 2021-07-30 | 赛灵思电子科技(北京)有限公司 | 用于lstm网络的硬件加速器 |
CN110705212B (zh) * | 2019-09-09 | 2023-08-25 | 广州小鹏汽车科技有限公司 | 文本序列的处理方法、处理装置、电子终端和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015093B1 (en) * | 2010-10-26 | 2015-04-21 | Michael Lamport Commons | Intelligent control with hierarchical stacked neural networks |
CN104680235A (zh) * | 2015-03-03 | 2015-06-03 | 江苏科技大学 | 圆形微带天线谐振频率设计方法 |
CN104732274A (zh) * | 2015-03-10 | 2015-06-24 | 华南理工大学 | 一种智能计算机 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916538B2 (en) * | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
-
2015
- 2015-12-02 CN CN201510876116.6A patent/CN105389772B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015093B1 (en) * | 2010-10-26 | 2015-04-21 | Michael Lamport Commons | Intelligent control with hierarchical stacked neural networks |
CN104680235A (zh) * | 2015-03-03 | 2015-06-03 | 江苏科技大学 | 圆形微带天线谐振频率设计方法 |
CN104732274A (zh) * | 2015-03-10 | 2015-06-24 | 华南理工大学 | 一种智能计算机 |
Also Published As
Publication number | Publication date |
---|---|
CN105389772A (zh) | 2016-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389772B (zh) | 基于图形处理器的数据处理方法和装置 | |
US9460387B2 (en) | Apparatus and methods for implementing event-based updates in neuron networks | |
US10482380B2 (en) | Conditional parallel processing in fully-connected neural networks | |
US8719199B2 (en) | Systems and methods for providing a neural network having an elementary network description for efficient implementation of event-triggered plasticity rules | |
US9104973B2 (en) | Elementary network description for neuromorphic systems with plurality of doublets wherein doublet events rules are executed in parallel | |
US9311596B2 (en) | Methods for memory management in parallel networks | |
KR102253628B1 (ko) | 복수-쓰레드 프로세서에서의 복수 쓰레드들의 상태들의 결합 | |
CN103765376B (zh) | 具有无阻塞并行架构的图形处理器 | |
CN103488775B (zh) | 一种用于大数据处理的计算***及计算方法 | |
US20130073498A1 (en) | Elementary network description for efficient link between neuronal models and neuromorphic systems | |
CN106953862A (zh) | 网络安全态势的感知方法和装置及感知模型训练方法和装置 | |
US20180165579A1 (en) | Deep Learning Application Distribution | |
CN108205704A (zh) | 一种神经网络芯片 | |
CN113469355A (zh) | 分布式***中的多模型训练管道 | |
CN108304925A (zh) | 一种池化计算装置及方法 | |
Gong et al. | Improving hw/sw adaptability for accelerating cnns on fpgas through a dynamic/static co-reconfiguration approach | |
Weng et al. | AdaStorm: Resource efficient storm with adaptive configuration | |
Chen et al. | Energy cost study for controlling complex social networks with conformity behavior | |
CN106897581A (zh) | 一种面向基因数据解读的可重构异构平台 | |
Vegh et al. | Why Learning and Machine Learning Are Different. | |
CN111443806B (zh) | 交互任务的控制方法、装置、电子设备及存储介质 | |
CN115599533A (zh) | 任务处理方法、装置、设备以及存储介质 | |
Ben Abdallah et al. | Inference of delayed biological regulatory networks from time series data | |
CN116089021B (zh) | 面向深度学习的大规模负载混部调度方法、装置及介质 | |
Ohba et al. | Initial study of reconfigurable neural network accelerators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |