CN108681773B - 数据运算的加速方法、装置、终端及可读存储介质 - Google Patents
数据运算的加速方法、装置、终端及可读存储介质 Download PDFInfo
- Publication number
- CN108681773B CN108681773B CN201810500501.4A CN201810500501A CN108681773B CN 108681773 B CN108681773 B CN 108681773B CN 201810500501 A CN201810500501 A CN 201810500501A CN 108681773 B CN108681773 B CN 108681773B
- Authority
- CN
- China
- Prior art keywords
- data
- storage units
- storage
- reading
- module
- 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
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例公开了一种数据运算的加速方法、装置、终端及可读存储介质,方法包括:读取各存储单元内待运算的数据组,将读取的数据组缓存至GPU,调用GPU对缓存的数据组进行并行运算,其中,上述单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组。相较于现有技术而言,本发明实施例在运算过程中,减少了运算过程中数据读取的次数,同时还能够有效的提升待运算数据的运算速度,另外由于本发明实施例将运算过程从CPU转移到了GPU上,因此还可以降低CPU的占用率,保障终端的正常运行。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种数据运算的加速方法、装置、终端及可读存储介质。
背景技术
随着AI(Artificial Intelligence,人工智能)技术的飞速发展,许多AI项目开始在终端上落地。目前,大多数的AI项目是基于前馈神经网络的,前馈神经网络有一个输入层和一个输出层,从输入层开始,经过一系列的计算层,最后产生输出。在计算过程中,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层.各层间没有反馈,因此前馈神经网络的性能瓶颈主要集中在各个层的运算上。
目前,业界主要是基于CPU(Central Processing Unit,中央处理器)来实现各个层的运算,但对于数据规模较大、网络模型较复杂的高计算强度场景,利用CPU则运算速度比较慢,并且运算过程还会大量的占用CPU,影响终端的正常运行。
发明内容
本发明实施例的主要目的在于提供一种数据运算的加速方法、装置、终端及可读存储介质,可以解决现有技术中前馈神经网络的运算过程速度较慢,且会影响终端正常运行的技术问题。
为实现上述目的,本发明实施例第一方面提供一种数据运算的加速方法,该方法包括:
读取各存储单元内待运算的数据组,单个所述存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
将读取的所述数据组缓存至GPU(Graphics Processing Unit,图形处理器);
调用所述GPU对所述数据组进行并行运算。
为实现上述目的,本发明实施例第二方面提供一种数据运算的加速装置,该装置包括:
读取模块,用于读取各存储单元内待运算的数据组,单个所述存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
存储模块,用于将读取的所述数据组缓存至GPU;
运算模块,用于调用所述GPU对所述数据组进行并行运算。
为实现上述目的,本发明实施例第三方面提供一种终端,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,该计算机程序为数据运算的加速程序,所述处理器执行所述计算机程序时,实现本发明实施例第一方面提供的数据运算的加速方法中的各个步骤。
为实现上述目的,本发明实施例第四方面提供一种存储介质,其上存储有计算机程序,该计算机程序为数据运算的加速程序,所述计算机程序被处理器执行时,实现本发明实施例第一方面提供的数据运算的加速方法中的各个步骤。
本发明实施例所提供的数据运算的加速方法,包括:读取各存储单元内待运算的数据组,将读取的数据组缓存至GPU,调用该GPU对上述数据组进行并行运算,其中,上述单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组。相较于现有技术而言,由于本发明实施例在运算过程中,能够同时读取待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的各个数据元素,从而减少了运算过程中数据读取的次数,同时由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此本发明实施例可以有效的提升前馈神经网络的运算速度,另外由于本发明实施例将运算过程从CPU转移到了GPU上,因此可以降低CPU的占用率,保障终端的正常运行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例中前馈神经网络的结构示意图;
图1b为本发明实施例中数据运算的加速方法的系统架构示意图;
图2a为本发明实施例中数据运算的加速方法的应用场景示意图;
图2b为本发明实施例中数据运算的加速方法在视频聊天中的应用场景示意图;
图3为本发明实施例中数据运算的加速方法的步骤流程示意图;
图4为本发明实施例中数据运算的加速方法的另一步骤流程示意图;
图5为本发明实施例中数据元素的存储方式示意图;
图6为本发明实施例中数据运算的加速装置的程序模块示意图;
图7为本发明实施例中数据运算的加速装置的另一程序模块示意图;
图8为本发明实施例中终端80的结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有技术中,受CPU本身的结构特点,基于CPU来实现对前馈神经网络各个层的运算时,存在运算速度较慢,且CPU占有率较高的技术问题。
为了解决上述问题,本发明实施例提供了一种数据运算的加速方法,该方法在前馈神经网络的运算过程中,能够同时读取待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的各个数据元素,从而减少了运算过程中数据读取的次数,同时由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此可以有效的提升前馈神经网络的运算速度,另外通过将运算过程从CPU转移到了GPU上,还可以降低CPU的占用率,保障终端的正常运行。
其中,前馈神经网络是一种较简单的神经网络,各神经元分层排列,其中第一层称为输入层,最后一层为输出层.中间为隐含层,简称隐层,隐层可以是一层,也可以是多层。为了更好的理解本发明,请参照图1a、图1a为本发明实施例中前馈神经网络的结构示意图。其中,每个神经元只与前一层的神经元相连,各神经元从输入层开始,接收前一层的输入,并输出给下一层.各层间没有反馈。
常见的前馈神经网络包括感知器网络、BP(Back Propagation,反向传播)网络、RBF(Radial Basis Function,径向基函数)网络。其中,感知器网络是最简单的前馈神经网络,它主要用于模式分类,也可用在基于模式分类的学习控制和多模态控制中,其可分为单层感知器网络和多层感知器网络;BP网络是指连接权调整采用了反向传播学习算法的前馈网络,与感知器网络不同之处在于,BP网络的神经元变换函数采用了S形函数(Sigmoid函数),因此输出量是0~1之间的连续量,可实现从输入到输出的任意的非线性映射;RBF网络是指隐含层神经元由RBF神经元组成的前馈网络,RBF神经元是指神经元的变换函数为RBF(Radial Basis Function,径向基函数)的神经元,典型的RBF网络由三层组成:一个输入层,一个或多个由RBF神经元组成的RBF层(隐含层),一个由线性神经元组成的输出层。
鉴于GPU是针对向量计算进行了优化的高度并行的数据流处理器,有着CPU无法比拟的强大浮点运算能力,适合于算法密集、高度并行、控制简单、分多个阶段执行的运算过程。其工作原理是通过纹理或全局存储器读入数据,然后触发GPU产生大量片段,每个片段都可以被并行处理,结果另保存于输出纹理中,因此,本发明实施例中,可以将上述前馈神经网络各个层中的运算转移到GPU,从而达到提高运算速度的目的。
本发明实施例中,需要利用OpenCL调用GPU来完成前馈神经网络的运算过程,具体的,本实施例提供一个用于实现前馈神经网络运算过程的SDK(Software DevelopmentKit,软件开发工具包),该SDK由一个作为动态库的so文件以及一系列执行计算的OpenCL(Open Computing Language,开放运算语言)文件组成。参照图1b,图1b为本发明实施例中数据运算的加速方法的系统架构示意图,本发明实施例中,上述SDK由三层级组成,第一层级为Wrapper层级,负责为终端提供对外的接口。第二层级是控制层级,它包含三个模块:Net模块、Layers模块和Extractor模块,其中,Net模块用于加载运算所需要的模型和模型对应的参数;Layers模块则用于根据模型和参数创建运算所需的各个layer(层),并且建立各layer之间的关系;Extractor模块则用于在运算时,根据输入数据,利用各个layer之间的关系控制运算过程,从而得到输出数据。第三层级是各个layer的实现工具,具体有三种实现工具:第一种是通过C++实现,速度较慢,但适应性较强;第二种是通过NONE(ARM架构处理器扩展结构)实现;第三种是通过OpenCL实现。
其中,NONE是基于一种SIMD(Single Instruction Multiple Data,单指令多数据流)体系的扩展结构,可以实现内存的访问、在NEON寄存器和传统寄存器之间的数据拷贝、数据类型的转化及数据的处理等功能;OpenCL是一种面向异构系统通用目的并行编程的开放式、免费标准,适用于GPU等并行处理器。
本发明实施例可以应用于视频、音频及图像处理领域,例如可以应用于手势识别。其中,手势识别是人机交互的一种重要手段,也是人机交互、虚拟现实中的重要组成部分,利用前馈神经网络算法进行手势识别时,对采集到的彩色图像进行基于肤色的提取后,从复杂背景的彩色图像中划分出手部图像,然后输入前馈神经网络进行识别。在开始识别时,将手部图像按照像素值用数字矩阵的形式表示,每幅手部图像可由一个或多个数字矩阵表示,在识别过程中,读取前馈神经网络的各个数据通道中的矩阵数据,将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元,然后读取各存储单元内待运算的数据组,将读取的数据组缓存至图形处理器,并调用图形处理器对上述数据组进行并行运算,根据运算结果即可识别出手势变化。而在识别出手势变化之后,终端即可根据识别出的手势执行相关的指令。参照图2a,图2a为本发明实施例中数据运算的加速方法的应用场景示意图,图2a中,终端通过前馈神经网络识别出用户的手势之后,即可根据用户的手势添加相应的特效,如在拍照过程中,终端可以根据用户的手势,在指尖添加“☆”,使图像显得更加有趣、生动。
另外,本发明实施例还可以用在视频聊天或者网络直播中,终端可以根据用户的手势,生成部分特效,使视频聊天过程或者网络直播过程显得更加有趣、生动。为了更好的理解本发明,请参照图2b,图2b为本发明实施例中数据运算的加速方法在视频聊天中的应用场景示意图。在视频聊天或者网络直播中,当终端识别到用户“竖立大拇指”的手势时,则可以在显示界面中为对方自动“点赞”或者显示预设的图案。
基于上述架构,参照图3,图3为本发明实施例中数据运算的加速方法的步骤流程示意图,本发明实施例中,上述数据运算的加速方法包括:
步骤301、读取各存储单元内待运算的数据组,其中,单个存储单元中已存待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组。
本发明实施例中,前馈神经网络中的待运算的数据可以用数组表示,该数组中的每个元素都为具有相同宽和高的矩阵,上述数组的长度则称为通道数。目前现有的数据存储格式是按通道存储的,即每个通道存储一个矩阵,且矩阵内的数据都存储在一起,等一个通道存储完后再存储下一个通道。这种排列在做卷积计算时,会造成跳跃读取,影响数据的读取速度。本发明实施例中,基于现有技术中存在的缺点,将各个矩阵数据中位于相同位置的数据元素构成的数据组存储在同一个存储单元,在运算过程中,直接读取存储单元内存储的数据组,而不是分别读取各个矩阵数据中的数据元素,从而减少了运算过程中数据读取的次数。
步骤302、将读取的数据组缓存至GPU。
本发明实施例中,在每执行完一次读取操作之后,便将读取到的数据组一次性缓存至GPU内。
步骤303、调用GPU对上述数据组进行并行运算。
本发明实施例中,在将各存储单元内的数据组全部缓存至GPU内之后,即可调用GPU对缓存至GPU内的数据组进行并行运算,得到输出数据。
本发明实施例所提供的数据运算的加速方法,包括:读取各存储单元内待运算的数据组,将读取的数据组缓存至GPU,调用该GPU对上述数据组进行并行运算,其中,上述单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组。相较于现有技术而言,由于本发明实施例在运算过程中,能够同时读取待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的各个数据元素,从而减少了运算过程中数据读取的次数,同时由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此本发明实施例可以有效的提升前馈神经网络的运算速度,另外由于本发明实施例将运算过程从CPU转移到了GPU上,因此可以降低CPU的占用率,保障终端的正常运行。
进一步地,基于上述实施例,参照图4,图4为本发明实施例中数据运算的加速方法的另一步骤流程示意图,本发明实施例中,上述数据运算的加速方法包括以下步骤:
步骤401、读取前馈神经网络的各个数据通道中的矩阵数据;
本发明实施例中,首先需要终端的型号加载OpenCL库,并初始化OpenCL库的运行环境,然后再读取前馈神经网络的各个数据通道中的矩阵数据,该矩阵数据即为前馈神经网络中待运算的数据。
步骤402、将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元;
为了更好的理解本发明实施例,参照图5,图5为本发明实施例中数据元素的存储方式示意图,本发明实施例中,假设前馈神经网络包括两个4×4的矩阵,第一个矩阵内的数据元素为数字1至16,第二个矩阵内的数据元素为字母a至p,则可以将数字1和字母a作为一个数据组存储在同一个存储单元内、将数字2和字母b作为一个数据组存储在同一个存储单元内、……、将数字16和字母p作为一个数据组存储在同一个存储单元内。
步骤403、读取各存储单元内待运算的数据组,单个所述存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
步骤404、将读取的所述数据组缓存至GPU;
步骤405、调用所述GPU对所述数据组进行并行运算。
其中,步骤403至步骤405描述的内容与上述实施例中的步骤301至步骤303描述的内容一致,在此不再赘述。
本发明实施例所提供的数据运算的加速方法,包括:读取前馈神经网络的各个数据通道中的矩阵数据,将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元。相较于现有技术而言,由于本发明实施例在运算过程中,能够同时读取前馈神经网络的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的数据元素,从而减少了运算过程中数据读取的次数,因此有助于提升前馈神经网络的运算速度。
进一步地,基于上述实施例,本发明实施例中,上述步骤301中读取各存储单元内待运算的数据组,具体包括以下步骤:
步骤一、在执行读取操作时,从所述存储阵列中选择连续的N个存储单元,N为正整数;
步骤二、读取已选择的N个存储单元内存储的数据组。
本发明实施例中,在执行读取操作时,可以从存储阵列中选择连续的N(N为正整数)个存储单元,然后读取已选择的N个存储单元内存储的数据组。其中,N的取值包括1、2、4、8、16。例如可以选择存储阵列中位于同一行内连续的4个存储单元,并同时读取这4个存储单元内存储的数据组。
具体的,在从存储阵列中选择连续的N个存储单元的步骤之前还包括以下步骤:
步骤a、确定所述存储阵列的各行存储单元中待选择的存储单元的数量;
步骤b、当所述存储阵列的各行存储单元中待选择的存储单元的数量不为N的倍数时,在各行存储单元的尾部添加若干数量的空白存储单元,使所述存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数。
本发明实施例中,在从存储阵列中选择连续的N个存储单元之前,先确定存储阵列的各行存储单元中待选择的存储单元的数量是否为N的倍数,如果是,则继续执行从存储阵列中选择连续的N个存储单元的步骤;如果不是,则在各行存储单元的尾部添加若干数量的空白存储单元,使存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数,从而保证每一次读取操作,都能读取N个存储单元。例如,假设N=4,上述存储阵列的各行存储单元中待选择的存储单元的数量为6个,则在各行存储单元的尾部添加2个空白存储单元。
其中,上述空白存储单元可以理解为未存储任何数据的存储单元,或者存储的数据元素全为“0”的数据单元。
本发明实施例所提供的数据运算的加速方法,在执行读取操作时,从存储阵列中选择连续的N个存储单元,然后读取已选择的N个存储单元内存储的数据组。相较于现有技术而言,不仅可以进一步减少数据读取与缓存的次数,还可以利用OpenCL的向量化优势,提升数据运算速度。
进一步地,基于上述实施例,本发明实施例中,上述步骤303中调用GPU对数据组进行并行运算,具体包括以下步骤:
步骤一、加载预置的OpenCL库;
步骤二、利用OpenCL库调用预置的核函数,并基于调用的核函数对缓存至GPU的各个数据组进行并行运算。
本发明实施例中,在将各存储单元内前馈神经网络的数据组缓存至GPU后,即可加载预置的OpenCL库,利用OpenCL调用预置的核函数,设置核函数的函数参数,并创建工作空间,然后触发OpenCL执行命令,即可对缓存至GPU的各个数据组进行并行运算,得到计算结果。
其中,预先针对前馈神经网络每一个的layer(层),设置其对应的核函数,然后利用OpenCL调度各layer对应的核函数,对缓存至GPU的各个数据组进行并行运算,上述核函数的函数参数可以通过训练典型的前馈神经网络模型来得到。
为了更好的理解本发明实施例,现以Scale操作为例,阐述本发明的并行运算原理。Scale是前馈神经网络中比较常见的一种layer(层),它进行的运算操作是对输入数据作线性变换,例如给定一个宽为W,高为H的矩阵lij作为输入数据,给定缩放因子a和平移量b,通过如下公式计算出输出元素Oij:
Oij=alij+b
由于在现有技术中,都是利用CPU串行地遍历矩阵lij中的各个元素,然后对每个元素进行线性变换。而OpenCL则不同,计算时,先创建一个工作空间,工作空间内有W×H个工作项,每个工作项计算一个输出元素,并且这些工作项是并行调度的,从而极大的提升了计算的并行度,因此可以有效的提高运算速度。
本发明实施例所提供的数据运算的加速方法,在调用GPU对数据组进行并行运算时,加载预置的OpenCL库,然后利用OpenCL库调用预置的核函数,并基于调用的核函数对缓存至GPU的各个数据组进行并行运算,由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此本发明实施例可以有效的提升前馈神经网络的运算速度,并且由于本发明实施例将前馈神经网络的运算过程从CPU转移到了GPU上,因此还可以降低CPU的占用率,保障终端的正常运行。
进一步地,基于上述实施例,本发明实施例中,在利用核函数对缓存至GPU的各个数据组进行并行运算之后,还包括以下步骤:
步骤一、读取GPU中各个数据组运算后的输出数据;
步骤二、转换读取到的输出数据的格式,使读取到的输出数据的格式与前馈神经网络中的各个矩阵数据的格式相同。
本发明实施例中,在对GPU的各个数据组进行并行运算之后,还需要将运算后的输出数据的格式还原为输入数据的格式,从而确保终端能够识别输出数据,进而执行相应的操作。
本发明实施例所提供的数据运算的加速方法,利用核函数对缓存至GPU的各个数据组进行并行运算之后,读取GPU中各个数据组运算后的输出数据,然后转换读取的输出数据的格式,使读取的输出数据的格式与前馈神经网络中的各个矩阵数据的格式相同,从而可以确保终端能够识别输出数据,进而执行相应的操作。
进一步的,本发发明实施例还提供了一种数据运算的加速装置,参照图6,图6为本发明实施例中数据运算的加速装置的程序模块示意图,本发明实施例中,上述数据运算的加速装置包括:
读取模块601,用于读取各存储单元内待运算的数据组,单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
存储模块602,用于将读取的数据组缓存至GPU;
运算模块603,用于调用GPU对数据组进行并行运算。
本发明实施例所提供的数据运算的加速装置,包括:读取模块,用于读取各存储单元内待运算的数据组;存储模块,用于将读取的数据组缓存至GPU;运算模块,用于调用GPU对上述数据组进行并行运算,其中,上述单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组。相较于现有技术而言,由于本发明实施例在运算过程中,能够同时读取待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的数据元素,从而减少了运算过程中数据读取的次数,同时由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此本发明实施例可以有效的提升前馈神经网络的运算速度,另外由于本发明实施例将前馈神经网络的运算过程从CPU转移到了GPU上,因此可以降低CPU的占用率,保障终端的正常运行。
进一步地,基于上述实施例,参照图7,图7为本发明实施例中数据运算的加速装置的另一程序模块示意图,本发明实施例中,上述数据运算的加速装置包括:
初始数据读取模块701,用于读取前馈神经网络的各个数据通道中的矩阵数据。
排列存储模块702,用于将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元。
读取模块601,用于读取各存储单元内待运算的数据组,单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
存储模块602,用于将读取的数据组缓存至GPU;
运算模块603,用于调用GPU对数据组进行并行运算。
本发明实施例所提供的数据运算的加速装置,包括:初始数据读取模块,用于读取待运算的各个数据通道中的矩阵数据;排列存储模块,用于将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元。相较于现有技术而言,由于本发明实施例在运算过程中,能够同时读取前馈神经网络的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的数据元素,从而减少了运算过程中数据读取的次数,因此有助于提升前馈神经网络的运算速度。
进一步地,基于上述实施例,本发明实施例中,上述读取模块601具体包括:
选择模块,用于在执行读取操作时,从所述存储阵列中选择连续的N个存储单元,N为正整数。
读取子模块,用于读取已选择的N个存储单元内存储的数据组。
具体的,上述数据运算的加速装置还包括:
确定模块,用于在从存储阵列中选择连续的N个存储单元之前,确定存储阵列的各行存储单元中待选择的存储单元的数量;
添加模块,用于当存储阵列的各行存储单元中待选择的存储单元的数量不为N的倍数时,在各行存储单元的尾部添加若干数量的空白存储单元,使存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数。
本发明实施例所提供的数据运算的加速装置,在执行读取操作时,从存储阵列中选择连续的N个存储单元,然后读取已选择的N个存储单元内存储的数据组。相较于现有技术而言,不仅可以进一步减少数据读取的次数,还可以利用OpenCL的向量化优势,提升数据运算速度。
进一步地,基于上述实施例,本发明实施例中,上述运算模块603包括:
加载模块,用于加载预置的OpenCL库;
运算执行模块,用于利用OpenCL库调用预置的核函数,并基于调用的核函数对缓存至GPU的各个数据组进行并行运算。
本发明实施例所提供的数据运算的加速装置,在调用GPU对数据组进行并行运算时,加载预置的OpenCL库,然后利用OpenCL库调用预置的核函数,并基于调用的核函数对缓存至GPU的各个数据组进行并行运算,由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此本发明实施例可以有效的提升前馈神经网络的运算速度,并且由于本发明实施例将前馈神经网络的运算过程从CPU转移到了GPU上,因此还可以降低CPU的占用率,保障终端的正常运行。
进一步地,基于上述实施例,本发明实施例中,数据运算的加速装置还包括:
输出数据读取模块,用于读取GPU中各个数据组运算后的输出数据;
转换模块,用于转换读取的输出数据的格式,使读取的输出数据的格式与前馈神经网络中的各个矩阵数据的格式相同。
本发明实施例所提供的数据运算的加速装置,利用核函数对缓存至GPU的各个数据组进行并行运算之后,读取GPU中各个数据组运算后的输出数据,然后转换读取的输出数据的格式,使读取的输出数据的格式与前馈神经网络中的各个矩阵数据的格式相同,从而可以确保终端能够识别输出数据,进而执行相应的操作。
可以理解的是,在本发明实施例中,上述数据运算的加速装置可以是一种终端,请参阅图8,图8为本发明实施例中终端80的结构示意图。该终端80包括处理器801、存储器802和收发器803,存储器802可以包括只读存储器和随机存取存储器,并向处理器801提供操作指令和数据。存储器802的一部分还可以包括非易失性随机存取存储器(NVRAM)。
在一些实施方式中,存储器802存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
在本发明实施例中,通过调用存储器802存储的操作指令(该操作指令可存储在操作系统中),执行以下过程:
读取各存储单元内待运算的数据组,其中,单个存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;将读取的所述数据组缓存至GPU;调用GPU对所述数据组进行并行运算。
与现有技术相比,由于本发明实施例在运算过程中,能够同时读取前馈神经网络的各个矩阵数据中,位于相同位置的数据元素构成的数据组,而不是分别读取各个矩阵数据中的数据元素,从而减少了运算过程中数据读取的次数,同时由于GPU具有极佳的并行计算能力,利用GPU对上述数据组进行并行运算能够有效缩短计算时间,因此本发明实施例可以有效的提升前馈神经网络的运算速度,另外由于本发明实施例将前馈神经网络的运算过程从CPU转移到了GPU上,因此可以降低CPU的占用率,保障终端的正常运行。
其中,处理器801控制终端80的操作,处理器801还可以称为CPU(CentralProcessing Unit,中央处理单元)。存储器802可以包括只读存储器和随机存取存储器,并向处理器801提供指令和数据。存储器802的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中终端80的各个组件通过总线系统804耦合在一起,其中总线系统804除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统804。
上述本发明实施例揭示的方法可以应用于处理器801中,或者由处理器801实现。处理器801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器802,处理器801读取存储器802中的信息,结合其硬件完成上述方法的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的一种数据运算的加速方法、装置、终端及存储介质的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种数据运算的加速方法,其特征在于,所述方法包括:
在预置存储阵列的各行存储单元的尾部添加空白存储单元,使所述存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数;
从所述存储阵列中待选择的连续的N个存储单元内读取待运算的数据组,其中,N为正整数,单个所述存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
将读取的所述数据组缓存至图形处理器;
调用所述图形处理器对所述数据组进行并行运算。
2.如权利要求1所述的方法,其特征在于,所述从所述存储阵列中待选择的连续的N个存储单元内读取待运算的数据组的步骤之前还包括:
读取前馈神经网络的各个数据通道中的矩阵数据;
将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元。
3.如权利要求2所述的方法,其特征在于,所述从所述存储阵列中待选择的连续的N个存储单元内读取待运算的数据组的步骤,包括:
在执行读取操作时,从所述存储阵列中选择连续的N个存储单元;
读取已选择的所述N个存储单元内存储的数据组。
4.如权利要求3所述的方法,其特征在于,所述在预置存储阵列的各行存储单元的尾部添加空白存储单元,使所述存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数的步骤,包括:
确定所述存储阵列的各行存储单元中待选择的存储单元的数量;
当所述存储阵列的各行存储单元中待选择的存储单元的数量不为N的倍数时,在各行存储单元的尾部添加若干数量的空白存储单元,使所述存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数。
5.如权利要求1至4任意一项所述的方法,其特征在于,所述调用所述图形处理器对所述数据组进行并行运算的步骤包括:
加载预置的开放运算语言库;
利用所述开放运算语言库调用预置的核函数,并基于所述核函数对缓存至图形处理器的各个数据组进行并行运算。
6.如权利要求5所述的方法,其特征在于,所述利用所述核函数对缓存至图形处理器的各个数据组进行并行运算的步骤之后还包括:
读取所述图形处理器中各个数据组运算后的输出数据;
转换读取到的输出数据的格式,使读取到的输出数据的格式与前馈神经网络中的各个矩阵数据的格式相同。
7.一种数据运算的加速装置,其特征在于,所述装置包括:
添加模块,用于在预置存储阵列的各行存储单元的尾部添加空白存储单元,使所述存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数;
读取模块,用于从所述存储阵列中待选择的连续的N个存储单元内读取待运算的数据组,其中,N为正整数,单个所述存储单元中已存储待运算的各个矩阵数据中,位于相同位置的数据元素构成的数据组;
存储模块,用于将读取的所述数据组缓存至图形处理器;
运算模块,用于调用所述图形处理器对所述数据组进行并行运算。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
初始数据读取模块,用于读取前馈神经网络的各个数据通道中的矩阵数据;
排列存储模块,用于将各个矩阵数据中位于相同位置的数据元素作为一个数据组存储在预置存储阵列中的同一存储单元。
9.如权利要求8所述的装置,其特征在于,所述读取模块包括:
选择模块,用于在执行读取操作时,从所述存储阵列中选择连续的N个存储单元;
读取子模块,用于读取已选择的N个存储单元内存储的数据组。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
确定模块,用于在从所述存储阵列中选择连续的N个存储单元之前,确定所述存储阵列的各行存储单元中待选择的存储单元的数量;
所述添加模块,还用于当所述存储阵列的各行存储单元中待选择的存储单元的数量不为N的倍数时,在各行存储单元的尾部添加若干数量的空白存储单元,使所述存储阵列的各行存储单元中待选择的存储单元的数量为N的倍数。
11.如权利要求7至10任意一项所述的装置,其特征在于,所述运算模块包括:
加载模块,用于加载预置的开放运算语言库;
运算执行模块,用于利用所述开放运算语言库调用预置的核函数,并基于所述核函数对缓存至图形处理器的各个数据组进行并行运算。
12.如权利要求11所述的装置,其特征在于,所述装置还包括:
输出数据读取模块,用于读取所述图形处理器中各个数据组运算后的输出数据;
转换模块,用于转换读取到的输出数据的格式,使读取到的输出数据的格式与前馈神经网络中的各个矩阵数据的格式相同。
13.一种终端,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,其特征在于,所述计算机程序为数据运算的加速程序,所述处理器执行所述计算机程序时,实现如权利要求1至6任意一项所述的数据运算的加速方法中的各个步骤。
14.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序为数据运算的加速程序,所述计算机程序被处理器执行时,实现如权利要求1至6任意一项所述的数据运算的加速方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500501.4A CN108681773B (zh) | 2018-05-23 | 2018-05-23 | 数据运算的加速方法、装置、终端及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500501.4A CN108681773B (zh) | 2018-05-23 | 2018-05-23 | 数据运算的加速方法、装置、终端及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108681773A CN108681773A (zh) | 2018-10-19 |
CN108681773B true CN108681773B (zh) | 2020-01-10 |
Family
ID=63808067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810500501.4A Active CN108681773B (zh) | 2018-05-23 | 2018-05-23 | 数据运算的加速方法、装置、终端及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108681773B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522108B (zh) * | 2018-10-30 | 2020-10-27 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度系统及方法 |
CN109697083B (zh) * | 2018-12-27 | 2021-07-06 | 深圳云天励飞技术有限公司 | 数据的定点化加速方法、装置、电子设备及存储介质 |
CN110457345B (zh) * | 2019-07-05 | 2023-11-03 | 平安证券股份有限公司 | 数据库读取方法、装置及计算机可读存储介质 |
CN110737472A (zh) * | 2019-09-19 | 2020-01-31 | 烟台市广智微芯智能科技有限责任公司 | 一种超限学习机的运算加速系统及方法 |
CN111199569A (zh) * | 2020-01-02 | 2020-05-26 | 北京字节跳动网络技术有限公司 | 数据处理的方法、装置、电子设备及计算机可读介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2621757A1 (fr) * | 1987-10-09 | 1989-04-14 | Thomson Csf | Reseau neuronal programmable a polymere ferroelectrique |
US5355528A (en) * | 1992-10-13 | 1994-10-11 | The Regents Of The University Of California | Reprogrammable CNN and supercomputer |
DE19741209C1 (de) * | 1997-09-18 | 1999-01-21 | Siemens Ag | Zellularer Automat als neuronales Netzwerk und dessen Verwendung |
CN106779057B (zh) * | 2016-11-11 | 2020-04-17 | 北京旷视科技有限公司 | 基于gpu的计算二值神经网络卷积的方法及装置 |
CN107153873B (zh) * | 2017-05-08 | 2018-06-01 | 中国科学院计算技术研究所 | 一种二值卷积神经网络处理器及其使用方法 |
CN107491811A (zh) * | 2017-09-01 | 2017-12-19 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和系统及神经网络处理器 |
CN107862378B (zh) * | 2017-12-06 | 2020-04-24 | 芯原微电子(上海)股份有限公司 | 基于多核的卷积神经网络加速方法及系统、存储介质及终端 |
-
2018
- 2018-05-23 CN CN201810500501.4A patent/CN108681773B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108681773A (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681773B (zh) | 数据运算的加速方法、装置、终端及可读存储介质 | |
US20210158484A1 (en) | Information processing method and terminal device | |
CN110050267B (zh) | 用于数据管理的系统和方法 | |
KR102258414B1 (ko) | 처리 장치 및 처리 방법 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
US11996105B2 (en) | Information processing method and terminal device | |
CN110678841A (zh) | 张量处理器指令集架构 | |
KR20160038741A (ko) | 저전력 계산 구조를 갖는 시스템 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN111338695B (zh) | 基于流水线技术的数据处理方法及相关产品 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN113240101B (zh) | 卷积神经网络软硬件协同加速的异构SoC实现方法 | |
CN110738317A (zh) | 基于fpga的可变形卷积网络运算方法、装置和系统 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN114600126A (zh) | 一种卷积运算电路和卷积运算方法 | |
WO2021188262A1 (en) | Processing in memory methods for convolutional operations | |
US20220207332A1 (en) | Scalable neural network accelerator architecture | |
US11307866B2 (en) | Data processing apparatus and method | |
CN111291884A (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 | |
WO2023231559A1 (zh) | 一种神经网络加速器、加速方法以及装置 | |
CN114997392B (zh) | 用于神经网络计算的架构以及架构方法 | |
CN112099737B (zh) | 存储数据的方法、装置、设备和存储介质 | |
Burian et al. | Fast image recognition based on n-tuple neural networks implemented in an FPGA | |
US20230362498A1 (en) | Electronic system configured for image processing and utilizing multiple binary neural networks | |
US20240232573A1 (en) | Neural network architecture for a systolic processor array and method of processing data using a neural network |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230713 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |