CN117076092B - 多维数据任务的处理方法、装置、电子设备及存储介质 - Google Patents

多维数据任务的处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117076092B
CN117076092B CN202311322266.3A CN202311322266A CN117076092B CN 117076092 B CN117076092 B CN 117076092B CN 202311322266 A CN202311322266 A CN 202311322266A CN 117076092 B CN117076092 B CN 117076092B
Authority
CN
China
Prior art keywords
task
dimension
executed
template
target
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
CN202311322266.3A
Other languages
English (en)
Other versions
CN117076092A (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.)
Chengdu Denglin Technology Co ltd
Original Assignee
Chengdu Denglin Technology 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 Chengdu Denglin Technology Co ltd filed Critical Chengdu Denglin Technology Co ltd
Priority to CN202311322266.3A priority Critical patent/CN117076092B/zh
Publication of CN117076092A publication Critical patent/CN117076092A/zh
Application granted granted Critical
Publication of CN117076092B publication Critical patent/CN117076092B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及多维数据任务的处理方法、装置、电子设备及存储介质,属于计算机领域。该多维数据任务的处理方法包括:获取N维的待执行任务,N为大于等于2的整数;根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。该方法可改善AI计算任务的处理效率。

Description

多维数据任务的处理方法、装置、电子设备及存储介质
技术领域
本申请属于计算机领域,具体涉及一种多维数据任务的处理方法、装置、电子设备及计算机可读存储介质。
背景技术
通常AI(Artificial Intelligence,人工智能)网络的执行任务和编译任务的任务量尺寸是不同的。在编译的时候,编译器会编译生成包含不同尺寸任务量的任务模板。在真正执行的时候,用户会通过上传执行任务来运行AI网络。对于该待执行任务,可以通过已编译好的不同尺寸的任务模块来组装得到。当待执行任务只有一维的时候,利用任务模板组成这个一维待执行任务,可以有多种优化算法来提高效率,譬如:通过回溯算法直到找到最优的子任务序列。然而,当待执行任务的维度大于一维的时候,适用于一维的这些优化算法,效率将会显著降低,随着维度的升高,效率降低的趋势呈指数级增加。
发明内容
鉴于此,本申请的目的在于提供一种多维数据任务的处理方法、装置、电子设备及计算机可读存储介质,以改善当前用AI网络执行多维计算任务所存在的处理效率低的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种多维数据任务的处理方法,包括:获取N维的待执行任务,N为大于等于2的整数;根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。
本申请实施例中,在组成待执行任务时,会根据待执行任务的维度,仅选择所需的目标任务模板(若待执行任务为N维任务,则至多选择N+1个目标任务模板)来构成,并不是选择所有的任务模板,从而可以简化组装流程,提高硬件的执行效率,在得到待执行任务对应的任务列表后,任务列表中每个目标任务模板的指令可发送给AI芯片执行。
结合第一方面实施例的一种可能的实施方式,根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,包括:从尺寸小于所述待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板;对于所述待执行任务在各个维度方向上的剩余任务,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板;其中,所述第一目标任务模板和每个维度方向上的第二目标任务模板用于组成所述待执行任务所需的目标任务模板。
本申请实施例中,在选择目标任务模板时,选择尺寸小于任务且尺寸最大的模块作为目标任务模板,这样可以减少任务被拆分的次数,从而可以减少硬件的执行次数,并且采用上述方式,最多需要(N+1,N为待执行任务的维度)个目标任务模板即可组成待执行任务,有利于提高在任务组成过程中的效率,目标任务模板越少对应的任务流程越简单。
结合第一方面实施例的一种可能的实施方式,在分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板之前,所述方法还包括:根据所述待执行任务和所述第一目标任务模块,确定所述待执行任务在每一个维度方向上的剩余任务。
本申请实施例中,根据待执行任务和第一目标任务模块能够快速确定待执行任务在每一个维度方向上的剩余任务,以为准确选取每个维度方向上的第二目标任务模块提供保障。
结合第一方面实施例的一种可能的实施方式,若按照维度从低到高的处理顺序;根据所述待执行任务和所述第一目标任务模块,确定所述待执行任务在每一个维度方向上的剩余任务,包括: 对于最低维度方向上的剩余任务的大小等于:所述待执行任务在其他维度方向上的尺寸x最低维度上的剩余尺寸,其中,最低维度上的剩余尺寸等于所述待执行任务在最低维度上的大小减去第一目标任务模板在最低维度上的尺寸x所述第一目标任务模板在最低维度上的最大重复次数;对于次低维度方向上的剩余任务的大小等于:所述待执行任务在维度大于次低维度的其他维度方向上的尺寸x次低维度上的剩余尺寸x最低维度的尺寸,其中,次低维度上的剩余尺寸等于所述待执行任务在次低维度上的尺寸减去所述第一目标任务模板在次低维度上的尺寸x所述第一目标任务模板在次低维度上的最大重复次数;最低维度的尺寸等于所述第一目标任务模板在最低维度上的尺寸x所述第一目标任务模板在最低维度的最大重复次数;对于比次低维度更高的第三维度方向上的剩余任务的大小等于:所述待执行任务在维度大于第三维度的其他维度方向上的尺寸x第三维度上的剩余尺寸x次低维度的尺寸x最低维度的尺寸,其中,第三维度上的剩余尺寸等于所述待执行任务在第三维度上的大小减去第一目标任务模板在第三维度上的尺寸x第三维度上的最大重复次数;次低维度的尺寸等于所述第一目标任务模板在次低维度上的尺寸x所述第一目标任务模板在次低维度的最大重复次数;以此类推,对于最高维度方向上的剩余任务的大小等于:最高维度上的剩余尺寸x次高维度的尺寸x……x次低维度的尺寸x最低维度的尺寸,其中,最高维度上的剩余尺寸等于所述待执行任务在最高维度上的大小减去所述第一目标任务模板在最高维度上的尺寸x所述第一目标任务模板在最高维度的最大重复次数;次高维度的尺寸等于所述第一目标任务模板在次高维度上的尺寸x所述第一目标任务模板在次高维度的最大重复次数,其中,“x”表示乘号。
本申请实施例中,采用上述串行方式(如按照维度从低到高的处理顺序),可以快速准确的确定待执行任务在每一个维度方向上的剩余任务,并且,使得后续在确定每个维度上的第二目标任务模板时,能够保证重叠部分仅在每个维度自己所在方向上重叠,不会与其他方向重叠,从而可以保证硬件能够并行执行各目标任务模板。
结合第一方面实施例的一种可能的实施方式,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板,包括:按照维度从低到高的处理顺序,分别为每个维度方向上的剩余任务,从尺寸小于对应维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。
本申请实施例中,按照维度从低到高的处理顺序,分别从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板,即采用串行的方式,先处理最低维度方向上的剩余任务,然后再处理次低维度方向上的剩余任务,以此类推,最后再处理最高维度方向上的剩余任务,这样,可以保证重叠部分仅在每个维度自己所在方向上重叠,不会与其他方向重叠,从而可以保证硬件能够并行执行各目标任务模板。
结合第一方面实施例的一种可能的实施方式,从尺寸小于所述待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板之前,所述方法还包括:对所述多个任务模板按照任务量尺寸大小进行排序。
本申请实施例中,通过排序可以更快速的选取出尺寸小于待执行任务的尺寸的任务模板。
结合第一方面实施例的一种可能的实施方式,所述对所述多个任务模板按照任务量尺寸大小进行排序,包括:若按照从大到小的任务量尺寸进行排序,对于任务量总量相同的两个任务模板,按照维度从低到高的比较顺序,将所述两个任务模板中同一维度上尺寸大的任务模板排在前。
本申请实施例中,若按照从大到小进行排序,对于尺寸相同的两个任务模板,按照维度从低到高的比较顺序,将两个任务模板中同一维度上尺寸大的任务模板排在前,便于后续在选择目标任务模板时,优先选择,由于低维度上的连续数据越多,对于硬件越友好,通过优先选择对硬件越友好的数据,有利于优化硬件性能。
结合第一方面实施例的一种可能的实施方式,所述目标任务模板包括第一目标任务模板和每个维度上的第二目标任务模板;基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,包括:根据所述待执行任务和所述第一目标任务模板,确定所述第一目标任务模板的第一重复次数,所述第一重复次数为所述待执行任务的尺寸与所述第一目标任务模板的尺寸的商向下取整所得的数;根据所述待执行任务在每一个维度方向上的剩余任务和第二目标任务模板,确定每个维度上的第二目标任务模板的第二重复次数,所述第二重复次数为每一个维度方向上的剩余任务的尺寸与所述第二目标任务模板的尺寸的商向上取整所得的数;基于所述第一目标任务模板和所述第一重复次数,以及每个所述第二目标任务模板和对应的第二重复次数,得到所述待执行任务对应的任务列表。
本申请实施例中,基于第一目标任务模板和第一重复次数,以及每个第二目标任务模板对应的第二重复次数,得到待执行任务对应的任务列表,使得最多需要(N+1,N为待执行任务的维度)个目标任务模板,即可将待执行任务拆分为多个小任务,且每个任务量的循环(重复)次数非常规整,使得每个目标任务模板的基坐标的计算非常简单,由于最多涉及N+1个目标任务模板,因此最多涉及N+1个基坐标,所以后续只需要往硬件发送N+1组命令即可,便于批量发送,有利于提高硬件执行效率。第二方面,本申请实施例还提供了一种多维数据任务的处理装置,包括:获取模块以及处理模块;获取模块,用于获取N维的待执行任务,N为大于等于2的整数;处理模块,用于根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;并基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。
第三方面,本申请实施例还提供了一种处理器,包括:收发器以及内核;收发器,用于获取N维的待执行任务,N为大于等于2的整数;内核,用于根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。
第四方面,本申请实施例还提供了一种电子设备,其特征在于,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储计算机程序;所述处理器,用于执行所述存储器中的计算机程序,以执行如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第五方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。
图1示出了本申请实施例提供的一种多维数据任务的处理方法的流程示意图。
图2示出了本申请实施例提供的一种利用第一目标任务模板来组成待执行任务的原理示意图。
图3示出了本申请实施例提供的一种利用第一目标任务模板和2个第二目标任务模板来组成待执行任务的原理示意图。
图4示出了本申请实施例提供的一种多维数据任务的处理装置的模块框图。
图5示出了本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。本领域技术人员可以理解的是,在不相冲突的情况下,下述实施例及实施例中的特征可以相互结合。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来。本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在利用AI(Artificial Intelligence,人工智能)网络进行数据处理、计算前,通常需要在编译期采用AI编译器为AI网络进行编译,还需要在运行时决定AI网络对应的计算任务,并将对应计算任务的实际任务量分配给用于执行计算任务的硬件设备。在编译AI网络时,会将AI网络中包含的各种操作(如卷积运算、池化运算、激活、归一化、分类处理等操作)编译成AI芯片中目标硬件设备能够执行的各种任务模板,其中,任务模板中包含指定批尺寸的子任务(tile),每个子任务中均包含用于完成该子任务所需的各种指令,指令中包含执行该指令的目标硬件设备的设备信息。
本申请实施例提供了一种多维数据任务的处理方法、装置、处理器、电子设备及存储介质。本申请实施例中,通过选择不同尺寸任务量的任务模板来组成待执行任务,且在组成待执行任务时,会根据多维待执行任务的维度,仅选择所需的目标任务模板(至多选择N+1个目标任务模板,即最多只需要一个第一目标任务模板以及每个维度分别对应的一个第二目标任务模板)来构成,并不是选择所有的任务模板,可以简化组装流程,提高硬件的执行效率。
AI计算领域的一些应用场景下,各类型的AI网络可能会处理各种各样的任务数据(例如待处理的二维图片、三维图片、视频、文本、音频等任务数据,可被表示为多维数据)。在初始化阶段,可用编译器将AI网络或AI子网中的各类操作编译成可供驱动器调用的若干个小任务模板(即,可供选择的不同任务量的子任务,任务模板中有可供硬件识别、执行的计算指令),每个任务模板对应一个大小不同(例如批尺寸不同)的数据形状。在正式运行AI网络时,驱动器根据用户提供或指定的待执行任务的总任务量(例如实际接收到的图片或视频的大小),从编译出来的若干个任务模板中选取合适的模板来拼凑成实际需要处理的数据量(对应得到任务列表)。
其中,对于任务模板的划分,如果以一张图作为切分粒度,不对一张完整的图再做切分(例如有些不能被随意切割大小的图像),这种时候任务模板的大小可反映图像的张数,只需要考虑一个维度的因素来拼成总任务,这种方式对于驱动器而言较为简单(因为只需要考虑一个维度的因素)。但如果编译器在编译时会将一张图内部再做切分(例如在长宽高等维度甚至其他维度上也做切分),并为切分出来的不同数据形状分别生成对应不同尺寸的任务模板(不同尺寸的任务模板在各维度上可有不同大小的数据形状参数),那么在正式运行AI网络时,可将一张大图的数据从多个维度切分为很多较小的数据任务,然后对这些较小的数据任务做并行计算。在待处理任务是多维数据任务(即,对多维数据进行计算处理),且存在可供选择的任务模板的情况下,驱动器会面临多维数据任务的处理,需选择任务模板来拼接得到与多维数据任务匹配的任务量,并用命令将相应任务模板中的计算指令发送给硬件去执行。
可选的,驱动器在每次将任务模板的执行命令发送给硬件执行前,可以配置好与任务模板对应的执行坐标(用于描述待处理的任务模板或待处理的子任务所对应的待处理数据所在位置)。硬件设备基于命令得到任务模板中的计算指令,可对收到或确定位置的待执行任务的具体数据(例如图像数据、视频数据)进行计算处理,得到计算处理结果并存放到指定的位置,还可通过驱动器将结果返回输出给用户。
通过本申请的原理,在需要执行AI网络时,不论用户实际上传指定的待执行任务的任务量有多大,都可以根据用户传入的待执行任务,通过选择任务模板中的不同尺寸的子任务,来组成用户所需的总任务量,并将用于拼凑出总任务的各子任务所对应的指令,分发给AI芯片中的硬件设备执行,从而使AI芯片中的硬件设备执行指令对相应任务量的数据进行处理。本申请实施例中通过选择任务模板中的不同尺寸的至多N+1个子任务来组成总任务的方式,可以减少待执行任务被拆分的次数,从而可以减少硬件的处理次数有利于提高处理器的运行效率,可优化AI网络的运行效率。
需要说明的是,当待执行任务只有一维的时候,利用任务模板组成这个待执行任务,可以有多种优化算法来提高效率,譬如:通过回溯算法直到找到最优的子任务序列。然而,当待执行任务的维度大于一维的时候,适用于一维的这些优化算法,效率将会显著降低,随着维度的升高,效率降低的趋势呈指数级。比如若用回溯算法,那么对于N维(N是大于等于2的整数)的待执行任务,为该N维的任务进行子任务的每一次选择时,都会将待执行任务从N个方向来拆分,拆成N个子问题处理对每个子问题求解,相当于先拆成N个子任务然后对于这样拆出的每个子任务都会选择一个任务模板来组成该子任务,而对于该子任务的剩余部分,又会继续将剩余的任务量最多从N个方向分成N个子任务,对于每个子任务又会选择一个任务模板来组成,重复前面的做法,会产生指数级(NxNxNx…xN)的分支数量,同时需要大量空间来存储这些分支的任务序列来比较哪个是最优解。此外,即便得到了最优的任务序列,其整个任务序列的组成往往会较为杂乱,因为基于上述的方法,都是一次选定一个任务模板走一步,然后将剩余的任务量在N个方向拆分成N个子任务,各自重复前面的操作。发送任务的时候,各子任务的基坐标的分布会非常没有规律,不利于一次性往硬件发送多个相同的任务模板。因此,若将适用于一维数据任务的方法直接挪用来处理多维数据任务,效率较低。
本申请实施例提供针对多维数据任务的处理方法,可以提高对于多维数据任务组装过程的驱动处理效率,以及降低对多维任务并行执行的难度,优化处理器的性能。该方法可以应用于需要运行AI网络(例如用于目标检测、自然语言处理的各类神经网络模型)的场景,可以应用于处理器,可应用于驱动器(驱动程序)。该处理器可以是同构的处理器,也可以是异构的处理器。该处理器也可以是任何常规的处理器,比如可以是中央处理器。
为了更好的理解,下面结合图1对本申请实施例提供的一种多维数据任务的处理方法进行说明。
S1:获取N维的待执行任务。
获取用户传入的多维的待执行任务。该待执行任务的维度可以为N,N可以是大于等于2的整数,不同的场景下,待执行任务的维度可以不同。
S2:根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板。
在获取到待执行任务后,根据待执行任务的维度,从预设的多个任务模板中选择用于组成待执行任务所需的至多N+1个目标任务模板,以便于基于目标任务模板来组成待执行任务,而不是选择所有的任务模板,从而可以简化组装流程,提高硬件的执行效率。
其中,每个任务模板的维度数量与待执行任务的维度数量相同,且每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令。例如,待执行任务的维度为四维,任务模板的维度也需要为4维。假设,待执行任务的尺寸为4x6x8x10,则任务模板可以尺寸任意的各种4维任务模板,例如,可以是尺寸为4x2x2x2,2x4x2x4,2x4x6x8,4x2x4x2,1x1x1x1的任务模版。
S2的过程可以是:根据所述待执行任务的维度,从尺寸小于待执行任务的尺寸的任务模板中选择用于组成待执行任务所需的至多N+1个目标任务模板。可以理解的是,在利用目标任务模板(小任务量)组成待执行任务(大任务量)时,每次选择的目标任务模板的尺寸应该小于待执行任务的尺寸。先通过从多个任务模板中选择尺寸小于待执行任务的尺寸的任务模板,然后再从尺寸小于待执行任务的尺寸的任务模板中选择组成待执行任务所需的目标任务模板,这样可以提高效率。
一种实施方式下,S2的过程可以是:从尺寸小于待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板;对于待执行任务在各个维度方向上的剩余任务,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板,其中,第一目标任务模板和每个维度方向上的第二目标任务模板用于组成待执行任务所需的目标任务模板。对于待执行任务在每一个维度方向上的剩余任务,可分别从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。刚开始时,选取一个最大但是小于待执行任务的第一目标任务模板,以此来第一次拆分待执行任务,例如,使其从坐标原点(假设待执行任务在坐标系下的起始位置为坐标原点)开始,往每个方向循环(重复)若干次,直到下次循环(重复)会超过边界为止,此处的循环次数(用K表示)为待执行任务的尺寸与第一目标任务模板的尺寸的商向下取整所得的数,所以可以一次得到若干个相同的任务模板,便于批量发送。对于每个维度方向剩余的部分,分别选取一个最大但是小于剩余任务量的第二目标任务模板,以此来拆分剩余部分,使其从前一次拆分的结束位置开始,往每个方向循环若干次,直到下次循环会超过边界为止。在拆分过程中,允许任务模板在单个维度方向的循环过程中存在坐标空间重叠。如果重叠,则硬件会在最后一次重复执行的时候回退,只是会重复做重叠坐标部分的计算任务。此处的循环次数(用M表示)为剩余任务的尺寸与第二目标任务模板的尺寸的商向上取整所得的数。
其中,对于待执行任务在每一个维度方向上的剩余任务,可按照设定的维度处理顺序选择各维度方向上剩余任务尺寸对应的第二目标任务模板。可选的,可按照维度从低到高的处理顺序,分别为每个维度方向上的剩余任务,从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。即采用串行的方式,先处理最低维度方向上的剩余任务,然后再处理次低维度方向上的剩余任务,以此类推,最后再处理最高维度方向上的剩余任务,这样,可以保证重叠部分仅在每个维度方向自己所在方向上重叠,不会与其他方向重叠,从而可以保证并行执行各目标任务模板。
可以理解的是,上述的处理顺序,并不限于从低维度到高维度,也可以是按照维度从高到低的处理顺序,分别为各个维度方向上的剩余任务选择对应维度的第二目标任务模板。或者,采用其他的处理顺序,比如对于6维(1~6维)任务,其顺序可以任意顺序,如按1、3、5、2、4、6维的处理顺序,其处理顺序可以配置。
其中,在分别为每个维度方向上的剩余任务选择对应维度方向上剩余任务尺寸对应的第二目标任务模板之前,该方法还包括:根据待执行任务和第一目标任务模块,确定待执行任务在每一个维度方向上的剩余任务。例如,若是按照维度从低到高的处理顺序,则每个维度方向上的剩余任务的大小遵循如下原理:
对于最低维度方向上的剩余任务,其大小等于:其他维度方向上的尺寸x最低维度上的剩余尺寸,其中,最低维度上的剩余尺寸等于待执行任务在最低维度上的大小减去第一目标任务模板在最低维度上的尺寸x第一目标任务模板最低维度上的最大重复次数K;
对于次低维度方向上的剩余任务,其大小等于:维度大于次低维度的其他维度方向上的尺寸x次低维度上的剩余尺寸x最低维度的尺寸(此处最低维度的尺寸等于第一目标任务模板在最低维度上的尺寸x第一目标任务模板最低维度的最大重复次数K),其中,次低维度上的剩余尺寸等于待执行任务在次低维度上的尺寸减去第一目标任务模板在次低维度上的尺寸x第一目标任务模板次低维度上的最大重复次数K;
对于第三维度(比次低维高一维),其剩余任务大小等于:维度大于第三维度的其他维度方向上的尺寸x第三维度上的剩余尺寸x次低维度的尺寸(此处的次低维度的尺寸等于第一目标任务模板在次低维度上的尺寸x第一目标任务模板次低维度的最大重复次数K)x最低维度的尺寸(此处的最低维度的尺寸等于第一目标任务模板在最低维度上的尺寸x第一目标任务模板最低维度的最大重复次数K),其中,第三维度上的剩余尺寸等于待执行任务在第三维度上的大小减去第一目标任务模板在第三维度上的尺寸x第三维度上的最大重复次数K;
以此类推,对于最高维度,其剩余任务大小等于:最高维度上的剩余尺寸x次高维度的尺寸(此处的次高维度的尺寸等于第一目标任务模板在次高维度上的尺寸x第一目标任务模板次高维度的最大重复次数K)x……x次低维度的尺寸(此处的次低维度的尺寸等于第一目标任务模板在次低维度上的尺寸x第一目标任务模板次低维度的最大重复次数K)x最低维度的尺寸(此处的最低维度的尺寸等于第一目标任务模板在最低维度上的尺寸x第一目标任务模板最低维度的最大重复次数K),其中,最高维度上的剩余尺寸等于待执行任务在最高维度上的大小减去第一目标任务模板在最高维度上的尺寸x最高维度的最大重复次数K。
可以理解的是,若是按照维度从高到低的处理顺序,则每个维度方向上的剩余任务的原理,与上述的按照维度从低到高的处理顺序下每个维度方向上的剩余任务的原理相反。
从上述的原理可以看出,除了第一个维度(可以是多维中的任一维记为第一个维度)上的剩余任务与待执行任务、第一目标任务模板以及重复次数相关,对于后续其他维度上的剩余任务,除了与待执行任务和第一目标任务模板以及重复次数相关外,还与第一目标任务模板在该维度之前的尺寸以及对应的重复次数有关。例如,对于6维(1~6维)任务,假设其维度处理顺序为1、3、5、2、4、6,则第1维的剩余任务只与待执行任务和第一目标任务模板以及重复次数相关,对于第3维的剩余任务,还与第一目标任务模板在第1维上述的尺寸以及对应的重复次数有关,对于第5维的剩余任务,除了与待执行任务和第一目标任务模板以及重复次数相关外,还与第一目标任务模板在第1维上的尺寸以及对应的重复次数,以及第一目标任务模板在第3维上的尺寸以及对应的重复次数有关。以此类推,对于第6维的剩余任务除了与待执行任务和第一目标任务模板以及重复次数相关外,还与第一目标任务模板在第1、3、5、2、4维上的尺寸以及各自维度上对应的重复次数有关。
一种实施方式下,在S2之前,该方法还包括:从多个任务模板中选择尺寸小于待执行任务的尺寸的任务模板。也即在选择尺寸最大的第一目标任务模板之前,该方法还包括:从多个任务模板中选择尺寸小于待执行任务的尺寸的任务模板。其中,可以是将每个任务模板的尺寸与待执行任务的尺寸进行比较,以此选出尺寸小于待执行任务的尺寸的任务模板。
作为一种可能的实施方式,在从多个任务模板中选择尺寸小于待执行任务的尺寸的任务模板的过程可以是:对多个任务模板按照任务量尺寸大小进行排序,根据排序结果从多个任务模板中选择尺寸小于待执行任务的尺寸的任务模板。通过排序可以更快速的选取出尺寸小于待执行任务的尺寸的任务模板。
在排序时,可以是按照从大到小进行排序,也可以是按照从小到大进行排序。以按照从大到小进行排序为例,对于任务量尺寸大小相同的两个任务模板,按照维度从低到高的比较顺序,将两个任务模板中同一维度上尺寸大的任务模板排在前。例如,对于一个维度形状参数为7x3x2x4和一个3x7x2x4的任务模板,二者的尺寸都是168,在比较时,从低维往高维开始比较,这2个任务模板的最低维、次低维都相等(都是2x4),次高维一个是3,一个是7,所以将3x7x2x4的任务模板排在7x3x2x4任务模板的前面。又例如,对于2x4x7x3、2x4x3x7的2个任务模板,对于最低维一个是3,一个是7,所以将2x4x3x7的任务模板排在2x4x7x3的任务模板的前面。
其中,对于前述这种表示方式的多维的待执行任务或任务模板,默认最左侧为最高维度,最右侧为最低维度,例如,对于7x3x2x4的任务,其最左侧的值对应最高维度,最右侧的值对应最低维度。
在排序时,若按照从大到小进行排序,对于尺寸相同的两个任务模板,按照维度从低到高的比较顺序,将两个任务模板中同一维度上尺寸大的任务模板排在前,便于后续在选择目标任务模板时,优先选择,由于低维度上的连续数据越多,对于用于执行任务模板中指令的硬件越友好,通过优先选择对硬件越友好的数据,有利于优化硬件性能。
可以理解的是,上述示例是按照从大到小进行排序的,如果是按照从小到大进行排序,则需要反过来,例如,需要将3x7x2x4的任务模板排在7x3x2x4任务模板的后面,将2x4x3x7的任务模板排在2x4x7x3的任务模板的后面。
S3:基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。
其中,在从预设的多个任务模板中选择组成所述待执行任务所需的目标任务模板后,基于所选取的目标任务模板和待执行任务,得到待执行任务对应的任务列表。
一种实施方式下,目标任务模板包括第一目标任务模板和每个维度上的第二目标任务模板;S3具体可包括:根据待执行任务和第一目标任务模板,确定第一目标任务模板的第一重复次数,第一重复次数为待执行任务的尺寸与第一目标任务模板的尺寸的商向下取整所得的数;根据被第一目标任务模板拆分后的待执行任务在每一个维度方向上的剩余任务和第二目标任务模板,确定每个维度上的第二目标任务模板的第二重复次数,第二重复次数为每一个维度方向上的剩余任务的尺寸与第二目标任务模板的尺寸的商向上取整所得的数;基于所述第一目标任务模板和所述第一重复次数,以及每个所述第二目标任务模板以及对应的第二重复次数,得到所述待执行任务对应的任务列表。任务列表可以包括每个目标任务模板的尺寸以及对应的重复次数。
为了更好的理解上述的多维数据任务的处理方法,下面结合例子进行说明。假设有一个二维的待执行任务尺寸为11x13,假设编译器编译好的任务模板的尺寸有1x1、2x2、3x2、2x4、3x3。对上述任务模板按照从大到小进行排序,其模板排序结果为:3x3、2x4、3x2、2x2、1x1。在选取目标任务模板时,选取最大的3x3的任务模板(第一目标任务模板)来拆分11x13的任务,可以将11x13的任务拆分成3x4个3x3的任务模板,其原理图如图2所示。图2中的大边框表示待执行任务的尺寸,阴影部分为表示3x4个3x3的任务模板,空白部分为剩余任务的尺寸。即重复尺寸为3x3的任务模板3x4次,即可得到图2中的阴影部分。
对于待执行任务在每一个维度方向上的剩余任务,需要分别从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。对于待执行任务(11x13的任务)中的13所在的维度(此例为最低维度),其剩余任务的尺寸为11x1(该维度上尺寸为1的计算思路为:待执行任务在最低维度上的尺寸13-第一目标任务模板在最低维度上的尺寸3x第一目标任务模板在最低维度上的重复次数4),因此,在选取目标任务模板,选择1x1的第二目标任务模板来拆分该11x1的剩余任务,可以将11x1的任务拆分成11个1x1的任务模板。而对于待执行任务(11x13的任务)中的11所在的维度(此例为高维度),其剩余任务的尺寸为2(此维度上尺寸为2的计算思路为:待执行任务在最高维度上的尺寸11-第一目标任务模板在最高维度上的尺寸3x第一目标任务模板在最高维度上的重复次数3)x12(此维度上尺寸为12的计算思路为:第一目标任务模板在最低维度上的尺寸3x最低维度的重复次数4),可以选择2x4的第二目标任务模板来拆分该2x12的剩余任务,可以将2x12的任务拆分成1x3个2x4的任务模板。即,对于图2中的空白部分对应的任务量,可以选择11个1x1的任务模板以及1x3个2x4的任务模板来组成,其原理如图3所示。通过图3示例可以看出,对于一个维度信息为11x13的待执行任务,可以选用3x4个3x3的任务模板、11个1x1的任务模板以及1x3个2x4的任务模板来组成。
可以理解的是,如果是按照维度从高到低的处理顺序,则对于待执行任务中的11所在的维度(高维度),其剩余尺寸为:2(此维度上尺寸为2的计算思路为:待执行任务在最高维度上的尺寸11-第一目标任务模板在最高维度上的尺寸3x第一目标任务模板在最高维度上的重复次数3)x13,对于待执行任务(11x13的任务)中的13所在的维度(最低维度),其剩余任务的尺寸为9(此维度上尺寸为9的计算思路为:第一目标任务模板在最高维度上的尺寸3x最高维度的重复次数3)x1(此维度上尺寸为1的计算思路为:待执行任务在最低维度上的尺寸13-第一目标任务模板在最低维度上的尺寸3x第一目标任务模板在最低维度上的重复次数4)。
又例如,对于一个四维的待执行任务,其尺寸为4x6x8x10,假设编译器编译好的任务模板尺寸有4x2x2x2、2x4x2x4、2x4x6x8、4x2x4x2、1x1x1x1。则按照从大到小进行排序,其排序结果为:2x4x6x8、2x4x2x4、4x2x4x2、4x2x2x2、1x1x1x1。在选取目标任务模板时,选取最大的2x4x6x8的第一目标任务模板来拆分4x6x8x10,可以将4x6x8x10拆分为2x1x1x1个大小为2x4x6x8的任务模板以及剩余任务。
对于待执行任务在每一个维度方向上的剩余任务,按照维度从低到高的处理顺序,需要分别从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。
对于待执行任务(此处是指4x6x8x10的任务)中的10所在的维度(最低维,假设记为轴3),其剩余的尺寸大小为4x6x8x2(此维度上尺寸为2的计算思路为:待执行任务在最低维度上的尺寸10-第一目标任务模板在最低维度上的尺寸8x最低维度上的重复次数1)的任务,选择最大的第二目标任务模板为4x2x4x2,可以将4x6x8x2的任务,拆分为1x3x2x1个尺寸为4x2x4x2的任务模板,即,将4x2x4x2的模板重复1x3x2x1次,即可得到尺寸为4x6x8x2的任务。
对于待执行任务(此处是指4x6x8x10的任务)中的8所在的维度(次低维,假设记为轴2),其剩余的尺寸大小为4x6x2(此维度上尺寸为2的计算思路为:待执行任务在次低维度上的尺寸8-第一目标任务模板在次低维度上的尺寸6x次低维度上的重复次数1)x8(此维度上尺寸为8的计算思路为:第一目标任务模板在最低维度上的尺寸8x最低维度上的重复次数1)的任务,对于该4x6x2x8的任务,可以选取2x4x2x4的第二目标任务模板,循环2x2x1x2次,其中,在轴1上会有重叠,因为轴1上剩余量为6,而选取的模板在轴1方向一次处理的任务量为4,那么硬件在更新轴1上的坐标时,第一次执行对应轴1上的坐标区间[0,3],第二次不是对应执行轴1上的[4,7],因为该维度上剩余的总任务量只有6,而是可对应执行轴1上的坐标区间[2,5],即两次执行中,在轴1区间[2,3]上发生重叠,第二次执行回退了两格单位。在AI领域的一些应用场景下,可以用批处理任务(batch)的大小(也称为批尺寸batchsize)为单位来描述数据或任务的尺寸大小。
同理,对于待执行任务(此处是指4x6x8x10的任务)中的6所在的维度(次高维,假设记为轴1),剩余任务为4x2(关于此维度上的计算思路为6-4x1)x6(此处计算思路:6x1)x8(此处计算思路:8x1)的任务,关于该4x2x6x8的任务,选取4x2x4x2的第二目标任务模板,循环1x1x2x4次,其中,在轴2上会有重叠,因为轴2上的任务剩余量为6,而所选取的模板中,在轴2上一次处理的任务量为4,其重复2次对应的任务量为8,那么硬件在关于轴2更新坐标的时候,第一次执行坐标区间[0,3],第二次不是执行[4,7],因为该维度上剩余的总任务量只有6,而是执行坐标区间[2,5],即两次执行中,区间[2,3]是重叠的,第二次执行回退了两格。
对于待执行任务(此处是指4x6x8x10的任务)中的4所在的维度(最高维,假设记为轴0),已经没有剩余任务(因为经过前述思路的处理已经划分完了),可直接跳过。
通过上述的示例可以看出,若是按照维度从低到高的处理顺序,对于最低维度方向上的剩余任务,其大小等于:其他维度方向上的尺寸x最低维度上的剩余尺寸(等于待执行任务在最低维度上的大小减去第一目标任务模板在最低维度上的尺寸x最低维度的最大重复次数K,K的取值为待执行任务的尺寸与所述第一目标任务模板的尺寸的商向下取整所得的数)。例如,待执行任务尺寸为11x13,第一目标任务模板的尺寸为3x3, 11/3的商向下取整为3,13/3的商向下取整为4,所以需要重复3x4次。所以最低维度上的剩余任务尺寸=11x(13-12)=11x1。
对于次低维度方向上的剩余任务,其大小等于维度大于次低维度的其他维度方向上的尺寸x次低维度上的剩余尺寸(等于待执行任务在次低维度上的大小减去第一目标任务模板在次低维度上的尺寸x次低维度的最大重复次数K)x(第一目标任务模板在最低维度上的尺寸x最低维度上的重复次数K),例如,待执行任务尺寸为11x13,第一目标任务模板为3x3,由于第一目标任务模板在于次低维度方向上的重复次数为3,在方向上的重复次数为4,则次低维度上的剩余任务为(11-3x3)x(3x4)=2x12。
假设待执行任务尺寸为4x6x8x10,第一目标任务模板为2x4x6x8,则该任务模板对应的最大重复次数为2x1x1x1次,该任务模板在相应维度上分别对应的最大重复次数的计算思路是:(4/2)x(6/4向下取整所得的数)x(8/6向下取整所得的数)x(10/8向下取整所得的数)。对于最低维度方向上的剩余任务为4x6x8x2(思路:10-8x1)。由于第一目标任务模板在最低维度上的尺寸为8,且重复次数为1,所以对于次低维度上的剩余任务=4x6x2(思路:8-6x1)x8(思路:8x1)。第一目标任务模板次低维度上的尺寸为6,且重复次数为1,所以对于第三维(次高维)6,则其剩余任务为4x2(思路:6-4x1)x6(思路:6x1)x8(思路:8x1)。由于第一目标任务模板次高维度上的尺寸为4,且重复次数为1,所以对于最高维4,则其剩余任务为0(思路4-4x1)x4(思路4x1)x6(思路6x1)x8(思路8x1)=0。
可以理解的是,待执行任务的维度可以大于4,例如可以为8、16维等更高维度,但无论待执行任务的维度数量是多少,其选取目标任务模板的原理是一样的:例如,可以是先从尺寸小于待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板,对于待执行任务在每一个维度方向上的剩余任务,按照维度从低到高的处理顺序,分别从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。
例如,以上述待执行任务为4x6x8x10的例子为例,则对应的任务列表可以如表1所示。
表1
在得到上述的任务列表后,便可将每个目标任务模板及其基坐标、以及在每个方向上的重复次数发送给对应的硬件设备执行。采用本申请所示的多维数据任务的处理方法,由于不同维度方向上的数据不会相互重叠,从而避免不同硬件设备同时访问(读写)同一个地址(重叠所在的地址),使得不同硬件设备可以并行处理上述的每个任务模板。
一种可选实施方式下,任务列表中的一个目标任务模板对应待执行任务的一个子任务基坐标,任务列表除了包括每个目标任务模板以及在每个方向上的重复次数外,还可以包括每个目标任务模块对应的基坐标。在该种实施方式下,S3的具体过程可以是:根据待执行任务和第一目标任务模板,确定第一目标任务模板的第一重复次数;根据待执行任务在每一个维度方向上的剩余任务和第二目标任务模板,确定每个维度上的第二目标任务模板的第二重复次数;基于第一目标任务模板、第一目标任务模块对应的基坐标和第一重复次数,以及每个第二目标任务模板、每个第二目标任务模板对应的基坐标以及对应的第二重复次数,得到待执行任务对应的任务列表。
基于上述分析可知,采用本申请所示的多维数据任务的处理方法,只需要进行一次排序以及最多N+1次比较(N为待执行任务的维度数量)即可将待执行任务拆分为多个小任务;另一方面,每个任务量的循环次数非常规整,使得基坐标的计算非常简单,因为最多涉及N+1个基坐标,所以只需要往硬件发送N+1组命令即可。一个任务模板对应一个子任务,那么组装得到待执行任务最多只需要选N+1个子任务的目标任务模板来得到任务列表,最多仅需向硬件发送N+1组命令来执行该任务列表对应的N+1个子任务。
例如,对于上述的11(例如该维度以Y轴的坐标进行表示)x13(例如该维度以X轴的坐标进行表示)的任务,对应的目标模板为3x3、1x1、2x4;则目标模板3x3的基坐标(X,Y)可以是(0,0),目标模板1x1的基坐标可以是(12,0),目标模板的基坐标2x4的基坐标可以是(0,9)。硬件在拿到3x3的目标任务模板的基坐标以及重复次数后,便可自动执行对应位置的数据,从而完成计算任务,例如,第一次从(0,0)处获取大小为3x3的数据,第二次从(3,0)处获取大小为3x3的数据,第三次从(6,0)获取大小为3x3的数据,第四次从(9,0)处获取大小为3x3的数据。第五次从(0,3)处获取大小为3x3的数据,第六次从(3,3)处获取大小为3x3的数据,第七次从(6,3)处处获取大小为3x3的数据,第八次从(9,3)处获取大小为3x3的数据,第九次从(0,6)处获取大小为3x3的数据,第10次从(3,6)处获取大小为3x3的数据,第11次从(6,6)处获取大小为3x3的数据,第12次从(9,6)处获取大小为3x3的数据。
对于1x1的目标任务模板,硬件在拿到1x1的目标任务模板的基坐标(12,0)以及重复次数(11x1)后,便可自动执行对应位置的数据,从而完成计算任务,第一次从(12,0)处获取大小为1x1的数据,第二次从(12,1)处获取大小为1x1的数据,以此类推,第11次从(12,10)处获取大小为1x1的数据。
对于2x4的目标任务模板,硬件在拿到2x4的目标任务模板的基坐标(0,9)以及重复次数(1x3)后,便可自动执行对应位置的数据,从而完成计算任务,例如,第一次从(0,9)处获取大小为2x4的数据,第二次从(4,9)处获取大小为2x4的数据,第三次从(8,9)处获取大小为2x4的数据。
关于AI芯片中用于执行计算任务的硬件设备的数量,可以由人工进行配置,也可以在预设规则的情况下自动根据规则来判断当前允许调用多少硬件设备来运行AI网络,例如,可以根据待执行的总任务的任务量,来确定需要运行AI网络模型的硬件设备的数量,在待执行任务的任务量少的情况下,调用一个硬件设备可能就足以满足需求,在任务量多的情况下,可能需要多个硬件设备并行运行。
例如,对于用AI网络识别不同人脸图像的场景下,如果只需要识别一张图或者少量的图就行(任务量较少),此时用一个硬件设备来运行该AI网络就能满足运算需求;而对于一些需要在短时间内进行大量识别的场景,即需要对大量的图像进行识别,或对计算结果的实时性要求高的场景,可以用多个硬件设备并行运行AI网络来进行处理。
其中,上述的AI芯片可以是为了承担繁重的AI计算任务而设计的专用的计算加速芯片(或称加速器),如,图形处理器(Graphic Processing Unit,GPU)、张量处理器(TensorProcessing Unit,TPU)等,当然,也可以是其他面向AI计算任务的处理器。可选的,一个AI芯片可以包含多个硬件设备,该多个硬件设备中的任一个,都可以按实际需求被选定作为执行任务模板的目标硬件设备来执行计算任务。可选的,一个硬件设备可以包含多种硬件执行单元,AI芯片中的一个硬件设备也可以视为含有多个硬件执行单元的计算集群。不同类型的硬件设备所包含的硬件执行单元的数量可以不同,且种类也可以不同。
基于同样的发明构思,本申请实施例还提供了一种处理器,该处理器包括内核和收发器。
收发器,用于获取N维的待执行任务,N为大于等于2的整数,并将获取N维的待执行任务发送给内核。
内核,用于根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;并基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。
此外,收发器,还用于将任务列表发送给对应的AI芯片,以便AI芯片中的硬件去执行对应的任务列表中的计算任务。
可选地,内核中部署有上述的驱动器,可用于执行前述的多维数据任务的处理方法,编译器用于编译生成任务模板并发给驱动器,驱动器用于根据所述待执行任务的维度,预设的多个任务模板中选择组成所述待执行任务所需的目标任务模板,并基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表。
本申请实施例所提供的处理器,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,处理器实施例部分未提及之处,可参考前述方法实施例中相应内容。
基于同样的发明构思,本申请还提供了多维数据任务的处理装置100,如图4所示,该多维数据任务的处理装置100包括获取模块110和处理模块120。
获取模块110,用于获取N维的待执行任务,N为大于等于2的整数。
处理模块120,用于根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;并基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量。
可选地,处理模块120,用于从尺寸小于所述待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板;对于所述待执行任务在每一个维度方向上的剩余任务,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板。
可选地,处理模块120,还用于根据所述待执行任务和所述第一目标任务模块,确定所述待执行任务在每一个维度方向上的剩余任务。
可选地,处理模块120,还用于对所述多个任务模板按照尺寸大小进行排序。
可选地,处理模块120,还用于按照维度从低到高的处理顺序,分别为每个维度方向上的剩余任务,从尺寸小于每个维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。
可选地,处理模块120,还用于根据所述待执行任务和所述第一目标任务模板,确定所述第一目标任务模板的第一重复次数,所述第一重复次数为所述待执行任务的尺寸与所述第一目标任务模板的尺寸的商向下取整所得的数;根据所述待执行任务在每一个维度方向上的剩余任务和第二目标任务模板,确定每个维度上的第二目标任务模板的第二重复次数,所述第二重复次数为每一个维度方向上的剩余任务的尺寸与所述第二目标任务模板的尺寸的商向上取整所得的数;基于所述第一目标任务模板和所述第一重复次数,以及每个所述第二目标任务模板和对应的第二重复次数,得到所述待执行任务对应的任务列表。
本申请实施例所提供的多维数据任务的处理装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图5所示,图5示出了本申请实施例提供的一种电子设备200的结构框图。所述电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。
所述收发器210、所述存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图4中所示的软件功能模块,即多维数据任务的处理装置100。其中,多维数据任务的处理装置100包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作***(Operating System,OS)中的软件功能模块。所述处理器240,用于执行存储器220中存储的可执行模块,例如多维数据任务的处理装置100包括的软件功能模块或计算机程序。例如,处理器240,用于获取N维的待执行任务,N为大于等于2的整数;从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表。
其中,存储器220可以是,但不限于,随机存取存储器(RandomAccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit, CPU)、网络处理器(NetworkProcessor,NP)、微处理器等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。或者该处理器240也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于智能手机、平板、电脑、工控机、车载设备、服务器、智能穿戴设备、边缘计算盒子等。
本申请实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的多维数据任务的处理方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的实施例仅仅是示意性的,例如,附图中的流程图和框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (9)

