CN111338769B - 一种数据处理方法、装置及计算机可读存储介质 - Google Patents
一种数据处理方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111338769B CN111338769B CN202010086648.0A CN202010086648A CN111338769B CN 111338769 B CN111338769 B CN 111338769B CN 202010086648 A CN202010086648 A CN 202010086648A CN 111338769 B CN111338769 B CN 111338769B
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- dsp
- processing
- hardware
- 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
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
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- 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
Abstract
本发明实施例提供一种数据处理方法、装置及计算机可读存储介质,该方法应用于包括DSP和加速层的数据处理系统,加速层包括多个硬件,包括:通过DSP获取业务请求,业务请求携带有待处理数据和任务类型的标识,待处理数据为图像和/或视频;通过DSP根据标识确定算法模型;通过DSP将第一算法模型的输入数据划分为多个数据组,第一算法模型属于确定的算法模型,输入数据为待处理数据或待处理数据被处理后的数据;通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理,第一数据组和第二数据组属于多个数据组。本发明实施例,可以提高数据处理效率。
Description
技术领域
本发明涉及机器学习领域,具体涉及一种数据处理方法、装置及计算机可读存储介质。
背景技术
随着计算机技术的不断发展,需要处理的数据越来越多。因此,为了提高数据处理效率,业界引入了深度学习(deep learning)。深度学习是学习样本数据的内在规律和表示层次,以便可以使机器能够像人一样具有分析学习能力,能够处理数据。然而,随着深度学习中模型的结构越来越复杂,如果所有模型都通过软件来实现的话,模型处理数据的过程都是在数字信号处理器(digital signal processor,DSP)上进行,以致降低了数据处理效率。
发明内容
本发明实施例提供一种数据处理方法、装置及计算机可读存储介质,用于提高数据处理效率。
第一方面提供一种数据处理方法,所述方法应用于数据处理系统,所述数据处理系统包括数字信号处理器DSP和加速层,所述加速层包括多个硬件,所述硬件为深度学习中用于算子运算的专用芯片,包括:
通过所述DSP获取业务请求,所述业务请求携带有待处理数据和任务类型的标识,所述待处理数据为图像和/或视频;
通过所述DSP根据所述任务类型的标识确定算法模型;
通过所述DSP将第一算法模型的输入数据划分为多个数据组,所述第一算法模型属于确定的算法模型,所述输入数据为所述待处理数据或所述待处理数据被处理后的数据;
通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理,所述第一硬件为所述多个硬件中的一个硬件,所述第一数据组和所述第二数据组属于所述多个数据组。
由于算法模型处理数据的过程中不仅在DSP上进行,而且在硬件上进行,而硬件为研发人员根据需要自主研发的深度学习中用于算子运算的专用芯片,只用于处理某一个或多个算子的运算,可以提高这些算子的计算效率,从而可以提高数据处理效率。此外,由于实现了硬件和DSP的并行处理,因此,可以进一步提高数据处理效率。算子可以为激活算子、归一化算子、特征提取算子、防过拟合算子等。
作为一种可能的实现方式,所述通过所述DSP将第一算法模型的输入数据划分为多个数据组包括:
在第一算法模型的输入数据包括N个数据,所述N个数据分组处理不影响所述第一算法模型的输出结果,以及所述N大于M的情况下,通过所述DSP根据所述M对所述N个数据进行划分,得到多个数据组,所述N为大于1的整数,所述M为所述任务对应的缓存器当前能够处理的数据的数量。
在缓存器的空间不够,且分开处理不影响处理结果的情况下,可以对待处理数据进行分组处理,因此,不需要等待缓存器的空间足够之后再进行处理,可以保证任务快速处理,从而可以提高数据处理效率。
作为一种可能的实现方式,所述方法还包括:
通过所述DSP根据所述任务类型的标识为所述任务配置硬件链路HL;
所述任务对应的缓存器为所述HL对应的缓存器。
作为一种可能的实现方式,所述方法还包括:
通过所述DSP为所述HL配置信息,所述信息包括所述HL包括的队列的描述符,所述描述符用于描述硬件的工作方式;
通过所述DSP确定所述第一算法模型包括的加速任务,所述加速任务携带有计算类型和计算数据,所述计算数据为所述第一数据组或所述第一数据组被处理后的数据;
通过所述加速层从所述信息包括的描述符中选取所述计算类型对应的描述符;
所述通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理包括:
通过选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理。
为任务的HL配置信息,以便可以根据该信息中的描述符快速准确地确定执行加速任务的硬件,可以进一步提高数据处理效率。
作为一种可能的实现方式,所述通过选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理包括:
通过所述加速层获取选取的描述符对应的第一硬件的驱动函数;
通过所述驱动函数驱动所述选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理。
为每个硬件配置有驱动函数,以便可以根据驱动函数驱动硬件工作。
作为一种可能的实现方式,所述业务请求还携带有句柄的标识,所述方法还包括:
通过所述DSP确定所述第一算法模型对应的消息回调函数表,所述消息回调函数表包括一个或多个消息回调函数;
通过所述DSP根据所述第一算法模型和所述句柄的标识,确定所述任务的句柄;
所述通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理包括:
根据所述第一算法模型、所述消息回调函数表和所述句柄,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
由于算法模型根据消息回调函数设计,算法模型的交叉复用可以通过回调函数来实现,而不是通过状态机来实现,由于一个回调函数对应一个消息,针对不同应用场景只需要将不同的消息进行组合即可,因此,可以通过有限的消息组合达到对不同场景的覆盖。此外,在后续对算法模型进行扩展时,只需要增加消息即可,算法模型的可扩展性较强。因此,可以提高算法模型的适用性。此外,由于可以通过消息的标识调用对应的消息回调函数进行返回,可以减少处理步骤,因此,可以进一步提高数据处理效率。
作为一种可能的实现方式,所述根据所述第一算法模型、所述消息回调函数表和所述句柄,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理包括:
通过所述DSP根据所述第一算法模型确定处理流程;
通过所述DSP根据所述消息回调函数表确定所述处理流程中使用的消息的标识;
在所述处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据所述处理流程和所述使用的消息的标识对应的消息回调函数,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
第二方面提供一种数据处理装置,所述装置设置在数据处理系统上,所述数据处理系统包括数字信号处理器DSP和加速层,所述加速层包括多个硬件,所述硬件为深度学习中用于算子运算的专用芯片,包括:
获取单元,用于通过所述DSP获取业务请求,所述业务请求携带有待处理数据和任务类型的标识,所述待处理数据为图像和/或视频;
确定单元,用于通过所述DSP根据所述任务类型的标识确定算法模型;
划分单元,用于通过所述DSP将第一算法模型的输入数据划分为多个数据组,所述第一算法模型属于确定的算法模型,所述输入数据为所述待处理数据或所述待处理数据被处理后的数据;
处理单元,用于通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理,所述第一硬件为所述多个硬件中的一个硬件,所述第一数据组和所述第二数据组属于所述多个数据组。
作为一种可能的实现方式,所述划分单元,具体用于在第一算法模型的输入数据包括N个数据,所述N个数据分组处理不影响所述第一算法模型的输出结果,以及所述N大于M的情况下,通过所述DSP根据所述M对所述N个数据进行划分,得到多个数据组,所述N为大于1的整数,所述M为所述任务对应的缓存器当前能够处理的数据的数量。
作为一种可能的实现方式,所述装置还包括:
配置单元,用于通过所述DSP根据所述任务类型的标识为所述任务配置硬件链路HL;
所述任务对应的缓存器为所述HL对应的缓存器。
作为一种可能的实现方式,所述配置单元,还用于通过所述DSP为所述HL配置信息,所述信息包括所述HL包括的队列的描述符,所述描述符用于描述硬件的工作方式;
所述确定单元,还用于通过所述DSP确定所述第一算法模型包括的加速任务,所述加速任务携带有计算类型和计算数据,所述计算数据为所述第一数据组或所述第一数据组被处理后的数据;
所述装置还包括:
选取单元,用于通过所述加速层从所述信息包括的描述符中选取所述计算类型对应的描述符;
所述处理单元,具体用于通过选取的描述符对应第一的硬件根据所述选取的描述符对所述计算数据进行处理。
作为一种可能的实现方式,所述处理单元具体用于:
通过所述加速层获取选取的描述符对应的硬件的驱动函数;
通过所述驱动函数驱动所述选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理。
作为一种可能的实现方式,所述业务请求还携带有句柄的标识,所述确定单元,还用于通过所述DSP确定所述第一算法模型对应的消息回调函数表,所述消息回调函数表包括一个或多个消息回调函数;
所述确定单元,还用于通过所述DSP根据所述第一算法模型和所述句柄的标识,确定所述任务的句柄;
所述处理单元,具体用于根据所述第一算法模型、所述消息回调函数表和所述句柄,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
作为一种可能的实现方式,所述处理单元具体用于:
通过所述DSP根据所述第一算法模型确定处理流程;
通过所述DSP根据所述消息回调函数表确定所述处理流程中使用的消息的标识;
在所述处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据所述处理流程和所述使用的消息的标识对应的消息回调函数,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
第三方面提供一种数据处理装置,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令执行第一方面或第一方面的任一实施例提供的数据处理方法。
第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行第一方面或第一方面的任一实施例提供的数据处理方法。
第五方面提供一种应用程序,该应用程序用于在运行时执行第一方面或第一方面的任一实施例提供的数据处理方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种系统架构的示意图;
图2是本发明实施例提供的一种数据处理系统的结构示意图;
图3是本发明实施例提供的一种HL模型的示意图;
图4是本发明实施例提供的一种HL配置的示意图;
图5是本发明实施例提供的一种HL工作原理的示意图;
图6是本发明实施例提供的一种加速层的示意图;
图7是本发明实施例提供的一种两个DSP的硬件资源分配的示意图;
图8是本发明实施例提供的一种DSP1和DSP2批调度业务请求的示意图;
图9是本发明实施例提供的一种通用的业务算法模型的示意图;
图10是本发明实施例提供的一种通用的任务调度模型的示意图;
图11是本发明实施例提供的一种标记调度的示意图;
图12是本发明实施例提供的一种句柄调度的示意图;
图13是本发明实施例提供的一种多任务的HL配置的示意图;
图14是本发明实施例提供的一种算法模型执行的示意图;
图15是本发明实施例提供的一种数据处理方法的流程示意图;
图16是本发明实施例提供的一种使用MTCCN进行人脸检测的示意图;
图17是本发明实施例提供的一种使用MTCCN进行视频人脸抓拍的示意图;
图18是本发明实施例提供的一种数据处理装置的结构示意图;
图19是本发明实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据处理方法、装置及计算机可读存储介质,用于提高数据处理效率。以下分别进行详细说明。
为了更好地理解本发明实施例提供的一种数据处理方法、装置及计算机可读存储介质,下面先对本发明实施例使用的系统架构进行描述。请参阅图1,图1是本发明实施例提供的一种系统架构的示意图。如图1所示,该系统架构可以包括应用处理(applicationprocess,AP)系统101和数据处理系统102。
AP系统101,用于接收用户输入的消息,根据该消息向数据处理系统102发送业务请求,该业务请求携带有待处理数据。
数据处理系统102,用于接收来自AP系统101的业务请求,根据该业务请求对待处理数据进行处理,将处理结果发送给AP系统101。
AP系统101,还用于接收来自数据处理系统102的处理结果。
请参阅图2,图2是本发明实施例提供的一种数据处理系统的结构示意图。如图2所示,该数据处理系统可以包括中断模块、消息接收模块、共享任务池、至少两个DSP、至少两个DSP中每个DSP对应的任务池、加速层、DDR存储器和消息发送模块。加速层包括硬件加速模块和硬件驱动模块。
中断模块,用于接收来自AP系统的业务请求,向消息接收模块发送该业务请求和携带该业务请求的标识的中断。该业务请求携带有待处理数据、任务类型的标识以及用于指示该业务请求的类型的指示信息。待处理数据可以为图像或视频。
消息接收模块,用于接收来自中断模块的该业务请求和中断,根据指示信息确定该业务请求的类型;在该指示信息指示该业务请求为共享业务请求的情况下,向共享任务池发送该业务请求,向至少两个DSP分别发送该中断;在该指示信息指示该业务请求为DSP1处理的业务请求的情况下,向DSP1对应的任务池发送该业务请求,向DSP1发送该中断。DSP1为至少两个DSP中的任一DSP。
共享任务池,用于接收来自消息接收模块的共享业务请求,存储接收的业务请求。
DSP1对应的任务池,用于接收来自消息接收模块的DSP1处理的业务请求,存储接收的业务请求。共享任务池以及至少两个DSP中每个DSP对应的任务池遵循先进先出的原则。
DSP1,用于接收来自消息接收模块的中断,在DSP1处于空闲状态的情况下,从DSP1对应的任务池或共享任务池获取该业务请求,根据该业务请求生成任务,为该任务从配置的HL中选取一条HL,向加速层发送该任务的HL的配置信息,根据任务携带的任务类型的标识确定该任务要使用的算法模型和消息回调函数表,根据算法模型、消息回调函数表、待处理数据以及该任务携带的句柄的标识和消息的标识创建句柄,通过句柄控制算法模型包括的处理流程对待处理数据进行处理。在处理流程包括需要硬件处理的流程的情况下,向加速层发送加速任务。加速任务可以携带有头信息、计算数据和计算类型,计算数据为待处理数据中的部分数据或待处理数据处理后的数据。
该任务携带有头信息。头信息可以包括任务类型的标识、句柄(handle)的标识和消息的标识。任务类型的标识即业务请求携带的任务类型的标识。句柄的标识用于标识该任务,是根据可以并行处理的该任务类型的任务的数量以及业务请求到达任务池时任务池中已经存在的该任务类型的任务数量确定的。可以并行处理的该任务类型的任务的数量是预先配置的。例如,配置的可以并行处理的任务的数量为8,句柄的标识为0-7之间的值,该业务请求到达时任务池中有同一任务类型的业务请求的数量为6,则句柄的标识为6。消息的标识是初始化的值,所有消息的标识的初始化的值均相同。为该任务从配置的HL中选取一条HL时,可以先根据任务类型选取,在选取的HL为一条的情况下,可以将这条HL确定为这个任务的HL。在选取的HL为多条的情况下,可以从这多条HL中选取描述符空间的剩余空间最大的一条HL为这个任务的HL。之后为这个任务的HL中的每个队列分别生成描述符,以及为每个队列的描述符从该HL的描述符空间中分配空间,以便确定配置信息。在描述符空间剩余的空间或HL对应的缓存器的剩余空间不够该任务的情况下,可以将该任务重新放入DSP1对应的任务池。
共享任务池,还用于在该指示信息指示该业务请求为共享业务请求的情况下,在该业务请求被DSP1取走后,向DSP2发送该业务请求被处理的信息。DSP2为至少两个DSP中除DSP1之外的DSP。
DSP2,用于接收来自共享任务池的信息,根据该信息删除该中断。
加速层,用于接收到来自DSP的加速任务,根据配置信息、头信息和计算类型对计算数据进行处理。
为了更好地理解本发明实施例提供的一种数据处理方法、装置及计算机可读存储介质,下面先对本发明实施例的相关概念和信息进行描述。请参阅图3,图3是本发明实施例提供的一种HL模型的示意图。如图3所示,HL模型包括HL0、HL1和HL2三条HL。HL0为DSP→硬件加速器(hardware accelerator,HW)-A→HW-C→DSP,包括队列Q0和Q1。HL1为DSP→HW-A→DSP,包括队列Q2。HL2为DSP→HW-B→HW-C→DSP,包括队列Q3和Q4。
队列为连接两个硬件实体之间的关联(即硬连线)。例如,图3中的Q0为关联DSP和HW-A之间的队列。队列也称描述符表,用于描述HW的工作方式。一个队列对应一个或多个描述符,在一个队列配置有一个任务的情况下,一个队列对应一个描述符,在一个队列配置有多个任务的情况下,一个队列对应多个描述符。队列的描述符可以包括队列的数据结构、队列的输出缓存器(output buffer)的个数和地址、配置的最近输出缓存器的指针。队列的数据结构可以包括队列的描述符在描述符空间中的地址、大小、读写指针以及单次配置可能消耗的最大内存空间。两个硬件之间可以配置多个队列。例如,图3中的DSP与HW-A之间配置了Q0和Q2两个队列。队列的配置参数由DSP预先配置,该配置参数可以携带输入数据地址、输出数据地址以及相关的启动参数,如任务数、图像格式等。队列的描述符对应的任务对应于HW的工作方式。例如,图3中的Q0的描述符对应的任务定义HW-A的输入配置参数和输出配置参数。队列的数据结构采用循环缓冲器,可以一次为一个队列配置多个任务,DSP为队列配置描述符(write),HW从队列的描述符中读取队列的配置参数,根据配置参数使对应的硬件工作。
缓存器管理(buffer manager)用于控制硬件之间的任务,是用于控制任务的进行或停止的自主研发芯片,配置在加速层中。缓存器管理为每个缓存器配置一个阈值,用于表征缓存器能够容纳任务的最大数量。缓存器类似于一个容器,当缓存器的阈值大于或等于HL包括的任务数量时,缓存器可以存储HL包括的所有数据。当缓存器的阈值小于HL包括的任务数量时,缓存器先存储HL包括的任务中前阈值个任务,在前阈值个任务处理完成后,缓存器中存储的数据被DSP取走之后,缓存器继续存储HL包括的剩余任务。
HL是根据上层算法(algorithm)业务组合的物理链路,描述了HL的业务处理能力。HL由一个或多个不同的队列串接HW,起点为DSP,终点也必须为DSP。HL通过配置HL上的队列的描述符来驱动硬件工作。请参阅图4,图4是本发明实施例提供的一种HL配置的示意图。如图4所示,DSP可以为HL0配置一个描述符空间,这个描述符空间分配给HL0中的不同队列。HL0中Q0包括四个任务。HL的描述符空间大小是预先配置的。HL中每个队列的描述符可以配置的最大空间也是预先配置的。rdPos为为HL0配置的描述符空间(区域)中已经被硬件读取的描述符的结尾,即HL0的描述符空间中当前读指针的位置。wrPos为为HL0配置的描述符空间中DSP已经配置的描述符的结尾,即为HL0中的队列Q0配置的描述符的起始地址,也即HL0的描述符空间中当前写指针的位置。endPos为为HL0配置的描述符空间的末尾,即HL0的描述符空间的结束地址。maxCfgSz为单次配置的一个或多个描述符可以占据的最大空间。wrapEn为当写指针超过endPos时,可以将wrapEn置真(true),同时将该次配置从HL0对应的描述符空间的首地址开始,即在HL0对应的描述符空间分配完成之后,可以重新从最开始进行分配。硬件接收到该标志后,也会从首地址开始读取描述符。HL中每个队列是独立配置的。在为一个任务配置一条HL之前,可以先判断这条HL是否有足够的描述符空间为这个任务配置,在有足够描述符空间的情况下,可以为这个任务配置这条HL,以及可以从这条HL的描述符空间中为这个任务的描述符分配空间。可以根据这条HL包括的队列支持的maxCfgSz,以及队列的读写指针位置,判断队列是否有足够的空间配置给这个任务,如果空间不够,那么不能配置这条HL给这个任务。例如,考虑到wrapEn的影响,图4中HL0的描述符空间中rdPos和wrPos之间的空间大于或等于2*maxCfgSz的情况下,才能确保队列Q0和队列Q1中的任务100%写入。在wrPos大于或等于rdPos,且wrPos与maxCfgSz的和小于endPos的情况下,即待配置的描述符的起始位置在硬件读取的描述符位置上,也即描述符空间的写指针在描述符空间的读指针前面,继续为HL中的队列的描述符进行配置。在wrPos小于rdPos,且wrPos与maxCfgSz的和小于rdPos的情况下,该种场景即对应着wrapEn为真的情形,配置后的描述符尽可能不影响到硬件正在读的描述符。可以判断为队列配置的最后一个任务是否需要wrapEn,在队列的wrPos超过HL的endPos的情况下,HL中这个队列的最后一个任务需要将wrapEn置真。
HL区分不同的DSP,不同DSP之间的HL是相互独立的。例如,DSP0只能调用DSP0自身管理的HL。对于同一个DSP管理的同一类型的多个HL,每次为任务配置HL时,优先选择HL中队列的剩余描述符的空间最大的HL。例如,DSP0管理2个某类型的HL,HL0中Q0的剩余空间为1.2KB,Q1的剩余空间为3KB,可见,HL0中Q0的容量(capacity)为1.2KB。HL1中的Q0的剩余空间为2.3KB,Q1的剩余空间为8KB,可见,HL1中Q0的容量为2.3KB。因此,可以选择HL1为任务的HL。
队列作为DSP与HW之间的交互缓冲,理论上越大越好,以便可以减少DSP与HW之间的依赖。在队列的描述符能够配置的空间较小的情况下,DSP需要将任务切分为多个子任务进行配置,且要及时响应中断取出缓存器中的结果。在队列的描述符占用DDR空间的情况下,队列可以足够大。在队列的描述符占用静态随机存取存储器(static random-accessmemory,SRAM)空间的情况下,一条HL中一个队列的描述符所占空间不能超过128KB,因此,需要考虑这条HL中多个队列之间的均衡性。例如,HL中Q0的描述符所占空间最多支持32个任务,则HL中Q1Q0的描述符所占空间也最多支持32个任务,不均衡会造成HL的SRAM浪费。HL的最后一级输出缓存器的个数要尽可能多,以便可以减少对DSP的依赖,缓存的时间要达到2ms以上。
为任务配置的HL中需要携带任务的头信息(header),主要用于HL的任务结果回调函数中,利用头信息来生成新的任务。例如,头信息可以表示如下:typedef struct{
u16 algldx:5;//0~31,业务请求携带的任务类型的标识;
u16 poolldx:2;//0:dsp 0,1:dsp 1,3:dsp0&dsp1;
u16 priority:2;//0:sched 1:high,2:low;
u16 handleldx:3;//任务类型(algldx)对应的handle的标识,一次最多可以同时处理8个handle;
u16 msgldx:4;//任务类型(algldx)对应的消息的标识,一次最多可以同时处理16个消息;
u16 bearinfo;//用户自定义信息(bear携带信息,任务中携带bear,应答消息上原封不动返回bear信息
}Msg_Header
可以通过为任务配置的HL中的头信息包括的algldx指明HL中该任务的处理结果再送给哪个algldx和handleldx,同时可以返回配置中携带的bearinfo。
一个HW可以包括硬件加速模块中的一个硬件以及硬件驱动模块中这个硬件对应的驱动函数。HW之间的缓存器一般为中间数据临时存储交互区,可以称为中间缓存器。例如,图3中的HL0中的Q0的数据输出地址为Q1的数据输入地址,Q0的输出缓存器为中间临时数据存储交互区。两个HW之间的任务可以为1对多,也可以多对1。由于一条HL可能支持多种类型的加速任务,中间缓存器的个数以及大小是变化的。队列的输出缓存器是半静态配置的,同一类型的HL中的多个队列的输出缓存器可以复用,如尺寸变化(resize)的HL可以在resize后定义3*128*128的输出缓存器,以满足绝大部分卷积神经网络(convolutionalneural networks,CNN)的处理。一条HL可以支持不同类型的任务,队列的输出缓存器的个数要根据多个任务中需求最大的任务来定义,对于HW之间的输出缓存器个数,输出缓存器个数不能太大,只需要保证HW之间能够正常工作即可,但HW与DSP之间的输出缓存器之间的个数要多一些,可以保证DSP处理更大的延迟。在不同HL的最后一个HW复用的情况下,DSP需要确定这个HW触发的DSP中断是那条HL触发的。在DSP中断延迟的情况下,还需要确定每条HL完成了多少个任务。
举例说明,假设有HL0:DSP→HW-A→HW-C→DSP和HL1:DSP→HW-B→HW-C→DSP,DSP接收到来自HW-C上报的中断之后,由于中断有可能是HL0的,也有可能是HL1的,因此,需要区别是HL0的还是HL1的。此处中断的目的是为了通知DSP HL执行完了,不同HL完成的时间是随机,因此,DSP处理中断时可能对应多个HL的中断。可以通过读取中断携带的HW的队列中任务的标识来识别不同HW的完成状态。假设描述符中任务的标识定义为hlOTaskCnt,表示当前HL的第几个输出任务,HW-C可以更新在不同队列上(即不同HW)完成的任务的标识,假设HL0在T1时刻配置了8个任务,配置前HL0的最新hlOTaskCnt为10,HL1在T2时刻配置了5个任务,配置前HL1的最新hlOTaskCnt为20。DSP在T3时刻收到来自HW-C的中断,读取HW-C寄存器中存储的HL0的hlOTaskCnt为15,那么表示HL0的最新hlOTaskCnt为15,表明HL0已经执行了5个任务,还有3个任务未执行。读取HW-C寄存器中存储的HL1的hlOTaskCnt为25,那么表示HL1的最新hlOTaskCnt为25,表明HL1已经全部执行完5个任务,中断为HL1产生的。
请参阅图5,图5是本发明实施例提供的一种HL工作原理的示意图。如图5所示,HL0中的Q0和Q1分别包括32个A类型的任务和40个B类型的任务,在Q0和Q1包括的任务执行之前hlOTaskCnt为10,由于每输入4个A类型的任务HW输出一个任务,32个A类型的任务对应8个输出任务,因此,在Q0包括的32个A类型的任务执行完之后,hlOTaskCnt为18。由于每输入8个B类型的任务HW输出一个任务,40个B类型的任务对应5个输出任务,因此,在Q1包括的40个B类型的任务执行完之后,hlOTaskCnt为23。
请参阅图6,图6是本发明实施例提供的一种加速层的示意图。如图6所示,硬件加速模块与硬件驱动模块之间存在连接接口,硬件加速模块可以通过该接口从硬件驱动模块获取硬件的驱动函数。硬件加速模块上还存在一个接口,用于与DSP进行交互。
请参阅图7,图7是本发明实施例提供的一种两个DSP的硬件资源分配的示意图。如图7所示,DSP1和DSP2控制的硬件资源的完全对等的,DSP1和DSP2均可以控制驱动函数1-驱动函数4,4个硬件,即硬件1-硬件4,平均分配给DSP1和DSP2,可以保证DSP1和DSP2的一致性。
为了提高调度效率,DSP可以根据支持的能力以及任务类型,从共享资源池取多个任务类型相同的业务请求并行调度。请参阅图8,图8是本发明实施例提供的一种DSP1和DSP2批(batch)调度业务请求的示意图。如图8所示,共享任务池包括任务类型为X和任务类型为Y的业务请求,DSP1可以从共享任务池取出3个任务类型为X的业务请求进行处理,DSP2可以从共享任务池取出2个任务类型为Y的业务请求进行处理。
请参阅图9,图9是本发明实施例提供的一种通用的业务算法模型的示意图。如图9所示,1、算法模型X接收来自AP系统的业务请求;2、算法模型X中的算法业务如果有部分需要硬件加速,则向加速层传递消息;3、加速层处理完毕之后上报中断,向算法模型X返回结果;4、算法模型X中如果还需要其它算法模型Y的配合才能完成,则将消息路由到算法模型Y;5、算法模型Y处理算法模型X发出的业务,完成后向算法模型X返回结果,可以借助加速层,也可以不借助加速层;6、算法模型X中的算法业务如果继续需要硬件加速,则向加速层传递消息;7、加速层处理完毕后上报中断,向算法模型X返回结果;8、算法模型X全部完成后,向AP系统上报最终结果。
请参阅图10,图10是本发明实施例提供的一种通用的任务调度模型的示意图。其中,图10与图9相对应。如图10所示,图9中的1包括:任务池接收来自AP系统的业务请求,任务池向算法模型X发送接收的业务请求。图9中的3包括:加速层处理完毕之后上报中断,向任务池发送结果,任务池向算法模型X发送接收的结果。图9中的4包括:算法模型X向任务池发送业务,任务池向算法模型Y发送接收的业务。图9中的5包括:算法模型Y向任务池发送结果,任务池向算法模型X发送接收的结果。图9中的7包括:加速层向任务池发送结果,任务池向算法模型X发送接收的结果。
请参阅图11,图11是本发明实施例提供的一种标记(tick)调度的示意图。如图11所示,DSP从对应的任务池获取到业务请求之后,根据业务请求生成任务,之后判断是否存在空闲的内存和描述符空间,如果存在,则为这个任务配置HL,由于内存资源不够和/或描述符空间的剩余空间不够导致失败的情况下,发起tick调度,将这个任务重新放入任务池,在下一次执行到该任务的情况下,重新进行配置,配置成功之后等待硬件完成。可见,在资源受限的情况下,虽然处理任务所需时间较长,但不会影响任务的处理。
DSP中封装有多个算法模型,这些算法模型的类型不同,每个算法模型对应一个消息回调函数表,可以表示算法的处理逻辑,每个算法模型可以支持多个句柄。例如,每个算法模型可以支持8个句柄,不同句柄用0-7之间的值进行区分。DSP根据从任务池中取出的业务请求生成任务之后,可以根据头信息确定使用的算法模型、消息回调函数和句柄。请参阅图12,图12是本发明实施例提供的一种句柄调度的示意图。如图12所示,任务类型的标识为1、消息的标识为0x02、句柄的标识为7,可以根据任务类型的标识1确定使用的算法模型为算法模型1,可以根据任务类型的标识1和消息的标识0x02确定使用的消息回调函数为算法模型1中的Alg_yyy_proc函数,可以根据任务类型的标识1和句柄的标识7确定使用的句柄为算法模型1中的第二个句柄。句柄对应于算法模型的数据结构,定义算法模型处理具体任务时的数据变量,一般由DSP根据任务类型动态申请存储区,之后把该任务以及中间结果存储在句柄中,任务处理完之后可以删除句柄,释放存储空间。由于采用多句柄管理,因此,一个算法模型可以同时处理多个同一任务类型的不同任务,从而可以进一步提高数据处理效率。同一任务类型的不同任务的待处理数据的类型可以相同,也可以不同。待处理数据的类型可以为视频,也可以为图像。
由于算法模型支持批处理,因此,算法模型的每个句柄可以支持多个任务,但受限于HL的配置能力,一般单个句柄可能需要多次HL配置。请参阅图13,图13是本发明实施例提供的一种多任务的HL配置的示意图。如图13所示,算法模型的句柄支持8个人脸的年龄和性别的计算,而HL仅支持最多4个同一类型人脸的计算,因此,句柄需要切分为4个组配置,即8*2/4=4,年龄和性别各占一个任务。考虑到每次配置不一定成功,不同组的配置可能分配到不同的HL上,处理的先后顺序随机,因此句柄需要缓存组的配置信息、收到的组结果以及如何把结果填入正确的位置等信息。
在配置数据处理系统时,可以在DSP中配置算法模型。不同DSP中配置的算法模型可以全部相同,也可以全部不同,还可以部分相同部分不同。DSP中的算法模型是经过训练和评估后的算法模型,可以直接用于数据处理。DSP中配置的算法模型的数量可以为一个,也可以为多个。
在配置数据处理系统时,也可以根据DSP中配置的算法模型配置硬件加速模块中的硬件,以及配置硬件驱动模块中与硬件加速模块中的硬件对应的驱动函数。硬件加速模块中的硬件为研发人员根据需要自主研发的专用芯片,如用于卷积运算的芯片、用于图像格式变换的芯片、用于图像尺寸变换的芯片、用于图像格式和尺寸变换的芯片等。
在配置数据处理系统时,还可以根据DSP中包括的算法模型、硬件加速模块中配置的硬件以及硬件驱动模块中配置的驱动函数,配置HL,为每条HL配置描述符空间,为每条HL中的队列的描述符配置可以分配的最大空间。还可以为不同类型的HL分别配置一对缓存器,即一个输入缓存器和输出缓存器。配置的HL的数量可以为一条,也可以为多条。同一类型的HL可以为一条,也可以为多条。一条HL可以配置给多个任务,一个任务的HL可以从多条HL中选择合适的HL进行配置。
请参阅图14,图14是本发明实施例提供的一种算法模型执行的示意图。如图14所示,AP系统中的每个任务类型需要哪些算法模型串接是明确的,算法模型[0]通过根据业务请求生成的任务中的参数,把任务传递给算法模型[1],依次再传递给算法模型[2],这样算法模型[1]和算法模型[2]就能知道结果该如何处理。任务的结果需要封装打包,提供算法模型[0]、算法模型[1]和算法模型[2]的结果,可以屏蔽算法模型之间的关联,这样算法模型[2]就不需要关注算法模型[0]和算法模型[1]的结果如何处理。详细步骤如下:1、算法模型[0]在收到任务时,创建句柄以及任务的结果数据空间;2、算法模型[0]处理完毕后,调用任务结果打包函数,把算法模型[0]的结果写入任务的结果数据空间;3、算法模型[0]触发算法模型[1],携带任务以及任务的结果指针,删除算法模型[0]的句柄;4、算法模型[1]创建句柄处理,处理完毕后,调用任务结果打包函数,把算法模型[1]的结果写入任务的结果数据空间;5、算法模型[1]触发算法模型[2],携带任务以及任务的结果指针,删除算法模型[1]的句柄;6、算法模型[2]创建句柄处理,处理完毕后,调用任务结果打包函数,把算法模型[2]的结果写入任务的结果数据结构;7、算法模型[2]判断任务执行完,把任务的结果发送给AP系统,并释放存储空间,删除算法模型[2]的句柄,最后释放任务的存储空间。
基于图1所示的系统架构,请参阅图15,图15是本发明实施例提供的一种数据处理方法的流程示意图。其中,该数据处理方法适用于数据处理系统,数据处理系统包括DSP和加速层,加速层包括多个硬件,硬件为深度学习中用于算子运算的专用芯片。如图15所示,该数据处理方法可以包括以下流程。
1501、通过DSP获取携带有待处理数据和任务类型的标识的业务请求。
在DSP空闲的情况下,DSP可以从对应的任务池获取业务请求,根据业务请求生成任务。该任务携带有待处理数据和头信息。待处理数据可以为图像,也可以为视频,还可以为图像和视频。头信息可以包括任务类型的标识、句柄的标识和消息的标识。
可选地,DSP获取到业务请求之后,可以根据任务类型的标识为任务配置HL,即从配置的HL中为该任务选取一条HL,具体方式可以参考上面的相关描述。之后为HL配置信息,该信息可以包括HL包括的队列的描述符,描述符用于描述硬件的工作方式,相关描述可以参考上面的相关描述。
1502、通过DSP根据任务类型的标识确定算法模型。
通过DSP获取到携带有待处理数据和任务类型的标识的业务请求之后,可以通过DSP根据任务类型的标识确定算法模型。算法模型的数量可以为一个,也可以为多个。任务类型的标识可以为一个,也可以为多个。在任务类型的标识为一个的情况下,该标识所标识的业务需要的算法模型为多个,且这多个算法模型的执行顺序是固定不变的,因此,不需要额外指示这些算法模型的执行顺序。例如,在任务类型为视频流人脸抓拍的情况下,需要人脸检测模型和人脸跟踪模型,先执行人脸检测模型,再执行人脸跟踪模型。在任务类型的标识为多个的情况下,这多个标识所标识的多个业务之间的执行方式可以有一种,也可以有多种。在这多个标识所标识的多个业务之间的执行方式有多种的情况下,任务还需要携带有用于指示标识所标识的业务之间的执行方式,即业务之间的执行顺序。
可选地,通过DSP根据任务类型的标识确定出算法模型之后,可以通过DSP确定算法模型对应的消息回调函数表。通过DSP根据算法模型和句柄的标识,确定任务的句柄。DSP可以从算法模型包括的句柄中,选取句柄的标识对应的句柄,在获取的句柄为空的情况下,创建任务的句柄,在获取的句柄不为空的情况下,将获取的句柄确定为任务的句柄。一个算法模型对应一个消息回调函数表。消息回调函数表包括一个或多个消息回调函数,以及这一个或多个消息回调函数对应的消息的标识。
1503、通过DSP将第一算法模型的输入数据划分为多个数据组。
通过DSP根据任务类型的标识确定出算法模型之后,可以通过DSP将第一算法模型的输入数据划分为多个数据组。第一算法模型属于确定的算法模型,输入数据为待处理数据或待处理数据被处理后的数据。待处理数据被处理后的数据可以是除第一算法模型之外的算法模型处理的。
具体地,DSP可以先判断第一算法模型的输入数据包括的数据的数量是否大于任务对应的缓存器当前能够处理的数据的数量M,在判断出包括的数据的数量小于或等于M的情况下,表明缓存器有足够的空间,不需要考虑对第一算法模型的输入数据进行划分,可以根据第一算法模型对输入数据进行处理。在判断出包括的数据的数量大于M的情况下,表明缓存器没有足够的空间,可以继续判断包括的数据的数量是否大于1,以及判断输入数据分组处理会不会影响第一算法模型的输出结果。在判断出包括的数据的数量大于1,且不影响第一算法模型的输出结果的情况下,可以根据M对输入数据进行划分得到多个数据组。在判断出包括的数据的数量等于1,或者影响第一算法模型的输出结果的情况下,将该任务重新放置对应的任务池。任务对应的缓存器为配置的HL对应的缓存器。
1504、通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。
通过DSP将第一算法模型的输入数据划分为多个数据组之后,可以通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。第一数据组和第二数据组属于多个数据组。第一硬件为多个硬件中的一个硬件。硬件为深度学习中用于算子运算的专用芯片。算子可以为激活算子、归一化算子、特征提取算子、防过拟合算子等。
具体地,可以先通过DSP确定第一算法模型包括的携带有计算类型和计算数据的加速任务,通过加速层从为HL配置的信息包括的描述符中选取计算类型对应的描述符,之后通过选取的描述符对应的硬件根据选取的描述符对计算数据进行处理。通过选取的描述符对应的第一硬件根据选取的描述符对计算数据进行处理时,可以通过加速层获取选取的描述符对应的第一硬件的驱动函数,通过驱动函数驱动选取的描述符对应的第一硬件根据选取的描述符对计算数据进行处理。计算数据为第一数据组或第一数据组被处理后的数据。通过DSP确定第一算法模型包括的携带有计算类型和计算数据的加速任务时,可以通过DSP先根据第一算法模型确定处理流程,在处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,可以生成加速任务。
可以根据第一算法模型、消息回调函数表和句柄,通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。具体地,可以通过DSP根据第一算法模型确定处理流程,通过DSP根据消息回调函数表确定处理流程中使用的消息的标识,在处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据处理流程和使用的消息的标识对应的消息回调函数,通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。
可以通过DSP根据第一算法模型确定处理流程,在处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,可以通过DSP生成加速任务,通过加速层从为HL配置的信息包括的描述符中选取计算类型对应的描述符,通过加速层获取选取的描述符对应的硬件的驱动函数,通过DSP根据消息回调函数表确定处理流程中使用的消息的标识,在处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据处理流程和使用的消息的标识对应的消息回调函数,通过驱动函数驱动第一硬件根据选取的描述符对计算数据进行处理。
在待处理数据处理完之后,可以发送处理结果,可以是发送给消息发送模块,也可以是发送给AP系统。处理结果可以是具体的结果,也可以结果的存储地址。将处理结果发送之后,可以删除任务的句柄。
请参阅图16,图16是本发明实施例提供的一种使用多任务级联卷积神经网络(multi-task cascaded convolutional networks,MTCCN)进行人脸检测的示意图。如图16所示,MTCCN包括生成网络(proposal network,P-Net)、优化网络(refine network,R-Net)和输出网络(output network,O-Net)。P-Net包括图像格式尺度变换+CNN以及后处理(postprocess),图像格式尺度变换+CNN通过加速层中的硬件处理,后处理通过DSP处理。R-Net包括图像格式尺度变换+CNN、SoftMax函数以及非极大值抑制(nonmaximumsuppression,NMS),SoftMax函数和NMS通过DSP处理。O-Net包括图像格式尺度变换+CNN、SoftMax函数以及NMS,SoftMax函数和NMS通过DSP处理。P-Net输出多个备选框,DSP可以将这些备选框进行分组,图中分成三组。DSP将三组任务同时下发给加速层,当第一组任务中断上报后,可以对第一组任务进行SoftMax函数处理,同时释放出的缓存器供第二组任务和第三组任务继续计算,这样就保证了软件(即DSP)和硬件同时进行,效率大大提高。O-Net也是类似的操作。
请参阅图17,图17是本发明实施例提供的一种使用MTCCN进行视频人脸抓拍的示意图。如图17所示,DSP从对应的任务池获取到视频人脸抓拍请求之后,可以生成视频人脸抓拍任务。之后将该任务路由到DSP中的MTCNN,MTCNN可以将任务下发给加速层的该任务的HL中的Pnet硬件,Pnet硬件调用其对应的驱动函数完成对应的计算(大部分是卷积)。Pnet硬件将计算出的结果返回给MTCNN。MTCNN如果检测到Pnet硬件没有完成所有层数,则配置下一层的任务传回给Pnet硬件,让硬件及时工作起来。同时MTCNN计算硬件传回的前一层的数据。这就达到了软件和硬件并行计算的效果,提高了效率。当MTCNN检测到Pnet硬件所有层都完成时,将Pnet硬件的最终的结果发送给Rnet硬件。类似于Pnet硬件,其也是软件和硬件同时进行的。Onet硬件类似于Rnet硬件处理;Onet硬件处理完成后,MTCNN将最终的人脸信息发送给AP系统。
基于图1所示的系统架构,请参阅图18,图18是本发明实施例提供的一种数据处理装置的结构示意图。其中,该数据处理装置设置在数据处理系统上,数据处理系统可以包括DSP和加速层,加速层可以包括多个硬件,硬件为深度学习中用于算子运算的专用芯片。如图18所示,该数据处理装置可以包括:
获取单元1801,用于通过DSP获取业务请求,业务请求携带有待处理数据和任务类型的标识,待处理数据为图像和/或视频;
确定单元1802,用于通过DSP根据任务类型的标识确定算法模型;
划分单元1803,用于通过DSP将第一算法模型的输入数据划分为多个数据组,第一算法模型属于确定的算法模型,输入数据为待处理数据或待处理数据被处理后的数据;
处理单元1804,用于通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理,第一硬件为多个硬件中的一个硬件,第一数据组和第二数据组属于多个数据组。
在一个实施例中,划分单元1803,具体用于在第一算法模型的输入数据包括N个数据,N个数据分组处理不影响第一算法模型的输出结果,以及N大于M的情况下,通过DSP根据M对N个数据进行划分,得到多个数据组,N为大于1的整数,M为所述任务对应的缓存器当前能够处理的数据的数量。
在一个实施例中,该数据处理装置还可以包括:
配置单元1805,用于通过DSP根据任务类型的标识为任务配置硬件链路HL;
任务对应的缓存器为HL对应的缓存器。
在一个实施例中,配置单元1805,还用于通过DSP为HL配置信息,该信息包括HL包括的队列的描述符,描述符用于描述硬件的工作方式;
确定单元1802,还用于通过DSP确定第一算法模型包括的加速任务,加速任务携带有计算类型和计算数据,计算数据为第一数据组或第一数据组被处理后的数据;
该数据处理装置还可以包括:
选取单元1806,用于通过加速层从信息包括的描述符中选取计算类型对应的描述符;
处理单元1804,具体用于通过选取的描述符对应的第一硬件根据选取的描述符对计算数据进行处理。
在一个实施例中,处理单元1804具体用于:
通过加速层获取选取的描述符对应的硬件的驱动函数;
通过驱动函数驱动选取的描述符对应的第一硬件根据选取的描述符对计算数据进行处理。
在一个实施例中,业务请求还携带有句柄的标识,确定单元1802,还用于通过DSP确定第一算法模型对应的消息回调函数表,消息回调函数表包括一个或多个消息回调函数;
确定单元1802,还用于通过DSP根据第一算法模型和句柄的标识,确定任务的句柄;
处理单元1804,具体用于根据第一算法模型、消息回调函数表和句柄,通过第一硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。
在一个实施例中,处理单元1804具体用于:
通过DSP根据所述第一算法模型确定处理流程;
通过DSP根据所述消息回调函数表确定所述处理流程中使用的消息的标识;
在所述处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据所述处理流程和所述使用的消息的标识对应的消息回调函数,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
有关上述获取单元1801、确定单元1802、划分单元1803、处理单元1804、配置单元1805和选取单元1806更详细的描述可以直接参考上述图15所示的方法实施例中的相关描述直接得到,这里不加赘述。
基于图1所示的系统架构,请参阅图19,图19是本发明实施例提供的另一种数据处理装置的结构示意图。如图19所示,该数据处理装置可以包括处理器1901、存储器1902、接口1903和总线1904。存储器1902可以是独立存在,也可以和处理器1901集成在一起。总线1904在上述组件之间传送信息。其中:
接口1903,用于获取业务请求,业务请求携带有待处理数据和任务类型的标识;
存储器1902中存储有一组程序代码,处理器1901用于调用存储器1902中存储的程序代码执行以下操作:
根据任务类型的标识确定算法模型;
将第一算法模型的输入数据划分为多个数据组,第一算法模型属于确定的算法模型,输入数据为待处理数据或待处理数据被处理后的数据;
通过硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理,第一数据组和第二数据组属于多个数据组,硬件为深度学习中用于算子运算的专用芯片。
在一个实施例中,处理器1901用于将第一算法模型的输入数据划分为多个数据组包括:
在第一算法模型的输入数据包括N个数据,N个数据分组处理不影响第一算法模型的输出结果,以及N大于M的情况下,根据M对N个数据进行划分,得到多个数据组,N为大于1的整数,M为所述任务对应的缓存器当前能够处理的数据的数量。
在一个实施例中,处理器1901还用于调用存储器1902中存储的程序代码执行以下操作:
根据任务类型的标识为任务配置HL;
任务对应的缓存器为HL对应的缓存器。
在一个实施例中,处理器1901还用于调用存储器1902中存储的程序代码执行以下操作:
为HL配置信息,该信息包括HL包括的队列的描述符,描述符用于描述硬件的工作方式;
确定第一算法模型包括的加速任务,加速任务携带有计算类型和计算数据,计算数据为第一数据组或第一数据组被处理后的数据;
从信息包括的描述符中选取计算类型对应的描述符;
处理器1901通过硬件对第一数据组或第一数据组被处理后的数据进行处理包括:
通过选取的描述符对应的硬件根据选取的描述符对计算数据进行处理。
在一个实施例中,处理器1901通过选取的描述符对应的硬件根据选取的描述符对计算数据进行处理包括:
获取选取的描述符对应的硬件的驱动函数;
通过驱动函数驱动选取的描述符对应的硬件根据选取的描述符对计算数据进行处理。
在一个实施例中,业务请求还携带有句柄的标识,处理器1901还用于调用存储器1902中存储的程序代码执行以下操作:
确定第一算法模型对应的消息回调函数表,消息回调函数表包括一个或多个消息回调函数;
根据第一算法模型和句柄的标识,确定任务的句柄;
处理器1901通过硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过数字处理器DSP对第二数据组或第二数据组被处理后的数据进行处理包括:
根据第一算法模型、消息回调函数表和所述句柄,通过硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。
在一个实施例中,处理器1901根据第一算法模型、消息回调函数表和句柄,通过硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理包括:
根据第一算法模型确定处理流程;
根据消息回调函数表确定处理流程中使用的消息的标识;
在处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据处理流程和使用的消息的标识对应的消息回调函数,通过硬件对第一数据组或第一数据组被处理后的数据进行处理,同时通过DSP对第二数据组或第二数据组被处理后的数据进行处理。
上述数据处理装置还可以用于执行前述方法实施例中执行的各种方法,不再赘述。
在一个实施例中提供了一种计算机可读存储介质,该计算机可读存储介质用于存储应用程序,应用程序用于在运行时执行图15的数据处理方法。
在一个实施例中提供了一种应用程序,该应用程序用于在运行时执行图15的数据处理方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法应用于数据处理系统,所述数据处理系统包括数字信号处理器DSP和加速层,所述加速层包括多个硬件,所述硬件为深度学习中用于算子运算的专用芯片,包括:
通过所述DSP获取业务请求,所述业务请求携带有待处理数据和任务类型的标识,所述待处理数据为图像和/或视频;
通过所述DSP根据所述任务类型的标识确定算法模型,其中若所述任务类型的标识为多个,且多个标识所标识的多个业务之间存在多种执行方式,所述任务携带用于指示所标识的业务之间的执行顺序;
通过所述DSP将第一算法模型的输入数据划分为多个数据组,所述第一算法模型属于确定的算法模型,所述输入数据为所述待处理数据或所述待处理数据被处理后的数据,所述待处理数据被处理后的数据为除所述第一算法模型之外的算法模型处理后的数据;
通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理,所述第一硬件为所述多个硬件中的一个硬件,所述第一数据组和所述第二数据组属于所述多个数据组。
2.根据权利要求1所述的方法,其特征在于,所述通过所述DSP将第一算法模型的输入数据划分为多个数据组包括:
在第一算法模型的输入数据包括N个数据,所述N个数据分组处理不影响所述第一算法模型的输出结果,以及所述N大于M的情况下,通过所述DSP根据所述M对所述N个数据进行划分,得到多个数据组,所述N为大于1的整数,所述M为所述任务对应的缓存器当前能够处理的数据的数量。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述DSP根据所述任务类型的标识为所述任务配置硬件链路HL;
所述任务对应的缓存器为所述HL对应的缓存器。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
通过所述DSP为所述HL配置信息,所述信息包括所述HL包括的队列的描述符,所述描述符用于描述硬件的工作方式;
通过所述DSP确定所述第一算法模型包括的加速任务,所述加速任务携带有计算类型和计算数据,所述计算数据为所述第一数据组或所述第一数据组被处理后的数据;
通过所述加速层从所述信息包括的描述符中选取所述计算类型对应的描述符;
所述通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理包括:
通过选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理。
5.根据权利要求4所述的方法,其特征在于,所述通过选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理包括:
通过所述加速层获取选取的描述符对应的第一硬件的驱动函数;
通过所述驱动函数驱动所述选取的描述符对应的第一硬件根据所述选取的描述符对所述计算数据进行处理。
6.根据权利要求1所述的方法,其特征在于,所述业务请求还携带有句柄的标识,所述方法还包括:
通过所述DSP确定所述第一算法模型对应的消息回调函数表,所述消息回调函数表包括一个或多个消息回调函数;
通过所述DSP根据所述第一算法模型和所述句柄的标识,确定所述任务的句柄;
所述通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理包括:
根据所述第一算法模型、所述消息回调函数表和所述句柄,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一算法模型、所述消息回调函数表和所述句柄,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理包括:
通过所述DSP根据所述第一算法模型确定处理流程;
通过所述DSP根据所述消息回调函数表确定所述处理流程中使用的消息的标识;
在所述处理流程包括需要硬件处理的流程和需要DSP处理的流程的情况下,根据所述处理流程和所述使用的消息的标识对应的消息回调函数,通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理。
8.一种数据处理装置,其特征在于,所述装置设置在数据处理系统上,所述数据处理系统包括数字信号处理器DSP和加速层,所述加速层包括多个硬件,所述硬件为深度学习中用于算子运算的专用芯片,包括:
获取单元,用于通过所述DSP获取业务请求,所述业务请求携带有待处理数据和任务类型的标识,所述待处理数据为图像和/或视频;
确定单元,用于通过所述DSP根据所述任务类型的标识确定算法模型,其中若所述任务类型的标识为多个,且多个标识所标识的多个业务之间存在多种执行方式,所述任务携带用于指示所标识的业务之间的执行顺序;
划分单元,用于通过所述DSP将第一算法模型的输入数据划分为多个数据组,所述第一算法模型属于确定的算法模型,所述输入数据为所述待处理数据或所述待处理数据被处理后的数据,所述待处理数据被处理后的数据为除所述第一算法模型之外的算法模型处理后的数据;
处理单元,用于通过第一硬件对第一数据组或所述第一数据组被处理后的数据进行处理,同时通过所述DSP对第二数据组或所述第二数据组被处理后的数据进行处理,所述第一硬件为所述多个硬件中的一个硬件,所述第一数据组和所述第二数据组属于所述多个数据组。
9.一种数据处理装置,其特征在于,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令执行如权利要求1-7任一项所述的数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的数据处理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911421316 | 2019-12-31 | ||
CN2019114213167 | 2019-12-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338769A CN111338769A (zh) | 2020-06-26 |
CN111338769B true CN111338769B (zh) | 2023-08-29 |
Family
ID=71181481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010086648.0A Active CN111338769B (zh) | 2019-12-31 | 2020-02-11 | 一种数据处理方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338769B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816687A (zh) * | 2021-01-22 | 2022-07-29 | 京东方科技集团股份有限公司 | 集群资源控制方法、装置及存储介质 |
CN113268328A (zh) * | 2021-05-26 | 2021-08-17 | 平安国际融资租赁有限公司 | 批处理方法、装置、计算机设备和存储介质 |
CN113406696B (zh) * | 2021-06-01 | 2023-04-07 | 成都高新减灾研究所 | 实现移动设备地震监测的方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375972A (zh) * | 2013-08-16 | 2015-02-25 | 亚德诺半导体集团 | 用于可配置数学硬件加速器的微处理器集成配置控制器 |
CN105229608A (zh) * | 2013-03-15 | 2016-01-06 | 惠普发展公司,有限责任合伙企业 | 基于协处理器的面向数组的数据库处理 |
CN208805817U (zh) * | 2018-07-20 | 2019-04-30 | 苏州中德宏泰电子科技股份有限公司 | 图像识别服务端 |
CN109886859A (zh) * | 2019-01-30 | 2019-06-14 | 上海赜睿信息科技有限公司 | 数据处理方法、系统、电子设备和计算机可读存储介质 |
-
2020
- 2020-02-11 CN CN202010086648.0A patent/CN111338769B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229608A (zh) * | 2013-03-15 | 2016-01-06 | 惠普发展公司,有限责任合伙企业 | 基于协处理器的面向数组的数据库处理 |
CN104375972A (zh) * | 2013-08-16 | 2015-02-25 | 亚德诺半导体集团 | 用于可配置数学硬件加速器的微处理器集成配置控制器 |
CN208805817U (zh) * | 2018-07-20 | 2019-04-30 | 苏州中德宏泰电子科技股份有限公司 | 图像识别服务端 |
CN109886859A (zh) * | 2019-01-30 | 2019-06-14 | 上海赜睿信息科技有限公司 | 数据处理方法、系统、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111338769A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274019B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN111338769B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN108536538A (zh) | 处理器核心调度方法、装置、终端及存储介质 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US9703595B2 (en) | Multi-core system with central transaction control | |
JP7100154B6 (ja) | プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体 | |
JP2008506187A (ja) | 複数のカーネルの並列実行のための方法およびシステム | |
CN111310638B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112114984A (zh) | 图数据处理方法及装置 | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN113127204B (zh) | 一种基于反应堆网络模型处理并发业务的方法和服务器 | |
JP2007280397A (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
KR20220113710A (ko) | Gpu 패킷 집계 시스템 | |
CN111160546B (zh) | 一种数据处理系统 | |
CN111143078B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN110018782B (zh) | 一种数据读/写方法及相关装置 | |
CN114338830A (zh) | 数据传输方法、装置、计算机可读存储介质及计算机设备 | |
CN110955461A (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN117724852B (zh) | 一种云电脑计算资源分配方法及装置 | |
EP4191413A1 (en) | Message management method, device, and serverless system | |
CN101587584A (zh) | 基于图形绘制引擎的资源设置方法和装置 | |
WO2023236479A1 (zh) | 用于执行任务调度的方法及其相关产品 | |
JP2023143824A (ja) | グラフィックスプロセッサの呼び出し方法、中央プロセッサ及び機器 | |
CN116450360A (zh) | 任务处理方法、装置和存储介质及电子装置 | |
CN113204413A (zh) | 任务处理方法、装置及设备 |
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 |