基于图形处理器的数据处理方法和装置的制造方法

文档序号:9631997阅读:607来源:国知局
基于图形处理器的数据处理方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种基于图形处理器的数据处理方法和装置。
【背景技术】
[0002]长短期记忆人工神经网络(Long-Short Term Memory, LSTM)是一种时间递归神经网络,适于处理和预测时间序列中间隔和延迟非常长的重要事件。双向LSTM从历史和未来两个方向学习输入特征,具有更高的识别精度,然而双向LSTM引入了更大的计算量,增大了模型训练的时间。
[0003]当前,GPU (Graphics Processing Unit,图形处理器)已经成为深度学习平台广泛使用的加速部件,支持GPU加速计算典型的深度学习平台有MXNet、Kald1、TensorFlow、Nervana等。其中,MXNet、Kald1、TensorFlow都提供了双向LSTM的算法实现,其GPU线性代数库大多采用NVidia提供的cuBLAS库。而与前三者不同的是,Nervana的目的是构建一套跨平台的线性代数库。
[0004]然而,目前存在的问题是,采用逐帧递推方式的双向LSTM的算法包含大量细粒度计算过程,而GPU在细粒度计算中难以充分发挥其海量计算资源优势,而且GPU的调用具有不可忽略的运行开销,因此存在GPU利用率低的问题。

【发明内容】

[0005]本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
[0006]为此,本发明的第一个目的在于提出一种基于图形处理器的数据处理方法,该数据处理方法有效的提高了 GPU的执行效率,缩短了 LSTM的计算过程的执行时间。
[0007]本发明的第二个目的在于提出一种基于图形处理器的数据处理装置。
[0008]为达上述目的,本发明第一方面实施例提出了一种基于图形处理器的数据处理方法,包括:在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。
[0009]本发明实施例的基于图形处理器的数据处理方法,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了 GPU的执行效率,缩短了 LSTM的计算过程的执行时间。
[0010]为达上述目的,本发明第二方面实施例提出了一种基于图形处理器的数据处理装置,包括:创建模块,用于在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,所述第一线程用于调用双向LSTM的前向层Kernel序列,所述第二线程用于调用双向LSTM算法的反向层Kernel序列;第一处理模块,用于通过所述第一线程和所述第二线程控制所述GPU进行并行数据处理。
[0011]本发明实施例的基于图形处理器的数据处理装置,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了 GPU的执行效率,缩短了 LSTM的计算过程的执行时间。
[0012]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【附图说明】
[0013]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0014]图1是本发明一个实施例的基于图形处理器的数据处理方法的流程图;
[0015]图2是本发明一个具体实施例的基于图形处理器的数据处理方法的流程图;
[0016]图3是本发明另一个具体实施例的基于图形处理器的数据处理方法的流程图;
[0017]图4是本发明一个实施例的LSTM的计算过程的优化流程图;
[0018]图5是本发明一个实施例的基于图形处理器的数据处理装置的结构示意图;
[0019]图6是本发明一个具体实施例的基于图形处理器的数据处理装置的结构示意图;
[0020]图7是本发明另一个具体实施例的基于图形处理器的数据处理装置的结构示意图。
【具体实施方式】
[0021]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0022]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0023]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0024]图1是本发明一个实施例的基于图形处理器的数据处理方法的流程图。
[0025]如图1所示,基于图形处理器的数据处理方法包括:
[0026]S101,在中央处理器CPU内创建用于分别控制图形处理器GPU的第一线程和第二线程,其中,第一线程用于调用双向LSTM的前向层Kernel序列,第二线程用于调用双向LSTM算法的反向层Kernel序列。
[0027]在本发明的一个实施例中将前向层Kernel序列和反向层Kernel序列分别派发至GPU的两条数据流中,以使GPU并行执行前向层Kernel序列和反向层Kernel序列。
[0028]具体地,双向LSTM的算法中,前向层和反向层的计算过程是相互独立的,因此可以利用GPU加速部件的硬件支持,同一个GPU可以并发执行前向层和反向层的计算过程。具体而言,在主机的CPU上派生两个线程,即第一线程和第二线程,使用同一个GPU上两条不同的数据流,将前向层和反向层的Kernel序列分别派发在两条数据流中,以使GPU的硬件完成Kernel序列的调度过程。换言之,在对双向LSTM计算过程的优化中,首先以较大的优化粒度对LSTM的计算过程进行优化,判断LSTM的计算过程中是否存在可以并发执行的Kernel序列,例如LSTM的前向层Kernel序列和反向层Kernel序列,基于CUDA(ComputeUnified Device Architecture,一种由NVIDIA推出的通用并行计算架构)提供的流机制,将并发的前向层Kernel序列和反向层Kernel序列分派之GPU的不同的数据流中,使之并发执行。
[0029]S102,通过第一线程和第二线程控制GPU进行并行数据处理。
[0030]本发明实施例的基于图形处理器的数据处理方法,通过将双向LSTM的前向层和反向层的计算过程分派在GPU的两条数据流中,结合GPU体系的结构特点对双向LSTM的计算过程进行加速优化,从而有效的提高了 GPU的执行效率,缩短了 LSTM的计算过程的执行时间。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1