CN111143078B - 一种数据处理方法、装置及计算机可读存储介质 - Google Patents

一种数据处理方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN111143078B
CN111143078B CN201911423697.2A CN201911423697A CN111143078B CN 111143078 B CN111143078 B CN 111143078B CN 201911423697 A CN201911423697 A CN 201911423697A CN 111143078 B CN111143078 B CN 111143078B
Authority
CN
China
Prior art keywords
hardware
task
acceleration
tasks
acceleration task
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
Application number
CN201911423697.2A
Other languages
English (en)
Other versions
CN111143078A (zh
Inventor
奚健
王成波
叶国维
顾鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN201911423697.2A priority Critical patent/CN111143078B/zh
Publication of CN111143078A publication Critical patent/CN111143078A/zh
Application granted granted Critical
Publication of CN111143078B publication Critical patent/CN111143078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例提供一种数据处理方法、装置及计算机可读存储介质,该方法包括:接收来自DSP的加速任务,加速任务携带有计算类型和计算数据;确定计算类型对应的硬件和该硬件的驱动函数,硬件为深度学习中用于算子运算的专用芯片;通过驱动函数驱动硬件对计算数据进行处理。本发明实施例,可以提高数据处理效率。

Description

一种数据处理方法、装置及计算机可读存储介质
技术领域
本发明涉及机器学习领域,具体涉及一种数据处理方法、装置及计算机可读存储介质。
背景技术
随着计算机技术的不断发展,需要处理的数据越来越多。因此,为了提高数据处理效率,业界引入了深度学习(deep learning)。深度学习是学习样本数据的内在规律和表示层次,以便可以使机器能够像人一样具有分析学习能力,能够处理数据。然而,随着深度学习中模型的结构越来越复杂,如果所有模型都通过软件来实现的话,模型处理数据的过程都是在数字信号处理器(digital signal processor,DSP)上进行,以致降低了数据处理效率。
发明内容
本发明实施例提供一种数据处理方法、装置及计算机可读存储介质,用于提高数据处理效率。
第一方面提供一种数据处理方法,包括:
接收来自DSP的加速任务,所述加速任务携带有计算类型和计算数据;
确定所述计算类型对应的硬件和所述硬件的驱动函数,所述硬件为深度学习中用于算子运算的专用芯片;
通过所述驱动函数驱动所述硬件对所述计算数据进行处理。
由于加速任务是在硬件上进行的,而硬件为研发人员根据需要自主研发的深度学习中用于算子运算的专用芯片,只用于处理某一个或多个算子的运算,可以提高这些算子的计算效率,因此,可以提高数据处理效率。
作为一种可能的实现方式,所述加速任务还携带有头信息,所述确定所述计算类型对应的硬件和所述硬件的驱动函数包括:
根据所述头信息确定所述加速任务对应的硬件链路(hardware link,HL);
从所述HL包括的硬件中选取所述计算类型对应的硬件;
获取选取的硬件的驱动函数。
可以根据加速任务携带的头信息、计算类型和计算数据快速准确地确定执行该加速任务的硬件以及该硬件的驱动函数,可以进一步提高数据处理效率。
作为一种可能的实现方式,所述方法还包括:
接收来自所述DSP的配置信息,所述配置信息包括为所述加速任务对应的任务配置的HL的信息,所述HL的信息携带有所述任务的头信息;
所述根据所述头信息确定所述加速任务对应的HL包括:
将携带的头信息与所述加速任务携带的头信息相同的配置信息对应的HL,确定所述加速任务对应的HL。
预先配置有加速任务对应的任务的配置信息,以便可以根据该配置信息和加速任务携带的信息快速准确地确定执行该加速任务的硬件以及该硬件的驱动函数,可以进一步提高数据处理效率。
作为一种可能的实现方式,所述HL的信息包括所述HL包括的队列(queue)的描述符,所述描述符用于描述硬件的工作方式;
所述从所述HL包括的硬件中选取所述计算类型对应的硬件包括:
从所述HL的信息包括的描述符中选取所述计算类型对应的描述符;
将所述描述符对应的硬件确定为所述计算类型对应的硬件;
所述通过所述驱动函数驱动所述硬件对所述计算数据进行处理包括:
通过所述驱动函数驱动所述硬件根据对应的描述符对所述计算数据进行处理。
预先配置有队列的描述符,以便硬件可以根据该描述符对数据进行快速处理,可以进一步提高数据处理效率。
作为一种可能的实现方式,所述方法还包括:
将所述加速任务缓存至所述HL对应的缓存器中;
所述通过所述驱动函数驱动所述硬件对所述计算数据进行处理包括:
从所述HL对应的缓存器中读取所述加速任务;
通过所述驱动函数驱动对应的硬件对所述计算数据进行处理。
将任务缓存至缓存器中,可以保证对任务的快速处理,从而可以提高数据处理效率。
作为一种可能的实现方式,所述将所述加速任务缓存至所述HL对应的缓存器中包括:
在所述加速任务包括的任务的数量大于M的情况下,将所述加速任务中前M个任务缓存至所述HL对应的缓存器中,所述M为所述HL对应的缓存器能够容纳的最大任务数量;
在所述前M个任务从所述HL对应的缓存器被取走之后,将所述加速任务中除所述前M个任务之外的任务缓存至所述HL对应的缓存器。
在缓存器的空间不够的情况下,可以先对部分任务进行处理,之后再对剩余部分任务进行处理,而不需要等待缓存器的空间足够的情况下再进行处理,因此,可以保证对任务的快速处理,从而可以提高数据处理效率。
作为一种可能的实现方式,所述将所述加速任务缓存至所述HL对应的缓存器中还包括:
在所述加速任务包括的任务的数量小于或等于M的情况下,将所述加速任务缓存至所述HL对应的缓存器。
第二方面提供一种数据处理装置,包括:
接收单元,用于接收来自DSP的加速任务,所述加速任务携带有计算类型和计算数据;
确定单元,用于确定所述计算类型对应的硬件和所述硬件的驱动函数,所述硬件为深度学习中用于算子运算的专用芯片;
处理单元,用于通过所述驱动函数驱动所述硬件对所述计算数据进行处理。
作为一种可能的实现方式,所述加速任务还携带有头信息,所述确定单元具体用于:
根据所述头信息确定所述加速任务对应的HL;
从所述HL包括的硬件中选取所述计算类型对应的硬件;
获取选取的硬件的驱动函数。
作为一种可能的实现方式,所述接收单元,还用于接收来自所述DSP的配置信息,所述配置信息包括为所述加速任务对应的任务配置的HL的信息,所述HL的信息携带有所述任务的头信息;
所述确定单元根据所述头信息确定所述加速任务对应的HL包括:
将携带的头信息与所述加速任务携带的头信息相同的配置信息对应的HL,确定所述加速任务对应的HL。
作为一种可能的实现方式,所述HL的信息包括所述HL包括的队列的描述符,所述描述符用于描述硬件的工作方式;
所述确定单元从所述HL包括的硬件中选取所述计算类型对应的硬件包括:
从所述HL的信息包括的描述符中选取所述计算类型对应的描述符;
将所述描述符对应的硬件确定为所述计算类型对应的硬件;
所述处理单元,具体用于通过所述驱动函数驱动所述硬件根据对应的描述符对所述计算数据进行处理。
作为一种可能的实现方式,所述装置还包括:
缓存单元,用于将所述加速任务缓存至所述HL对应的缓存器中;
所述处理单元具体用于:
从所述HL对应的缓存器中读取所述加速任务;
通过所述驱动函数驱动对应的硬件对所述计算数据进行处理。
作为一种可能的实现方式,所述缓存单元具体用于:
在所述加速任务包括的任务的数量大于M的情况下,将所述加速任务中前M个任务缓存至所述HL对应的缓存器中,所述M为所述HL对应的缓存器能够容纳的最大任务数量;
在所述前M个任务从所述HL对应的缓存器被取走之后,将所述加速任务中除所述前M个任务之外的任务缓存至所述HL对应的缓存器。
作为一种可能的实现方式,所述缓存单元,具体还用于在所述加速任务包括的任务的数量小于或等于M的情况下,将所述加速任务缓存至所述HL对应的缓存器。
第三方面提供一种数据处理装置,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令执行第一方面或第一方面的任一实施例提供的数据处理方法。
第四方面提供一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行第一方面或第一方面的任一实施例提供的数据处理方法。
第五方面提供一种应用程序,该应用程序用于在运行时执行第一方面或第一方面的任一实施例提供的数据处理方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种系统架构的示意图;
图2是本发明实施例提供的一种数据处理系统的结构示意图;
图3是本发明实施例提供的一种HL模型的示意图;
图4是本发明实施例提供的一种HL配置的示意图;
图5是本发明实施例提供的一种HL工作原理的示意图;
图6是本发明实施例提供的一种加速层的示意图;
图7是本发明实施例提供的一种两个DSP的硬件资源分配的示意图;
图8是本发明实施例提供的一种DSP1和DSP2批调度业务请求的示意图;
图9是本发明实施例提供的一种数据处理方法的流程示意图;
图10是本发明实施例提供的一种数据处理装置的结构示意图;
图11是本发明实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据处理方法、装置及计算机可读存储介质,用于提高数据处理效率。以下分别进行详细说明。
为了更好地理解本发明实施例提供的一种数据处理方法、装置及计算机可读存储介质,下面先对本发明实施例使用的系统架构进行描述。请参阅图1,图1是本发明实施例提供的一种系统架构的示意图。如图1所示,该系统架构可以包括应用处理(applicationprocess,AP)系统101和数据处理系统102。
AP101,用于接收用户输入的消息,根据该消息向数据处理系统102发送业务请求,该业务请求携带有待处理数据。
数据处理系统102,用于接收来自AP101的业务请求,根据该业务请求对待处理数据进行处理,将处理结果发送给AP101。
AP101,还用于接收来自数据处理系统102的处理结果。
请参阅图2,图2是本发明实施例提供的一种数据处理系统的结构示意图。如图2所示,该数据处理系统可以包括中断模块、消息接收模块、共享任务池、至少两个DSP、至少两个DSP中每个DSP对应的任务池、加速层、DDR存储器和消息发送模块。加速层包括硬件加速模块和硬件驱动模块。
中断模块,用于接收来自AP系统的业务请求,向消息接收模块发送该业务请求和携带该业务请求的标识的中断。该业务请求携带有待处理数据、任务类型的标识以及用于指示该业务请求的类型的指示信息。待处理数据可以为图像或视频。
消息接收模块,用于接收来自中断模块的该业务请求和中断,根据指示信息确定该业务请求的类型;在该指示信息指示该业务请求为共享业务请求的情况下,向共享任务池发送该业务请求,向至少两个DSP分别发送该中断;在该指示信息指示该业务请求为第一DSP处理的业务请求的情况下,向第一DSP对应的任务池发送该业务请求,向第一DSP发送该中断。第一DSP为至少两个DSP中的任一DSP。
共享任务池,用于接收来自消息接收模块的共享业务请求,存储接收的业务请求。
第一DSP对应的任务池,用于接收来自消息接收模块的第一DSP处理的业务请求,存储接收的业务请求。共享任务池以及至少两个DSP中每个DSP对应的任务池遵循先进先出的原则。
第一DSP,用于接收来自消息接收模块的中断,在第一DSP处于空闲状态的情况下,从第一DSP对应的任务池或共享任务池获取该业务请求,根据该业务请求生成任务,为该任务从配置的HL中选取一条HL,向加速层发送该任务的HL的配置信息,根据任务携带的任务类型的标识确定该任务要使用的算法模型和消息回调函数表,根据算法模型、消息回调函数表、待处理数据以及该任务携带的句柄的标识和消息的标识创建句柄,通过句柄控制算法模型包括的处理流程对待处理数据进行处理。在处理流程包括需要硬件处理的流程的情况下,向加速层发送加速任务。加速任务可以携带有头信息、计算数据和计算类型,计算数据为待处理数据中的部分数据或待处理数据处理后的数据。
该任务携带有头信息。头信息可以包括任务类型的标识、句柄(handle)的标识和消息的标识。任务类型的标识即业务请求携带的任务类型的标识。句柄的标识用于标识该任务,是根据可以并行处理的该任务类型的任务的数量以及业务请求到达任务池时任务池中已经存在的该任务类型的任务数量确定的。可以并行处理的该任务类型的任务的数量是预先配置的。例如,配置的可以并行处理的任务的数量为8,句柄的标识为0-7之间的值,该业务请求到达时任务池中有同一任务类型的业务请求的数量为6,则句柄的标识为6。消息的标识是初始化的值,所有消息的标识的初始化的值均相同。为该任务从配置的HL中选取一条HL时,可以先根据任务类型选取,在选取的HL为一条的情况下,可以将这条HL确定为这个任务的HL。在选取的HL为多条的情况下,可以从这多条HL中选取描述符空间的剩余空间最大的一条HL为这个任务的HL。之后为这个任务的HL中的每个队列分别生成描述符,以及为每个队列的描述符从该HL的描述符空间中分配空间,以便确定配置信息。
共享任务池,还用于在该指示信息指示该业务请求为共享业务请求的情况下,在该业务请求被第一DSP取走后,向第二DSP发送该业务请求被处理的信息。第二DSP为至少两个DSP中除第一DSP之外的DSP。
第二DSP,用于接收来自共享任务池的信息,根据该信息删除该中断。
加速层,用于接收到来自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的输出缓存器,以满足绝大部分卷积神经网络(convolutional neural 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的业务请求进行处理。
在配置数据处理系统时,可以在DSP中配置算法模型。不同DSP中配置的算法模型可以全部相同,也可以全部不同,还可以部分相同部分不同。DSP中的算法模型是经过训练和评估后的算法模型,可以直接用于数据处理。DSP中配置的算法模型的数量可以为一个,也可以为多个。
在配置数据处理系统时,也可以根据DSP中配置的算法模型配置硬件加速模块中的硬件,以及配置硬件驱动模块中与硬件加速模块中的硬件对应的驱动函数。硬件加速模块中的硬件为研发人员根据需要自主研发的专用芯片,如用于卷积运算的芯片、用于图像格式变换的芯片、用于图像尺寸变换的芯片、用于图像格式和尺寸变换的芯片等。
在配置数据处理系统时,还可以根据DSP中包括的算法模型、硬件加速模块中配置的硬件以及硬件驱动模块中配置的驱动函数,配置HL,为每条HL配置描述符空间,为每条HL中的队列的描述符配置可以分配的最大空间。还可以为不同类型的HL分别配置一对缓存器,即一个输入缓存器和输出缓存器。配置的HL的数量可以为一条,也可以为多条。同一类型的HL可以为一条,也可以为多条。一条HL可以配置给多个任务,一个任务的HL可以从多条HL中选择合适的HL进行配置。
基于图1所示的系统架构,请参阅图9,图9是本发明实施例提供的一种数据处理方法的流程示意图。其中,该数据处理方法适用于数据处理系统中的加速层。如图9所示,该数据处理方法可以包括以下流程。
901、接收来自DSP的携带有计算类型和计算数据的加速任务。
在任务包括加速任务的情况下,DSP向加速层发送加速任务。加速层可以接收到来自DSP的加速任务。该加速任务可以携带有计算类型、计算数据和头信息。计算类型用于表明该加速任务的类型,如图像的尺寸变换、图像的格式变换等。
902、确定计算类型对应的硬件和该硬件的驱动函数。
接收到来自DSP的加速任务之后,可以确定计算类型对应的硬件和硬件的驱动函数。可以先根据头信息确定加速任务对应的HL,之后从HL包括的硬件中选取计算类型对应的硬件,获取选取的硬件的驱动函数。硬件为深度学习中用于算子运算的专用芯片。
903、通过驱动函数驱动硬件对计算数据进行处理。
确定出计算类型对应的硬件和该硬件的驱动函数之后,可以通过驱动函数驱动硬件对计算数据进行处理。
可选地,上述方法还可以包括:接收来自DSP的配置信息。配置信息可以包括为加速任务对应的任务配置的HL的信息,HL的信息携带有任务的头信息。在根据加速任务携带的头信息确定加速任务对应的HL时,可以将携带的头信息与加速任务携带的头信息相同的配置信息对应的HL确定加速任务对应的HL。HL的信息可以包括HL包括的队列的描述符,描述符用于描述硬件的工作方式。从HL包括的硬件中选取计算类型对应的硬件时,可以从HL的信息包括的描述符中选取计算类型对应的描述符,将描述符对应的硬件确定为计算类型对应的硬件。通过驱动函数驱动硬件对计算数据进行处理时,可以通过驱动函数驱动硬件根据对应的描述符对计算数据进行处理。
可选地,上述方法还可以包括:将加速任务缓存至HL对应的缓存器中。通过驱动函数驱动硬件对计算数据进行处理时,可以先从HL对应的缓存器中读取加速任务,之后通过驱动函数驱动对应的硬件对计算数据进行处理。可以将处理的结果缓存在缓存器中。在加速任务包括的任务的数量大于M的情况下,可以先将加速任务中前M个任务缓存至HL对应的缓存器中,在前M个任务从HL对应的缓存器被取走之后,将加速任务中除前M个任务之外的任务缓存至HL对应的缓存器。在加速任务包括的任务的数量小于或等于M的情况下,将加速任务缓存至HL对应的缓存器。M为HL对应的缓存器能够容纳的最大任务数量。
基于图1所示的系统架构,请参阅图10,图10是本发明实施例提供的一种数据处理装置的结构示意图。如图10所示,该数据处理装置可以包括:
接收单元1001,用于接收来自DSP的加速任务,加速任务携带有计算类型和计算数据;
确定单元1002,用于确定计算类型对应的硬件和硬件的驱动函数,硬件为深度学习中用于算子运算的专用芯片;
处理单元1003,用于通过驱动函数驱动硬件对计算数据进行处理。
在一个实施例中,加速任务还携带有头信息,确定单元1002具体用于:
根据头信息确定加速任务对应的HL;
从HL包括的硬件中选取计算类型对应的硬件;
获取选取的硬件的驱动函数。
在一个实施例中,接收单元1001,还用于接收来自DSP的配置信息,配置信息包括为加速任务对应的任务配置的HL的信息,HL的信息携带有任务的头信息;
确定单元1002根据头信息确定加速任务对应的HL包括:
将配置信息携带的头信息与加速任务携带的头信息相同的配置信息对应的HL,确定加速任务对应的HL。
在一个实施例中,HL的信息可以包括HL包括的队列的描述符,描述符用于描述硬件的工作方式;
确定单元1002从HL包括的硬件中选取计算类型对应的硬件包括:
从HL的信息包括的描述符中选取计算类型对应的描述符;
将描述符对应的硬件确定为计算类型对应的硬件;
处理单元1003,具体用于通过驱动函数驱动硬件根据对应的描述符对计算数据进行处理。
在一个实施例中,该数据处理装置还可以包括:
缓存单元1004,用于将加速任务缓存至HL对应的缓存器中;
处理单元1003具体用于:
从HL对应的缓存器中读取加速任务;
通过驱动函数驱动对应的硬件对计算数据进行处理。
在一个实施例中,缓存单元1004具体用于:
在加速任务包括的任务的数量大于M的情况下,将加速任务中前M个任务缓存至HL对应的缓存器中,M为HL对应的缓存器能够容纳的最大任务数量;
在前M个任务从HL对应的缓存器被取走之后,将加速任务中除前M个任务之外的任务缓存至HL对应的缓存器。
在一个实施例中,缓存单元1004,具体还用于在加速任务包括的任务的数量小于或等于M的情况下,将加速任务缓存至HL对应的缓存器。
有关上述接收单元1001、确定单元1002、处理单元1003和缓存单元1004更详细的描述可以直接参考上述图9所示的方法实施例中的相关描述直接得到,这里不加赘述。
基于图1所示的系统架构,请参阅图11,图11是本发明实施例提供的另一种数据处理装置的结构示意图。如图11所示,该数据处理装置可以包括处理器1101、存储器1102、接口1103和总线1104。存储器1102可以是独立存在,也可以和处理器1101集成在一起。总线1104在上述组件之间传送信息。其中:
接口1103,用于接收来自DSP的加速任务,加速任务携带有计算类型和计算数据;
存储器1102中存储有一组程序代码,处理器1101用于调用存储器1102中存储的程序代码执行以下操作:
确定计算类型对应的硬件和硬件的驱动函数,硬件为深度学习中用于算子运算的专用芯片;
通过驱动函数驱动硬件对计算数据进行处理。
在一个实施例中,加速任务还携带有头信息,处理器1101确定计算类型对应的硬件和硬件的驱动函数包括:
根据头信息确定加速任务对应的HL;
从HL包括的硬件中选取计算类型对应的硬件;
获取选取的硬件的驱动函数。
在一个实施例中,接口1103,还用于接收来自DSP的配置信息,配置信息包括为加速任务对应的任务配置的HL的信息,HL的信息携带有该任务的头信息;
处理器1101根据头信息确定加速任务对应的HL包括:
将配置信息携带的头信息与加速任务携带的头信息相同的配置信息对应的HL,确定加速任务对应的HL。
在一个实施例中,HL的信息包括HL包括的队列的描述符,描述符用于描述硬件的工作方式;
处理器1101从HL包括的硬件中选取计算类型对应的硬件包括:
从HL的信息包括的描述符中选取计算类型对应的描述符;
将描述符对应的硬件确定为计算类型对应的硬件;
处理器1101通过驱动函数驱动硬件对计算数据进行处理包括:
通过驱动函数驱动硬件根据对应的描述符对计算数据进行处理。
在一个实施例中,处理器1101还用于调用存储器1102中存储的程序代码执行以下操作:
将加速任务缓存至HL对应的缓存器中;
处理器1101通过驱动函数驱动硬件对计算数据进行处理包括:
从HL对应的缓存器中读取加速任务;
通过驱动函数驱动对应的硬件对计算数据进行处理。
在一个实施例中,处理器1101将加速任务缓存至HL对应的缓存器中包括:
在加速任务包括的任务的数量大于M的情况下,将加速任务中前M个任务缓存至HL对应的缓存器中,M为HL对应的缓存器能够容纳的最大任务数量;
在前M个任务从HL对应的缓存器被取走之后,将加速任务中除前M个任务之外的任务缓存至HL对应的缓存器。
在一个实施例中,处理器1101将加速任务缓存至HL对应的缓存器中还包括:
在加速任务包括的任务的数量小于或等于M的情况下,将加速任务缓存至HL对应的缓存器。
上述数据处理装置还可以用于执行前述方法实施例中执行的各种方法,不再赘述。
在一个实施例中提供了一种计算机可读存储介质,该计算机可读存储介质用于存储应用程序,应用程序用于在运行时执行图9的数据处理方法。
在一个实施例中提供了一种应用程序,该应用程序用于在运行时执行图9的数据处理方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (9)

1.一种数据处理方法,其特征在于,包括:
接收来自数字信号处理器DSP的加速任务,所述加速任务携带有头信息、计算类型和计算数据;
确定所述计算类型对应的硬件和所述硬件的驱动函数,包括:根据所述头信息确定所述加速任务对应的硬件链路HL;从所述HL包括的硬件中选取所述计算类型对应的硬件;获取选取的硬件的驱动函数;所述硬件为深度学习中用于算子运算的专用芯片;
通过所述驱动函数驱动所述硬件对所述计算数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收来自所述DSP的配置信息,所述配置信息包括为所述加速任务对应的任务配置的HL的信息,所述HL的信息携带有所述任务的头信息;
所述根据所述头信息确定所述加速任务对应的HL包括:
将携带的头信息与所述加速任务携带的头信息相同的配置信息对应的HL,确定为所述加速任务对应的HL。
3.根据权利要求2所述的方法,其特征在于,所述HL的信息包括所述HL包括的队列的描述符,所述描述符用于描述硬件的工作方式;
所述从所述HL包括的硬件中选取所述计算类型对应的硬件包括:
从所述HL的信息包括的描述符中选取所述计算类型对应的描述符;
将所述描述符对应的硬件确定为所述计算类型对应的硬件;
所述通过所述驱动函数驱动所述硬件对所述计算数据进行处理包括:
通过所述驱动函数驱动所述硬件并根据对应的描述符对所述计算数据进行处理。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述加速任务缓存至所述HL对应的缓存器中;
所述通过所述驱动函数驱动所述硬件对所述计算数据进行处理包括:
从所述HL对应的缓存器中读取所述加速任务;
通过所述驱动函数驱动对应的硬件对所述计算数据进行处理。
5.根据权利要求4所述的方法,其特征在于,所述将所述加速任务缓存至所述HL对应的缓存器中包括:
在所述加速任务包括的任务的数量大于M的情况下,将所述加速任务中前M个任务缓存至所述HL对应的缓存器中,所述M为所述HL对应的缓存器能够容纳的最大任务数量;
所述前M个任务从所述HL对应的缓存器被取走之后,将所述加速任务中除所述前M个任务之外的任务缓存至所述HL对应的缓存器。
6.根据权利要求5所述的方法,其特征在于,所述将所述加速任务缓存至所述HL对应的缓存器中还包括:
在所述加速任务包括的任务的数量小于或等于M的情况下,将所述加速任务缓存至所述HL对应的缓存器。
7.一种数据处理装置,其特征在于,包括:
接收单元,用于接收来自数字信号处理器DSP的加速任务,所述加速任务携带有头信息、计算类型和计算数据;
确定单元,用于确定所述计算类型对应的硬件和所述硬件的驱动函数,包括:根据所述头信息确定所述加速任务对应的硬件链路HL;从所述HL包括的硬件中选取所述计算类型对应的硬件;获取选取的硬件的驱动函数;所述硬件为深度学习中用于算子运算的专用芯片;
处理单元,用于通过所述驱动函数驱动所述硬件对所述计算数据进行处理。
8.一种数据处理装置,其特征在于,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令执行如权利要求1-6任一项所述的数据处理方法。
9.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的数据处理方法。
CN201911423697.2A 2019-12-31 2019-12-31 一种数据处理方法、装置及计算机可读存储介质 Active CN111143078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911423697.2A CN111143078B (zh) 2019-12-31 2019-12-31 一种数据处理方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911423697.2A CN111143078B (zh) 2019-12-31 2019-12-31 一种数据处理方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111143078A CN111143078A (zh) 2020-05-12
CN111143078B true CN111143078B (zh) 2023-05-12

Family

ID=70523170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911423697.2A Active CN111143078B (zh) 2019-12-31 2019-12-31 一种数据处理方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111143078B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110321204A (zh) * 2018-03-31 2019-10-11 北京深鉴智能科技有限公司 计算系统、硬件加速模块管理方法和装置以及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899085B (zh) * 2015-05-29 2018-06-26 华为技术有限公司 一种数据处理方法和装置
CN106681793A (zh) * 2016-11-25 2017-05-17 同济大学 一种基于kvm的加速器虚拟化数据处理系统及方法
CN108667920B (zh) * 2018-04-26 2020-08-11 浪潮集团有限公司 一种雾计算环境业务流量加速系统及其业务流量加速方法
CN108829512B (zh) * 2018-05-09 2021-08-24 山东浪潮科学研究院有限公司 一种云中心硬件加速计算力的分配方法、系统和云中心
CN110428453B (zh) * 2019-07-30 2020-12-15 深圳云天励飞技术有限公司 数据处理方法、装置、数据处理设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110321204A (zh) * 2018-03-31 2019-10-11 北京深鉴智能科技有限公司 计算系统、硬件加速模块管理方法和装置以及存储介质

Also Published As

Publication number Publication date
CN111143078A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN111274019B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
CN111338769B (zh) 一种数据处理方法、装置及计算机可读存储介质
US8145820B2 (en) Multiprocessor system and computer program product
CN109634718B (zh) 云平台创建镜像的方法及系统
JP7100154B6 (ja) プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体
CN111310638B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN114579285B (zh) 一种任务运行系统、方法及计算设备
CN111158855A (zh) 一种基于微容器及云函数的轻量虚拟化裁剪方法
CN114610472B (zh) 异构计算中多进程管理方法及计算设备
CN108829530B (zh) 一种图像处理方法及装置
CN113535341B (zh) Linux下CPU核间中断通信的实现方法及装置
CN111143078B (zh) 一种数据处理方法、装置及计算机可读存储介质
KR20220113710A (ko) Gpu 패킷 집계 시스템
CN111160546B (zh) 一种数据处理系统
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
CN114546677A (zh) 一种消息执行处理方法、装置、电子设备和存储介质
CN110955461A (zh) 计算任务的处理方法、装置、系统、服务器和存储介质
CN111090627A (zh) 基于池化的日志存储方法、装置、计算机设备及存储介质
CN110796587A (zh) Drawcall调用处理方法、装置、终端及存储介质
CN114416381B (zh) 处理资源超分方法、装置、设备及存储介质
CN113032154B (zh) 一种虚拟cpu的调度方法、装置、电子设备及存储介质
EP4191413A1 (en) Message management method, device, and serverless system
CN113835852B (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