1.一种多维数据任务的处理方法,其特征在于,包括:
获取N维的待执行任务,N为大于等于2的整数;
根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;
基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量;
其中,根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,包括:
从尺寸小于所述待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板;
对于所述待执行任务在各个维度方向上的剩余任务,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板,其中,所述第一目标任务模板和每个维度方向上的第二目标任务模板用于组成所述待执行任务所需的目标任务模板。
2.根据权利要求1所述的方法,其特征在于,在分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板之前,所述方法还包括:
根据所述待执行任务和所述第一目标任务模板,确定所述待执行任务在每一个维度方向上的剩余任务。
3.根据权利要求1所述的方法,其特征在于,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板,包括:
按照维度从低到高的处理顺序,分别为每个维度方向上的剩余任务,从尺寸小于对应维度方向上的剩余任务的尺寸的任务模板中,选择尺寸最大的第二目标任务模板。
4.根据权利要求1所述的方法,其特征在于,在从尺寸小于所述待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板之前,所述方法还包括:
对所述多个任务模板按照任务量尺寸大小进行排序。
5.根据权利要求4所述的方法,其特征在于,所述对所述多个任务模板按照任务量尺寸大小进行排序,包括:
若按照从大到小的任务量尺寸进行排序,对于任务量总量相同的两个任务模板,按照维度从低到高的比较顺序,将所述两个任务模板中同一维度上尺寸大的任务模板排在前。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述目标任务模板包括第一目标任务模板和每个维度上的第二目标任务模板;基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,包括:
根据所述待执行任务和所述第一目标任务模板,确定所述第一目标任务模板的第一重复次数,所述第一重复次数为所述待执行任务的尺寸与所述第一目标任务模板的尺寸的商向下取整所得的数;
根据所述待执行任务在每一个维度方向上的剩余任务和第二目标任务模板,确定每个维度上的第二目标任务模板的第二重复次数,所述第二重复次数为每一个维度方向上的剩余任务的尺寸与所述第二目标任务模板的尺寸的商向上取整所得的数;
基于所述第一目标任务模板和所述第一重复次数,以及每个所述第二目标任务模板和对应的第二重复次数,得到所述待执行任务对应的任务列表。
7.一种多维数据任务的处理装置,其特征在于,包括:
获取模块,用于获取N维的待执行任务,N为大于等于2的整数;
处理模块,用于根据所述待执行任务的维度,从预设的多个任务模板中选择用于组成所述待执行任务所需的至多N+1个目标任务模板,其中,每个任务模板的维度数量与所述待执行任务的维度数量相同,每个任务模板中包含用于完成该任务模板所对应任务量的子任务的指令;并基于所述目标任务模板和所述待执行任务,得到所述待执行任务对应的任务列表,其中,所述任务列表包括所述目标任务模板,且所述任务列表的任务量之和不小于所述待执行任务的任务量;
其中,处理模块具体用于,从尺寸小于所述待执行任务的尺寸的任务模板中,选择尺寸最大的第一目标任务模板;对于所述待执行任务在各个维度方向上的剩余任务,分别为每个维度方向上的剩余任务,选择任务量尺寸最大但小于对应维度方向上剩余任务尺寸的第二目标任务模板,其中,所述第一目标任务模板和每个维度方向上的第二目标任务模板用于组成所述待执行任务所需的目标任务模板。
8.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中的计算机程序,以执行如权利要求1-6中任一项所述的方法。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序被处理器运行时,执行权利要求1-6中任一项所述的方法。
CN202311322266.3A 2023-10-13 2023-10-13 多维数据任务的处理方法、装置、电子设备及存储介质 Active CN117076092B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311322266.3A CN117076092B (zh) 2023-10-13 2023-10-13 多维数据任务的处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311322266.3A CN117076092B (zh) 2023-10-13 2023-10-13 多维数据任务的处理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117076092A CN117076092A (zh) 2023-11-17
CN117076092B true CN117076092B (zh) 2024-01-19

Family

ID=88704526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311322266.3A Active CN117076092B (zh) 2023-10-13 2023-10-13 多维数据任务的处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117076092B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724678B (zh) * 2024-02-07 2024-05-17 深圳市纽创信安科技开发有限公司 执行方法、装置、***、设备、芯片、介质及程序产品

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1510936A1 (en) * 2003-08-29 2005-03-02 Ubs Ag Redundancy-free provision of multi-purpose data
CN112114950A (zh) * 2020-09-21 2020-12-22 中国建设银行股份有限公司 任务调度方法和装置、以及集群管理***
CN113010286A (zh) * 2021-03-12 2021-06-22 京东数字科技控股股份有限公司 并行任务调度方法、装置、计算机设备和存储介质
CN114610494A (zh) * 2022-03-17 2022-06-10 飞腾信息技术有限公司 资源分配方法、电子设备及计算机可读存储介质
CN115794342A (zh) * 2022-11-22 2023-03-14 北京知道创宇信息技术股份有限公司 流水线任务剩余时间估算方法、装置及电子设备
CN115934291A (zh) * 2022-12-29 2023-04-07 安天科技集团股份有限公司 一种任务执行方法、装置、电子设备及存储介质
WO2023103624A1 (zh) * 2021-12-06 2023-06-15 中兴通讯股份有限公司 任务优化方法、装置和计算机可读存储介质
CN116382880A (zh) * 2023-06-07 2023-07-04 成都登临科技有限公司 任务执行方法、装置、处理器、电子设备及存储介质
CN116431315A (zh) * 2023-06-07 2023-07-14 成都登临科技有限公司 批处理任务的处理方法、装置、电子设备及存储介质
CN116466959A (zh) * 2023-04-07 2023-07-21 中国邮政储蓄银行股份有限公司 微服务***的部署方法、装置、可读存储介质和电子设备
CN116501505A (zh) * 2023-06-27 2023-07-28 上海燧原科技有限公司 负载任务的数据流生成方法、装置、设备及介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1510936A1 (en) * 2003-08-29 2005-03-02 Ubs Ag Redundancy-free provision of multi-purpose data
CN112114950A (zh) * 2020-09-21 2020-12-22 中国建设银行股份有限公司 任务调度方法和装置、以及集群管理***
CN113010286A (zh) * 2021-03-12 2021-06-22 京东数字科技控股股份有限公司 并行任务调度方法、装置、计算机设备和存储介质
WO2023103624A1 (zh) * 2021-12-06 2023-06-15 中兴通讯股份有限公司 任务优化方法、装置和计算机可读存储介质
CN114610494A (zh) * 2022-03-17 2022-06-10 飞腾信息技术有限公司 资源分配方法、电子设备及计算机可读存储介质
CN115794342A (zh) * 2022-11-22 2023-03-14 北京知道创宇信息技术股份有限公司 流水线任务剩余时间估算方法、装置及电子设备
CN115934291A (zh) * 2022-12-29 2023-04-07 安天科技集团股份有限公司 一种任务执行方法、装置、电子设备及存储介质
CN116466959A (zh) * 2023-04-07 2023-07-21 中国邮政储蓄银行股份有限公司 微服务***的部署方法、装置、可读存储介质和电子设备
CN116382880A (zh) * 2023-06-07 2023-07-04 成都登临科技有限公司 任务执行方法、装置、处理器、电子设备及存储介质
CN116431315A (zh) * 2023-06-07 2023-07-14 成都登临科技有限公司 批处理任务的处理方法、装置、电子设备及存储介质
CN116501505A (zh) * 2023-06-27 2023-07-28 上海燧原科技有限公司 负载任务的数据流生成方法、装置、设备及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Method for identification and integration of design automation tasks in industrial contexts;Eugen Rigger 等;《Advanced Engineering Informatics》;第s2卷;第1-14页 *
基于混合蛙跳算法的异地分布式协同开发的任务分配优化;周聪 等;《管理工程学报》;第34卷(第6期);第148-155页 *
移动群智感知网络中数据收集任务分配机制的研究;陈红艳;《中国优秀硕士学位论文全文数据库信息科技辑》(第4期);第I136-1878页 *

Also Published As

Publication number Publication date
CN117076092A (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
US11816559B2 (en) Dilated convolution using systolic array
US8099584B2 (en) Methods for scalably exploiting parallelism in a parallel processing system
CN117076092B (zh) 多维数据任务的处理方法、装置、电子设备及存储介质
US20150109290A1 (en) Device and method for removing noise points in point clouds
CN113994350A (zh) 为神经网络生成并行计算方案
CN110689116B (zh) 一种神经网络剪枝方法、装置、计算机设备及存储介质
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US20210158131A1 (en) Hierarchical partitioning of operators
CN116382880B (zh) 任务执行方法、装置、处理器、电子设备及存储介质
CN108470211B (zh) 一种卷积计算的实现方法、设备和计算机存储介质
US20210304010A1 (en) Neural network training under memory restraint
Zunin Intel OpenVINO toolkit for computer vision: Object detection and semantic segmentation
US11501145B1 (en) Memory operation for systolic array
CN114026571A (zh) 用于并行执行的神经网络操作重新排序
CN113672232B (zh) 程序编译方法和装置
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
WO2023030507A1 (zh) 编译优化方法、装置、计算机设备以及存储介质
WO2022105743A1 (zh) 一种算子计算方法、装置、设备及***
CN115909009A (zh) 图像识别方法、装置、存储介质及电子设备
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
CN115840894A (zh) 一种用于处理多维张量数据的方法及其相关产品
US11748622B1 (en) Saving intermediate outputs of a neural network
CN113867800A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN113792247B (zh) 基于代码特征生成功能流程图的方法、装置、设备和介质
US10134355B2 (en) Two-phase hybrid vertex classification

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