CN115756794A - 任务调度执行方法、任务调度执行指令的生成方法及装置 - Google Patents

任务调度执行方法、任务调度执行指令的生成方法及装置 Download PDF

Info

Publication number
CN115756794A
CN115756794A CN202211467576.XA CN202211467576A CN115756794A CN 115756794 A CN115756794 A CN 115756794A CN 202211467576 A CN202211467576 A CN 202211467576A CN 115756794 A CN115756794 A CN 115756794A
Authority
CN
China
Prior art keywords
task
group
model file
neural network
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.)
Pending
Application number
CN202211467576.XA
Other languages
English (en)
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.)
Beijing Horizon Information Technology Co Ltd
Original Assignee
Beijing Horizon Information 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 Beijing Horizon Information Technology Co Ltd filed Critical Beijing Horizon Information Technology Co Ltd
Priority to CN202211467576.XA priority Critical patent/CN115756794A/zh
Publication of CN115756794A publication Critical patent/CN115756794A/zh
Priority to PCT/CN2023/120845 priority patent/WO2024109312A1/zh
Priority to EP23864116.1A priority patent/EP4398101A1/en
Pending legal-status Critical Current

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/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • 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]
    • 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
    • G06N3/045Combinations of networks
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

公开了一种任务调度执行方法、任务调度执行指令的生成方法及装置。该任务调度执行方法包括:确定存在对应第一版本模型文件的第一目标任务,第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;基于第一版本模型文件的状态信息组以及预定占用比例,将满足预设并发执行条件的第一目标任务的集合确定为第一任务组,第一版本模型文件的状态信息组包括:第一版本模型文件在运行状态下,神经网络加速器的各个功能单元分别对应的状态;并发运行第一任务组中的各个第一目标任务分别对应的第一版本模型文件。本公开的实施例能够实现神经网络加速器对多个任务的并行处理,从而能够提升神经网络加速器的运算效率。

Description

任务调度执行方法、任务调度执行指令的生成方法及装置
技术领域
本公开涉及芯片技术,尤其涉及一种任务调度执行方法、任务调度执行指令的生成方法及装置。
背景技术
芯片中可以包括神经网络加速器,例如可以包括大脑处理器(Brain ProcessingUnit,BPU)。对于多个待处理的任务,神经网络加速器往往是按任务产生的时间先后顺序,依次执行这些任务的,这样,神经网络加速器的运算效率较低,难以满足实际需求。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种任务调度执行方法、任务调度执行指令的生成方法及装置。
根据本公开实施例的一个方面,提供了一种任务调度执行方法,包括:
确定存在对应第一版本模型文件的第一目标任务,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
基于所述第一版本模型文件的状态信息组以及所述预定占用比例,将满足预设并发执行条件的所述第一目标任务的集合确定为第一任务组,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
并发运行所述第一任务组中的各个所述第一目标任务分别对应的所述第一版本模型文件。
根据本公开实施例的另一个方面,提供了一种任务调度执行指令的生成方法,包括:
通过编译处理,生成第一算子组对应的第一版本模型文件,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
基于所述第一算子组对应的功能单元组,生成所述第一版本模型文件的状态信息组,所述第一算子组对应的功能单元组包括:所述神经网络加速器的用于供所述第一算子组运行的各个功能单元,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
基于所述第一版本模型文件、所述第一版本模型文件的状态信息组,以及所述预定占用比例,生成任务调度执行指令,所述任务调度执行指令用于执行上述任务调度执行方法。
根据本公开实施例的再一个方面,提供了一种任务调度执行装置,包括:
第一确定模块,用于确定存在对应第一版本模型文件的第一目标任务,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
第二确定模块,用于基于所述第一版本模型文件的状态信息组以及所述预定占用比例,将满足预设并发执行条件的所述第一确定模块确定的所述第一目标任务的集合确定为第一任务组,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
第一运行模块,用于并发运行所述第二确定模块确定的所述第一任务组中的各个所述第一目标任务分别对应的所述第一版本模型文件。
根据本公开实施例的又一个方面,提供了一种任务调度执行指令的生成装置,包括:
第一生成模块,用于通过编译处理,生成第一算子组对应的第一版本模型文件,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
第二生成模块,用于基于所述第一算子组对应的功能单元组,生成所述第一生成模块生成的所述第一版本模型文件的状态信息组,所述第一算子组对应的功能单元组包括:所述神经网络加速器的用于供所述第一算子组运行的各个功能单元,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
第三生成模块,用于基于所述第一生成模块生成的所述第一版本模型文件、所述第二生成模块生成的所述第一版本模型文件的状态信息组,以及所述预定占用比例,生成任务调度执行指令,所述任务调度执行指令用于执行上述任务调度执行方法。
根据本公开实施例的又一个方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任务调度执行方法或者任务调度执行指令的生成方法。
根据本公开实施例的又一个方面,提供了一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任务调度执行方法或者任务调度执行指令的生成方法。
基于本公开上述实施例提供的一种任务调度执行方法、任务调度执行指令的生成方法、装置、计算机可读存储介质及电子设备,可以基于第一版本模型文件的状态信息组,以及第一版本模型文件在运行状态下对神经网络加速器的计算资源的预定占用比例,确定第一任务组,且并发运行第一任务组中的各个第一目标任务分别对应的第一版本模型文件,这样相当于通过任务调度机制,实现了神经网络加速器对多个任务的并行处理,从而能够提升神经网络加速器的运算效率,以较好地满足实际需求。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本公开一示例性实施例中芯片的结构示意图。
图2是本公开的实施例中实现神经网络加速器对多个任务的并行处理的原理图。
图3是本公开一示例性实施例提供的任务调度执行方法的流程示意图。
图4是本公开另一示例性实施例提供的任务调度执行方法的流程示意图。
图5-1是本公开一示例性实施例提供的任务调度执行方法中任务队列和任务调度表的示意图。
图5-2是本公开一示例性实施例提供的任务调度执行方法中任务的拆分示意图。
图6是本公开再一示例性实施例提供的任务调度执行方法的流程示意图。
图7是本公开一示例性实施例提供的任务调度执行指令的生成方法的流程示意图。
图8是本公开另一示例性实施例提供的任务调度执行指令的生成方法的流程示意图。
图9是本公开再一示例性实施例提供的任务调度执行指令的生成方法的流程示意图。
图10是本公开又一示例性实施例提供的任务调度执行指令的生成方法的流程示意图。
图11是本公开一示例性实施例提供的任务调度执行装置的结构示意图。
图12是本公开另一示例性实施例提供的任务调度执行装置的结构示意图。
图13是本公开一示例性实施例提供的任务调度执行指令的生成装置的结构示意图。
图14是本公开另一示例性实施例提供的任务调度执行指令的生成装置的结构示意图。
图15是本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。所描述的实施例仅仅是本公开的一部分实施例,而不是全部实施例,本公开不受示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,不代表特定技术含义,也不表示必然逻辑顺序。
本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
本公开中术语“和/或”,仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
应当明白,附图中示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机***、服务器等电子设备,其可与众多其它通用或专用计算***环境或配置一起操作。适于与终端设备、计算机***、服务器等电子设备一起使用的众所周知的终端设备、计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***、大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
终端设备、计算机***、服务器等电子设备可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
申请概述
一些芯片中可以包括神经网络加速器,例如,人工智能(ArtificialIntelligence,AI)芯片中可以包括BPU。
需要说明的是,对于多个待处理的任务,神经网络加速器往往是按任务产生的时间先后顺序,依次执行这些任务的,神经网络加速器在同一时刻仅执行一个任务,这样,神经网络加速器的运算效率较低,完成待处理的所有任务需要花费非常长的时间,难以满足实际需求。
示例性***
芯片中的神经网络加速器可以包括:计算部件和多个功能单元(Function Unit);其中,图1中的L1 SRAM(Static Random-Access Memory,静态随机存取存储器)可以作为计算部件;图1中的Tensor Core(张量核)、Vector core(矢量核)、Scalar core(标量核)、DSU(Domain Specific Unit,域特定单元)可以分别作为一个功能单元。
可选地,芯片中除了包括神经网络加速器,还可以包括其他组成,例如包括图形处理器(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processing,DSP)等。
需要说明的是,如图2所示,本公开的实施例中可以分别对编译阶段和执行阶段进行改进;其中,在编译阶段,可以生成任务调度执行指令;在执行阶段,可以通过编译阶段生成的任务调度执行指令的执行,实现神经网络加速器对多个任务的并行处理,从而提升神经网络加速器的运算效率。
示例性方法
图3是本公开一示例性实施例提供的任务调度执行方法的流程示意图。图3所示的方法包括步骤310、步骤320和步骤330,下面分别对各步骤进行说明。
步骤310,确定存在对应第一版本模型文件的第一目标任务,第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源。
在步骤310中,可以确定神经网络加速器待处理的所有任务,并对这些任务进行遍历,以确定这些任务中的哪些任务具有对应的第一版本模型文件,之后可以将具有对应的第一版本模型文件的每个任务分别作为一个第一目标任务,这样,通过执行步骤310可以确定若干个第一目标任务(为了便于说明,后续均假设第一目标任务的数量为N个)。
需要说明的是,任一第一目标任务与对应的第一版本模型文件之间的关系可以理解为:通过该第一版本模型文件的运行,可以完成该第一目标任务,并且,在该第一版本模型文件的运行状态下,该第一版本模型文件对神经网络加速器的计算资源的占用比例是一个预定占用比例。
可选地,任一预定占用比例可以为大于0%且小于100%的任意比例,例如为30%、40%、60%等;不同第一版本模型文件对应的预定占用比例可以相同或者不同;神经网络加速器的计算资源可以是指神经网络加速器中的计算部件的计算资源,例如图1中的L1 SRAM的计算资源。
步骤320,基于第一版本模型文件的状态信息组以及预定占用比例,将满足预设并发执行条件的第一目标任务的集合确定为第一任务组,第一版本模型文件的状态信息组包括:第一版本模型文件在运行状态下,神经网络加速器的各个功能单元分别对应的状态。
在通过执行步骤310确定N个第一目标任务之后,可以针对N个第一目标任务中的每个第一目标任务对应的第一版本模型文件,确定对应的状态信息组和预定占用比例,由此可以得到N个状态信息组和N个预定占用比例;其中,任一第一版本模型文件对应的状态信息组中,任一功能单元对应的状态可以用于表征该第一版本模型文件在运行状态下,该功能单元是否被使用。参考N个状态信息组和N个预定占用比例,可以确定N个第一目标任务中的哪些第一目标任务满足预设并发执行条件,由此可以确定第一任务组。
在一个例子中,N个第一目标任务具体为4个第一目标任务,分别是任务1至任务4,且仅任务1、任务3、任务4三者满足预设并发执行条件,则可以将任务1、任务3、任务4三者组成的集合确定为一个第一任务组。
在另一个例子中,N个第一目标任务具体为6个第一目标任务,分别是任务1至任务6,且任务1至任务3三者满足预设并发执行条件,任务4至任务6三者满足预设并发执行条件,则可以将任务1至任务3三者组成的集合确定为一个第一任务组,并将任务4至任务6三者组成的集合确定为另一个第一任务组。
步骤330,并发运行第一任务组中的各个第一目标任务分别对应的第一版本模型文件。
如果第一任务组的数量为一个,且这个第一任务组为任务1、任务3、任务4三者组成的集合,则可以通过神经网络加速器并发运行任务1、任务3、任务4分别对应的第一版本模型文件,由此实现神经网络加速器对任务1、任务3、任务4的并行处理。
如果第一任务组的数量为两个,且其中一个第一任务组为任务1至任务3三者组成的集合,另一个第一任务组为任务4至任务6三者组成的集合,则可以先通过神经网络加速器并发运行任务1、任务2、任务3分别对应的第一版本模型文件,由此实现神经网络加速器对任务1、任务2、任务3的并行处理,然后通过神经网络加速器并发运行任务4、任务5、任务6分别对应的第一版本模型文件,由此实现神经网络加速器对任务4、任务5、任务6的并行处理。当然,根据实际情况,也可以先通过神经网络加速器并发运行任务4、任务5、任务6分别对应的第一版本模型文件,然后通过神经网络加速器并发运行任务1、任务2、任务3分别对应的第一版本模型文件。
本公开的实施例中,可以基于第一版本模型文件的状态信息组,以及第一版本模型文件在运行状态下对神经网络加速器的计算资源的预定占用比例,确定第一任务组,且并发运行第一任务组中的各个第一目标任务分别对应的第一版本模型文件,这样相当于通过任务调度机制,实现了神经网络加速器对多个任务的并行处理,从而能够提升神经网络加速器的运算效率,以较好地满足实际需求。
在一个可选示例中,多个第一目标任务满足预设并发执行条件包括以下至少一者:
(1)多个第一目标任务中的各个第一目标任务分别对应的状态信息组所组成的信息集合中,对应于任一功能单元的所有状态中:一个状态为使用状态,剩余状态均为空闲状态;或者,各个状态均为空闲状态;
(2)多个第一目标任务中的各个第一目标任务分别对应的预定占用比例的和值小于预设比例。
可选地,预设比例可以为100%。
需要说明的是,任一第一目标任务对应的状态信息组中,任一功能单元对应的状态可以为以下两者中的一者:使用状态、空闲状态;其中,使用状态可以用shared表示,空闲状态可以用available表示。
在一个例子中,神经网络加速器中包括3个功能单元,分别是Tensor Core、Vectorcore、DSU,N个第一目标任务具体为4个第一目标任务,分别是任务1至任务4,且任务1至任务4各自对应的状态信息组如下:
任务1:Tensor Core-shared、Vector core-available、DSU-available
任务2:Tensor Core-shared、Vector core-shared、DSU-shared
任务3:Tensor Core-available、Vector core-shared、DSU-available
任务4:Tensor Core-available、Vector core-available、DSU-shared
其中,如“A-shared”的形式表示A这个功能单元对应的状态为使用状态,“B-available”的形式表示B这个功能单元对应的状态为空闲状态。
容易看出,任务1、任务3、任务4三者中仅任务1一者对应于Tensor Core的状态为使用状态,另外两者对应于Tensor Core的状态均为空闲状态;任务1、任务3、任务4三者中仅任务3一者对应于Vector core的状态为使用状态,另外两者对应于Vector core的状态均为空闲状态;任务1、任务3、任务4三者中仅任务4一者对应于DSU的状态为使用状态,另外两者对应于DSU的状态均为空闲状态。那么,对于任务1、任务3、任务4三者,上述(1)中限定的条件满足。与此同时,假设任务1至任务4分别对应的预定占用比例依次为30%、30%、25%、35%,很明显,任务1、任务3、任务4三者对应的三个预定占用比例的和值小于100%,那么,对于任务1、任务3、任务4三者,上述(2)中限定的条件也满足,由此可以确定任务1、任务3、任务4三者满足预设并发执行条件。这样,可以在通过Tensor Core的使用实现任务1的同时,通过Vector core的使用实现任务3,并通过DSU的使用实现任务4,也即,神经网络加速器在同一时刻可以执行任务1、任务3、任务4三者。
需要说明的是,在对于任务1、任务3、任务4三者,上述(1)中限定的条件满足的情况下,假设任务1至任务4分别对应的预定占用比例依次为40%、25%、50%、65%,很明显,任务1、任务3、任务4三者对应的三个预定占用比例的和值大于100%,任务1和任务4两者对应的两个预定占用比例的和值大于100%,任务3和任务4两者对应的两个预定占用比例的和值大于100%,任务1和任务3两者对应的两个预定占用比例的和值小于100%,也即,对于任务1和任务3两者而言,上述(2)中限定的条件满足,由此可以确定任务1和任务3两者满足预设并发执行条件。这样,可以在通过Tensor Core的使用实现任务1的同时,通过Vectorcore的使用实现任务3,也即,神经网络加速器在同一时刻可以执行任务1和任务3两者。
假设上述例子中的N个第一目标任务不是4个第一目标任务,而是5个第一目标任务,例如除了包括上述的任务1至任务4之外,还包括任务5,任务5对应的预定占用比例为30%,任务5对应的状态信息组如下:
任务5:Tensor Core-shared、Vector core-shared、DSU-available
假设任务1至任务4分别对应的预定占用比例依次为40%、25%、50%、65%,容易看出,任务1和任务3两者满足预设并发执行条件,并且,由于任务4和任务5中仅一者对应于Tensor Core的状态为使用状态,任务4和任务5中仅一者对应于Vector core的状态为使用状态,任务4和任务5中仅一者对应于DSU的状态为使用状态,且任务4和任务5两者对应的两个预定占用比例的和值为95%,小于100%,可以判定任务4和任务5也满足预设并发执行条件,这样,可以将任务1和任务3划分至一个第一任务组中,将任务4和任务5划分至另一第一任务组中,由此可以确定出两个第一任务组。
本公开的实施例中,通过上述(1)中限定的条件,针对神经网络加速器中的每个功能单元,同一时刻第一任务组中至多有一个第一目标任务使用该功能单元,由此可以避免第一任务组中的不同第一目标任务同时使用同一功能单元,从而避免功能单元的使用冲突;通过上述(2)中限定的条件,可以保证神经网络加速器的计算资源能够支持第一任务组中的各个第一目标任务的并行处理,从而保证通过并行处理,成功完成第一任务组中的各个第一目标任务,由此可以提升神经网络加速器中的计算部件的利用率。
在图3所示实施例的基础上,如图4所示,该方法还包括步骤301、步骤303、步骤305和步骤307。
步骤301,获取任务队列,任务队列中的各个任务分别对应一个神经网络模型。
可选地,任务队列可以为图5-1中的BPU Task Queue。
可以理解的是,神经网络模型可以认为是算子单元序列,也即,神经网络模型中可以包括按照一定顺序排列的多个(例如40个、50个、100个等)算子单元;其中,多个算子单元包括但不限于卷积(Convolution,Conv)算子单元、池化(Pooling,Pool)算子单元、反卷积算子单元、修正线性单元(Rectified Linear Unit,ReLU)算子单元、批归一化(BatchNormalization,BN)算子单元等。
需要说明的是,任务队列中的任一任务与对应的神经网络模型之间的关系可以理解为:该任务需要依赖于该神经网络模型完成,例如,该任务为目标检测任务,该神经网络模型为用于目标检测的模型,则通过将待进行目标检测的图像作为输入提供给该神经网络模型进行运算处理,并得到该神经网络模型输出的目标检测结果,才能认为完成了该任务。
步骤303,确定第二目标任务对应的目标神经网络模型是否存在对应的划分方式信息,第二目标任务为任务队列中的任一任务;响应于目标神经网络模型存在对应的划分方式信息,执行步骤305;响应于目标神经网络模型不存在对应的划分方式信息,执行步骤307。
可选地,目标存储区中可以存储有神经网络模型与划分方式信息之间的对应关系,目标存储区存储的对应关系的由来可以参照下文中编译阶段的相关说明,在此不做展开介绍。
在步骤303中,可以对目标存储区中存储的对应关系进行遍历。如果通过遍历,确定目标存储区中存储的对应关系中存在目标神经网络模型对应的划分方式信息,则可以执行步骤305;如果通过遍历,确定目标存储区中存储的对应关系中不存在目标神经网络模型对应的划分方式信息,则可以执行步骤307。
步骤305,对第二目标任务进行划分,得到K个划分任务,并将K个划分任务添加至任务调度表中;K个划分任务与按照目标神经网络模型对应的划分方式信息,对目标神经网络模型进行划分得到的K个算子组对应。
可选地,任务调度表可以为图5-1中的Task Scheduler。
需要说明的是,目标神经网络模型对应的划分方式信息可以用于将目标神经网络模型划分为K个算子组,每个算子组中包括目标神经网络模型中的至少一个算子单元。这样,可以基于目标神经网络模型对应的划分方式信息,对第二目标任务进行划分,以得到与K个算子组一一对应的K个划分任务。可选地,K可以为2、3、4或者大于4的整数,在此不再一一列举。
步骤307,将第二目标任务添加至任务调度表中。
步骤310,包括步骤3101。
步骤3101,从任务调度表中,确定存在对应第一版本模型文件的第一目标任务。
在步骤3101中,可以对任务调度表中的所有任务进行遍历,以确定这些任务中的哪些任务具有对应的第一版本模型文件,之后可以将具有对应的第一版本模型文件的每个任务分别作为一个第一目标任务。
在一个例子中,第二目标任务为图5-2中的Task1,目标神经网络模型包括5个算子单元,依次为Convolution1、Pooling1、Convolution2、Pooling2、Convolution3,则可以对Task1进行划分,得到5个划分任务,分别是Task1.1、Task1.2、Task1.3、Task1.4、Task1.5;其中,Task1.1与Convolution1对应,Task1.2与Pooling1对应,Task1.3与Convolution2对应、Task1.4与Pooling2对应、Task1.5与Convolution3对应。假设各个Convolution均执行在Tensor Core上,各个Pooling均执行在Vector core上,则Task1执行时需要运用TensorCore和Vector core,Task1.1执行时需要运用Tensor Core,Task1.2执行时需要运用Vector core,Task1.3执行时需要运用Tensor Core,Task1.4执行时需要运用Vectorcore,Task1.5执行时需要运用Vector core,很明显,Task1.1至Task1.5中的任一者执行时需要运用的功能单元均少于Task1执行时需要运用的功能单元。
这样,只要Task1.1和Task1.2后续可以分别作为一个第一目标任务,且Task1.1和Task1.2两者对应的两个预定占用比例的和值小于100%,神经网络加速器就可以对Task1.1和Task1.2两者进行并行处理,由此可以提升神经网络加速器的运算效率。类似地,只要Task1.3和Task1.4后续可以分别作为一个第一目标任务,且Task1.3和Task1.4两者对应的两个预定占用比例的和值小于100%,神经网络加速器就可以对Task1.3和Task1.4两者进行并行处理。
本公开的实施例中,可以依据任务队列中的第二目标任务对应的神经网络模型是否存在对应的划分方式信息,确定是直接将第二目标任务添加至任务调度表中,还是将对第二目标任务进行划分得到的K个划分任务添加至任务调度表中,这样,对于存在对应的划分方式信息的任务,通过划分处理,可以得到相比于该任务细粒度更小的若干个划分任务,每个划分任务执行时需要运用的功能单元相对更少,由此可以提高任务调度表中的不同任务可并行处理的概率,从而有利于提升神经网络加速器的运算效率。
在图4所示实施例的基础上,如图6所示,该方法还包括步骤340和步骤350。
步骤340,确定第二任务组,第二任务组包括:任务调度表中除第一任务组中的各个第一目标任务之外的第三目标任务的集合。
在步骤340中,可以对任务调度表中的所有任务进行遍历,以确定任务调度表中的哪些任务不位于第一任务组中,这些任务中的每个任务可以分别作为第一第三目标任务,所有第三目标任务组成的集合可以作为第二任务组。
步骤350,按照预设顺序运行第二任务组中的各个第三目标任务分别对应的第二版本模型文件,第二版本模型文件在运行状态下完整占用计算资源。
需要说明的是,任一第三目标任务与对应的第二版本模型文件之间的关系可以理解为:通过该第二版本模型文件的运行,可以完成该第三目标任务,并且,在该第二版本模型文件的运行状态下,该第二版本模型文件对神经网络加速器的计算资源的占用比例是100%。
可选地,任一第二版本模型文件可以具有状态信息组,并且,任一第二版本模型的状态信息组包括:该第二版本模型文件在运行状态下,神经网络加速器的各个功能单元分别对应的状态,且该状态信息组中的各个状态均为独占状态;其中,独占状态可以用exclusive表示。
在步骤350中,可以确定第二任务组中的各个第三目标任务分别添加至任务调度表中的时间,并按照添加时间由早至晚的顺序,通过神经网络加速器依次运行第二任务组中的各个第三目标任务分别对应的第二版本模型文件,由此可以实现第二任务组中的各个第三目标任务的串行处理。
本公开的实施例中,对于任务调度表中无法并行处理的那部分任务,可以通过神经网络加速器对这部分任务进行串行处理,这样,任务调度表中的所有任务均能够被成功处理,不会造成任务的遗漏。
在一个例子中,如图5-1所示,任务队列中存在三个任务,分别是Task1、Task2、Task3,Task1对应的神经网络模型为model1,Task2对应的神经网络模型为model2,Task3对应的神经网络模型为model3,model1不存在对应的划分方式信息,model2存在对应的划分方式信息且该划分方式信息用于将model2划分为算子组1和算子组2,model3存在对应的划分方式信息且该划分方式信息用于将model3划分为算子组3和算子组4。那么,无需对Task1进行划分,且需要对Task2进行划分,以得到Task2.1和Task2.2,并需要对Task3进行划分,以得到Task3.1和Task3.2;其中,Task2.1与算子组1对应,Task2.2与算子组2对应,Task3.1与算子组3对应,Task3.2与算子组4对应。Task1、Task2.1、Task2.2、Task3.1、Task3.2均需要添加至Task Scheduler中。
假设神经网络加速器中包括2个功能单元,分别是Tensor Core、Vector core,Task1、Task2.1、Task3.1均不存在对应的第一版本模型文件,而仅存在对应的第二版本模型文件,而Task2.2、Task3.2均存在对应的第一版本模型文件,则Task Scheduler中还可以添加有Task1、Task2.1、Task3.1分别对应的第二版本模型文件的状态信息组,以及Task2.2、Task3.2分别对应的第一版本模型文件的状态信息组,Task Scheduler中添加的内容具体可以参见图5-1;其中,如“A_exclusive”的形式表示A这个功能单元对应的状态为独占状态,如“B_available”的形式表示B这个功能单元对应的状态为空闲状态,如“C_shared”的形式表示C这个功能单元对应的状态为使用状态。
由于Task1、Task2.1、Task3.1均不存在对应的第一版本模型文件,Task1、Task2.1、Task3.1均不能作为第一目标任务,而仅能分别作为一个第三目标任务,这样,Task1、Task2.1、Task3.1中的任一者均无法与其他任务并行处理,而只能分别单独处理。由于Task2.2和Task3.2两者中仅一者对应于Tensor Core的状态为使用状态,且Task2.2和Task3.2两者中仅一者对应于Vector core的状态为使用状态,如果Task2.2和Task3.2各自对应的第一版本模型文件所对应的预定占用比例的和值小于100%,则可以确定Task2.2和Task3.2两者满足预设并发执行条件,那么,神经网络加速器可以先并行处理Task2.2和Task3.2,然后再串行处理Task1、Task2.1、Task3.1,由此实现对Task Scheduler中的所有任务的处理。
本公开实施例提供的任一种任务调度执行方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种任务调度执行方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种任务调度执行方法。下文不再赘述。
图7是本公开一示例性实施例提供的任务调度执行指令的生成方法的流程示意图。图7所示的方法包括步骤710、步骤720和步骤730,下面分别对各步骤进行说明。
步骤710,通过编译处理,生成第一算子组对应的第一版本模型文件,第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源。
可选地,可以将一个完整的神经网络模型作为第一算子组,或者,可以将一个完整的神经网络模型中连续若干个算子单元组成的集合作为第一算子组;第一算子组的数量可以为多个,多个第一算子组中的每个第一算子组可以对应上文中的一个第一目标任务。
在步骤710中,可以通过编译器后端进行编译处理,以生成各个第一算子组分别对应的第一版本模型文件,具体编译处理方式可以根据实际需求采用任意可实施的方式,本公开对此不做赘述。
步骤720,基于第一算子组对应的功能单元组,生成第一版本模型文件的状态信息组,第一算子组对应的功能单元组包括:神经网络加速器的用于供第一算子组运行的各个功能单元,第一版本模型文件的状态信息组包括:第一版本模型文件在运行状态下,神经网络加速器的各个功能单元分别对应的状态。
在步骤720中,可以先确定第一算子组对应的功能单元组,假设神经网络加速器中包括3个功能单元,分别是Tensor Core、Vector core、DSU,第一算子组运行时需要用到Tensor Core和Vector core,则第一算子组对应的功能单元组中包括Tensor Core和Vector core。接下来,可以参考第一算子组对应的功能单元组,生成第一版本模型文件的状态信息组,第一版本文件的状态信息组中,任一功能单元对应的状态可以用于表征该第一版本模型文件在运行状态下,该功能单元是否被使用。
步骤730,基于第一版本模型文件、第一版本模型文件的状态信息组,以及预定占用比例,生成任务调度执行指令,任务调度执行指令用于任务调度执行方法(其具体为图3所示实施例中的任务调度执行方法)。
本公开的实施例中,在编译阶段,可以依次执行第一版本模型文件的生成步骤,第一版本模型文件的状态信息组的生成步骤,再结合第一版本模型文件对应的预定占用比例,可以进行任务调度执行指令的生成,这样,在执行阶段,通过执行编译阶段生成的任务调度执行指令,可以依次确定第一目标任务和第一任务组,以便并发运行第一任务组中的各个第一目标任务分别对应的第一版本模型文件,这样相当于通过任务调度机制,实现了神经网络加速器对多个任务的并行处理,从而能够提升神经网络加速器的运算效率,以较好地满足实际需求。
在图7所示实施例的基础上,将神经网络加速器的任一功能单元作为目标功能单元,如图8所示,步骤720包括步骤7201和步骤7203。
步骤7201,响应于目标功能单元位于第一算子组对应的功能单元组中,确定第一版本模型文件的状态信息组中目标功能单元对应的状态为使用状态。
步骤7203,响应于目标功能单元不位于第一算子组对应的功能单元组中,确定第一版本模型文件的状态信息组中目标功能单元对应的状态为空闲状态。
在一个例子中,神经网络加速器中包括3个功能单元,分别是Tensor Core、Vectorcore、DSU,第一算子组对应的功能单元组中包括Tensor Core和Vector core,由于TensorCore和Vector core均位于第一算子组对应的功能单元组中,第一版本模型文件的状态信息组中Tensor Core和Vector core分别对应的状态可以均为使用状态,又由于DSU不位于第一算子组对应的功能单元组中,第一版本模型文件的状态信息组中DSU对应的状态可以为空闲状态,这样,第一版本模型文件的状态信息组可以表示为如下形式:Tensor Core-shared、Vector core-shared、DSU-available。
本公开的实施例中,参考目标功能单元在第一算子组对应的功能单元组中存在与否,能够高效可靠地确定目标功能单元对应于神经网络加速器中的各个功能单元分别为何种状态,由此可以高效可靠地生成第一版本模型文件的状态信息组。
在图7所示实施例的基础上,如图9所示,在步骤710之前,该方法还包括步骤701和步骤703。
步骤701,在神经网络模型中的各个算子单元分别对应的功能单元组不完全相同的情况下,将该神经网络模型划分为分别对应不同功能单元组的K个算子组,并记录相应的划分方式信息,任一算子组对应的功能单元组包括:神经网络加速器的用于供该算子组运行的各个功能单元。
可选地,K可以为2、3、4或者大于4的整数,在此不再一一列举。
在步骤701中,可以先确定神经网络模型中的各个算子单元分别对应的功能单元组;其中,任一算子单元对应的功能单元组包括:神经网络加速器的用于供该算子单元运行的各个功能单元。接下来,可以将该神经网络模型中的各个算子单元分别对应的功能单元组进行比对,以确定该神经网络模型中的各个算子单元分别对应的功能单元组是否完全相同。
在该神经网络模型的各个算子单元分别对应的功能单元组完全相同的情况下,可以不对该神经网络模型进行划分,该神经网络模型自然也不存在对应的划分方式信息。
在一个例子中,神经网络加速器中包括3个功能单元,分别是Tensor Core、Vectorcore、DSU,该神经网络模型为图5-1中的Task2对应的神经网络模型,也即,该神经网络模型包括的各个算子单元对应的功能单元组均仅包括Tensor Core,那么,可以不对该神经网络模型进行划分,这样,在执行阶段,Task2整体可以运行在Tensor Core上。与Task2类似,在执行阶段,图5-1中的Task3整体可以运行在Vector core上。
在该神经网络模型中的各个算子单元分别对应的功能单元组不完全相同的情况下,可以将该神经网络模型划分为分别对应不同功能单元组的K个算子组,并记录相应的划分方式信息。
在一个例子中,神经网络加速器中包括3个功能单元,分别是Tensor Core、Vectorcore、DSU,该神经网络模型包括30个算子单元,其中,前10个算子单元对应的功能单元组中包括Tensor Core、Vector core,中间10个算子单元对应的功能单元组中包括Vector core和DSU,后10个算子单元对应的功能单元组中包括Tensor Core、Vector core、DSU,那么,可以将该神经网络模型划分为3个算子组;其中,第1个算子组中包括该神经网络模型包括的30个算子单元中的前10个算子单元,第2个算子组中包括该神经网络模型包括的30个算子单元中的中间10个算子单元,第3个算子组中包括该神经网络模型包括30个算子单元中的后10个算子单元,针对该神经网络模型记录的划分方式信息可以用于表征将该神经网络模型包括的30个算子单元平均划分为3份。或者,也可以将该神经网络模型划分为2个算子组;其中,第1个算子组中包括该神经网络模型包括的30个算子单元中的前10个算子单元,第2个算子组中包括该神经网络模型包括的30个算子单元中的剩余20个算子单元,针对该神经网络模型记录的划分方式信息可以用于表征将该神经网络模型包括的30个算子单元按照1:2的比例划分。需要说明的是,在针对该神经网络模型进行划分方式信息的记录之后,还可以在目标存储区中记录该神经网络模型与该划分方式信息之间的对应关系。
步骤703,将K个算子组中的至少部分算子组中的各个算子组分别作为一个第一算子组。
可选地,可以将K个算子组中的各个算子组分别作为一个第一算子组。
步骤730,包括:
步骤7301,分别针对各个第一算子组,基于该第一算子组对应的第一版本模型文件、该第一算子组对应的第一版本模型文件的状态信息组、该第一算子组对应的预定占用比例,以及划分方式信息,生成任务调度执行指令,任务调度执行指令用于执行任务调度执行方法(其具体为图4所示实施例中的任务调度执行方法)。
通过执行步骤7301,可以针对每个第一算子组,分别生成对应的任务调度执行指令。
本公开的实施例中,对于神经网络模型中的各个算子单元分别对应的功能单元组不完全相同的情况下,可以参照各个算子单元分别对应的功能单元组,针对该神经网络模型进行划分,以使得划分得到的不同算子组对应不同功能单元组,并进行划分方式信息的记录,这样,在执行阶段,可以参考目标存储区中存储的对应关系,确定是直接将第二目标任务添加至任务调度表中,还是对第二目标任务进行划分后再添加至任务调度表中,通过任务的划分处理,有利于提高任务调度表中的不同任务可并行处理的概率。
在图9所示实施例的基础上,如图10所示,该方法还包括步骤711。
步骤711,通过编译处理,生成各个第一算子组分别对应的第二版本模型文件,第二版本模型文件在运行状态下完整占用计算资源。
在步骤711中,可以通过编译器后端进行编译处理,以生成各个第一算子组分别对应的第二版本模型文件,具体编译处理方式可以根据实际需求采用任意可实施的方式,本公开对此不做赘述。
步骤7301,包括步骤73011。
步骤73011,分别针对各个第一算子组,基于该第一算子组对应的第一版本模型文件、该第一算子组对应的第一版本模型文件的状态信息组、该第一算子组对应的预定占用比例、划分方式信息,以及该第一算子组对应的第二版本模块文件,生成任务调度执行指令,任务调度执行指令用于执行任务调度执行方法(其具体为图6所示实施例中的任务调度执行方法)。
本公开的实施例中,通过生成各个第一算子组分别对应的第二版本模型文件,并将所生成的第二版本模型文件用于任务调度执行指令的生成,在执行阶段,对于任务调度表中无法并行处理的那部分任务,可以通过神经网络加速器对这部分任务进行串行处理,以保证这部分任务能够被成功处理,这样,任务调度表中的所有任务均能够被成功处理。
在一个可选示例中,在编译阶段,可以针对多个算子组中的每个算子组(例如上文中的每个第一算子组),进行多版本模型文件的编译,以生成用于实现相同功能的第一版本模型文件和第二版本模型文件;其中,第一版本模型文件按照预定占用比例占用L1 SRAM,第二版本模型文件占用全部的L1 SRAM。
需要说明的是,第一版本模型文件和第二版本模型文件均可以具有对应的状态信息组,每个状态信息组中均包括神经网络加速器的各个功能单元分别对应的状态,任一功能单元对应的状态有三种可能的情况,分别是:exclusive、shared、available;其中,exclusive表示算子组需要独占全部的L1 SRAM;available表示算子组无需使用该功能单元,且算子组仅占用部分L1 SRAM;shared表示算子组需要使用该功能单元,且可以共享除了自身需要使用的功能单元之外的功能单元,算子组仅占用部分L1 SRAM。
这样,在执行阶段,参考第一版本模型文件的状态信息组以及第一版本模型文件对应的预定占用比例,能够高效可靠地确定哪些任务满足预设并发执行条件,之后可以对这些任务进行并行处理,从而提升神经网络加速器的运算效率,对于无法并行处理的任务,可以对这部分任务进行串行处理。
本公开实施例提供的任一种任务调度执行指令的生成方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种任务调度执行指令的生成方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种任务调度执行指令的生成方法。下文不再赘述。
示例性装置
图11是本公开一示例性实施例提供的任务调度执行装置的结构示意图。图11所示的装置包括第一确定模块1110、第二确定模块1120和第一运行模块1130。
第一确定模块1110,用于确定存在对应第一版本模型文件的第一目标任务,第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
第二确定模块1120,用于基于第一版本模型文件的状态信息组以及预定占用比例,将满足预设并发执行条件的第一确定模块1110确定的第一目标任务的集合确定为第一任务组,第一版本模型文件的状态信息组包括:第一版本模型文件在运行状态下,神经网络加速器的各个功能单元分别对应的状态;
第一运行模块1130,用于并发运行第二确定模块1120确定的第一任务组中的各个第一目标任务分别对应的第一版本模型文件。
在一个可选示例中,多个第一目标任务满足预设并发执行条件包括以下至少一者:
多个第一目标任务中的各个第一目标任务分别对应的状态信息组所组成的信息集合中,对应于任一功能单元的所有状态中:一个状态为使用状态,剩余状态均为空闲状态;或者,各个状态均为空闲状态;
多个第一目标任务中的各个第一目标任务分别对应的预定占用比例的和值小于预设比例。
在一个可选示例中,如图12所示,该装置还包括:
获取模块1101,用于获取任务队列,任务队列中的各个任务分别对应一个神经网络模型;
第三确定模块1103,用于确定第二目标任务对应的目标神经网络模型是否存在对应的划分方式信息,第二目标任务为获取模块1101获取的任务队列中的任一任务;
第一处理模块1105,用于响应于第三确定模块1103确定出目标神经网络模型存在对应的划分方式信息,对第二目标任务进行划分,得到K个划分任务,并将K个划分任务添加至任务调度表中;K个划分任务与按照目标神经网络模型对应的划分方式信息,对目标神经网络模型进行划分得到的K个算子组对应;
第二处理模块1107,用于响应于第三确定模块1103确定出目标神经网络模型不存在对应的划分方式信息,将第二目标任务添加至任务调度表中;
第一确定模块1110,具体用于:
从任务调度表中,确定存在对应第一版本模型文件的第一目标任务。
在一个可选示例中,如图12所示,该装置还包括:
第四确定模块1140,用于确定第二任务组,第二任务组包括:任务调度表中除第二确定模块1120确定的第一任务组中的各个第一目标任务之外的第三目标任务的集合;
第二运行模块1150,用于按照预设顺序运行第四确定模块1140确定的第二任务组中的各个第三目标任务分别对应的第二版本模型文件,第二版本模型文件在运行状态下完整占用计算资源。
图13是本公开一示例性实施例提供的任务调度执行指令的生成装置的结构示意图。图13所示的装置包括第一生成模块1310、第二生成模块1320和第三生成模块1330。
第一生成模块1310,用于通过编译处理,生成第一算子组对应的第一版本模型文件,第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
第二生成模块1320,用于基于第一算子组对应的功能单元组,生成第一生成模块1310生成的第一版本模型文件的状态信息组,第一算子组对应的功能单元组包括:神经网络加速器的用于供第一算子组运行的各个功能单元,第一版本模型文件的状态信息组包括:第一版本模型文件在运行状态下,神经网络加速器的各个功能单元分别对应的状态;
第三生成模块1320,用于基于第一生成模块1310生成的第一版本模型文件、第二生成模块1320生成的第一版本模型文件的状态信息组,以及预定占用比例,生成任务调度执行指令,任务调度执行指令用于执行上述图3所示实施例中的任务调度执行方法。
在一个可选示例中,将神经网络加速器的任一功能单元作为目标功能单元,如图14所示,第二生成模块1320,包括:
第一确定子模块13201,用于响应于目标功能单元位于第一算子组对应的功能单元组中,确定第一生成模块1310生成的第一版本模型文件的状态信息组中目标功能单元对应的状态为使用状态;
第二确定子模块13203,用于响应于目标功能单元不位于第一算子组对应的功能单元组中,确定第一生成模块1310生成的第一版本模型文件的状态信息组中目标功能单元对应的状态为空闲状态。
在一个可选示例中,
如图14所示,该装置还包括:
第三处理模块1301,用于在通过编译处理,生成第一算子组对应的第一版本模型文件之前,在神经网络模型中的各个算子单元分别对应的功能单元组不完全相同的情况下,将该神经网络模型划分为分别对应不同功能单元组的K个算子组,并记录相应的划分方式信息,任一算子组对应的功能单元组包括:神经网络加速器的用于供该算子组运行的各个功能单元;
第五确定模块1303,用于将第三处理模块1301划分得到的K个算子组中的至少部分算子组中的各个算子组分别作为一个第一算子组;
第三生成模块1320,具体用于:
分别针对第五确定模块1303确定的各个第一算子组,基于该第一算子组对应的第一版本模型文件、该第一算子组对应的第一版本模型文件的状态信息组、该第一算子组对应的预定占用比例,以及划分方式信息,生成任务调度执行指令,任务调度执行指令用于执行上述图4所示实施例中的任务调度执行方法。
在一个可选示例中,
如图14所示,该装置还包括:
第四生成模块1311,用于通过编译处理,生成第五确定模块1303确定的各个第一算子组分别对应的第二版本模型文件,第二版本模型文件在运行状态下完整占用计算资源;
第三生成模块1320,具体用于:
分别针对第五确定模块1303确定的各个第一算子组,基于该第一算子组对应的第一版本模型文件、该第一算子组对应的第一版本模型文件的状态信息组、该第一算子组对应的预定占用比例、划分方式信息,以及该第一算子组对应的第二版本模块文件,生成任务调度执行指令,任务调度执行指令用于执行上述图6所示实施例中的任务调度执行方法。
示例性电子设备
下面,参考图15来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
图15图示了根据本公开实施例的电子设备的框图。
如图15所示,电子设备1500包括一个或多个处理器1510和存储器1520。
处理器1510可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1500中的其他组件以执行期望的功能。
存储器1520可以包括一个或多个计算机程序产品,所述计算机程序产品可包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1510可以运行所述程序指令,以实现上文所述的本公开的各个实施例的任务调度执行方法、任务调度执行指令的生成方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备1500还可以包括:输入装置1530和输出装置1540,这些组件通过总线***和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是第一设备或第二设备时,该输入装置1530可以是麦克风或麦克风阵列。在该电子设备是单机设备时,该输入装置1530可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
此外,该输入装置1530还可以包括例如键盘、鼠标等等。
该输出装置1540可以向外部输出各种信息,包括距离信息、方向信息等。该输出装置1540可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图15中仅示出了该电子设备1500中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备1500还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的任务调度执行方法或者任务调度执行指令的生成方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的任务调度执行方法或者任务调度执行指令的生成方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于***实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、***的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、***。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (12)

1.一种任务调度执行方法,包括:
确定存在对应第一版本模型文件的第一目标任务,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
基于所述第一版本模型文件的状态信息组以及所述预定占用比例,将满足预设并发执行条件的所述第一目标任务的集合确定为第一任务组,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
并发运行所述第一任务组中的各个所述第一目标任务分别对应的所述第一版本模型文件。
2.根据权利要求1所述的方法,其中,多个所述第一目标任务满足所述预设并发执行条件包括以下至少一者:
多个所述第一目标任务中的各个所述第一目标任务分别对应的所述状态信息组所组成的信息集合中,对应于任一所述功能单元的所有状态中:一个状态为使用状态,剩余状态均为空闲状态;或者,各个状态均为空闲状态;
多个所述第一目标任务中的各个所述第一目标任务分别对应的所述预定占用比例的和值小于预设比例。
3.根据权利要求1或2所述的方法,所述方法还包括:
获取任务队列,所述任务队列中的各个任务分别对应一个神经网络模型;
确定第二目标任务对应的目标神经网络模型是否存在对应的划分方式信息,所述第二目标任务为所述任务队列中的任一任务;
响应于所述目标神经网络模型存在对应的划分方式信息,对所述第二目标任务进行划分,得到K个划分任务,并将所述K个划分任务添加至任务调度表中;所述K个划分任务与按照所述目标神经网络模型对应的划分方式信息,对所述目标神经网络模型进行划分得到的K个算子组对应;
响应于所述目标神经网络模型不存在对应的划分方式信息,将所述第二目标任务添加至所述任务调度表中;
所述确定存在对应第一版本模型文件的第一目标任务,包括:
从所述任务调度表中,确定存在对应第一版本模型文件的所述第一目标任务。
4.根据权利要求3所述的方法,所述方法还包括:
确定第二任务组,所述第二任务组包括:所述任务调度表中除所述第一任务组中的各个所述第一目标任务之外的第三目标任务的集合;
按照预设顺序运行所述第二任务组中的各个所述第三目标任务分别对应的第二版本模型文件,所述第二版本模型文件在运行状态下完整占用所述计算资源。
5.一种任务调度执行指令的生成方法,包括:
通过编译处理,生成第一算子组对应的第一版本模型文件,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
基于所述第一算子组对应的功能单元组,生成所述第一版本模型文件的状态信息组,所述第一算子组对应的功能单元组包括:所述神经网络加速器的用于供所述第一算子组运行的各个功能单元,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
基于所述第一版本模型文件、所述第一版本模型文件的状态信息组,以及所述预定占用比例,生成任务调度执行指令,所述任务调度执行指令用于执行上述权利要求1或2所述的任务调度执行方法。
6.根据权利要求5所述的方法,其中,将所述神经网络加速器的任一所述功能单元作为目标功能单元,所述基于所述第一算子组对应的功能单元组,生成所述第一版本模型文件的状态信息组,包括:
响应于所述目标功能单元位于所述第一算子组对应的功能单元组中,确定所述第一版本模型文件的状态信息组中所述目标功能单元对应的状态为使用状态;
响应于所述目标功能单元不位于所述第一算子组对应的功能单元组中,确定所述第一版本模型文件的状态信息组中所述目标功能单元对应的状态为空闲状态。
7.根据权利要求5所述的方法,其中,
所述通过编译处理,生成第一算子组对应的第一版本模型文件之前,所述方法还包括:
在神经网络模型中的各个算子单元分别对应的功能单元组不完全相同的情况下,将该神经网络模型划分为分别对应不同功能单元组的K个算子组,并记录相应的划分方式信息,任一算子组对应的功能单元组包括:所述神经网络加速器的用于供该算子组运行的各个功能单元;
将所述K个算子组中的至少部分算子组中的各个所述算子组分别作为一个所述第一算子组;
所述基于所述第一版本模型文件、所述第一版本模型文件的状态信息组,以及所述预定占用比例,生成任务调度执行指令,所述任务调度执行指令用于执行上述权利要求1或2所述的任务调度执行方法,包括:
分别针对各个所述第一算子组,基于该第一算子组对应的所述第一版本模型文件、该第一算子组对应的所述第一版本模型文件的状态信息组、该第一算子组对应的所述预定占用比例,以及所述划分方式信息,生成任务调度执行指令,所述任务调度执行指令用于执行上述权利要求3所述的任务调度执行方法。
8.根据权利要求7所述的方法,还包括:
通过编译处理,生成各个所述第一算子组分别对应的第二版本模型文件,所述第二版本模型文件在运行状态下完整占用所述计算资源;
所述分别针对各个所述第一算子组,基于该第一算子组对应的所述第一版本模型文件、该第一算子组对应的所述第一版本模型文件的状态信息组、该第一算子组对应的所述预定占用比例,以及所述划分方式信息,生成任务调度执行指令,所述任务调度执行指令用于执行上述权利要求3所述的任务调度执行方法,包括:
分别针对各个所述第一算子组,基于该第一算子组对应的所述第一版本模型文件、该第一算子组对应的所述第一版本模型文件的状态信息组、该第一算子组对应的所述预定占用比例、所述划分方式信息,以及该第一算子组对应的所述第二版本模块文件,生成任务调度执行指令,所述任务调度执行指令用于执行上述权利要求4所述的任务调度执行方法。
9.一种任务调度执行装置,包括:
第一确定模块,用于确定存在对应第一版本模型文件的第一目标任务,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
第二确定模块,用于基于所述第一版本模型文件的状态信息组以及所述预定占用比例,将满足预设并发执行条件的所述第一确定模块确定的所述第一目标任务的集合确定为第一任务组,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
第一运行模块,用于并发运行所述第二确定模块确定的所述第一任务组中的各个所述第一目标任务分别对应的所述第一版本模型文件。
10.一种任务调度执行指令的生成装置,包括:
第一生成模块,用于通过编译处理,生成第一算子组对应的第一版本模型文件,所述第一版本模型文件在运行状态下按预定占用比例占用神经网络加速器的计算资源;
第二生成模块,用于基于所述第一算子组对应的功能单元组,生成所述第一生成模块生成的所述第一版本模型文件的状态信息组,所述第一算子组对应的功能单元组包括:所述神经网络加速器的用于供所述第一算子组运行的各个功能单元,所述第一版本模型文件的状态信息组包括:所述第一版本模型文件在运行状态下,所述神经网络加速器的各个功能单元分别对应的状态;
第三生成模块,用于基于所述第一生成模块生成的所述第一版本模型文件、所述第二生成模块生成的所述第一版本模型文件的状态信息组,以及所述预定占用比例,生成任务调度执行指令,所述任务调度执行指令用于执行上述权利要求1或2所述的任务调度执行方法。
11.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-4中任一所述的任务调度执行方法,或者用于执行上述权利要求5-8中任一所述的任务调度执行指令的生成方法。
12.一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-4中任一所述的任务调度执行方法,或者实现上述权利要求5-8中任一所述的任务调度执行指令的生成方法。
CN202211467576.XA 2022-11-22 2022-11-22 任务调度执行方法、任务调度执行指令的生成方法及装置 Pending CN115756794A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202211467576.XA CN115756794A (zh) 2022-11-22 2022-11-22 任务调度执行方法、任务调度执行指令的生成方法及装置
PCT/CN2023/120845 WO2024109312A1 (zh) 2022-11-22 2023-09-22 任务调度执行方法、任务调度执行指令的生成方法及装置
EP23864116.1A EP4398101A1 (en) 2022-11-22 2023-09-22 Task scheduling execution method, and generation method and apparatus for task scheduling execution instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211467576.XA CN115756794A (zh) 2022-11-22 2022-11-22 任务调度执行方法、任务调度执行指令的生成方法及装置

Publications (1)

Publication Number Publication Date
CN115756794A true CN115756794A (zh) 2023-03-07

Family

ID=85335042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211467576.XA Pending CN115756794A (zh) 2022-11-22 2022-11-22 任务调度执行方法、任务调度执行指令的生成方法及装置

Country Status (3)

Country Link
EP (1) EP4398101A1 (zh)
CN (1) CN115756794A (zh)
WO (1) WO2024109312A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024109312A1 (zh) * 2022-11-22 2024-05-30 北京地平线信息技术有限公司 任务调度执行方法、任务调度执行指令的生成方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0513045D0 (en) * 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
JP6040937B2 (ja) * 2011-05-19 2016-12-07 日本電気株式会社 並列処理装置、並列処理方法、最適化装置、最適化方法、および、コンピュータ・プログラム
CN111400010A (zh) * 2020-03-18 2020-07-10 中国建设银行股份有限公司 任务调度方法及装置
CN113760524A (zh) * 2020-11-17 2021-12-07 北京沃东天骏信息技术有限公司 任务执行方法和装置
CN113886034A (zh) * 2021-09-09 2022-01-04 深圳奥哲网络科技有限公司 任务调度方法、***、电子设备及存储介质
CN114661475A (zh) * 2022-03-31 2022-06-24 北京白海科技有限公司 一种用于机器学习的分布式资源调度方法及装置
CN115756794A (zh) * 2022-11-22 2023-03-07 北京地平线信息技术有限公司 任务调度执行方法、任务调度执行指令的生成方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024109312A1 (zh) * 2022-11-22 2024-05-30 北京地平线信息技术有限公司 任务调度执行方法、任务调度执行指令的生成方法及装置

Also Published As

Publication number Publication date
WO2024109312A1 (zh) 2024-05-30
EP4398101A1 (en) 2024-07-10

Similar Documents

Publication Publication Date Title
Ben-Nun et al. Groute: An asynchronous multi-GPU programming model for irregular computations
EP3667496B1 (en) Distributed computing system, data transmission method and device in distributed computing system
CN109947565B (zh) 用于分配计算任务的方法和装置
JPH08185325A (ja) コンパイラにおけるコード生成方法及びコンパイラ
CN112162854A (zh) 一种cpu-gpu间计算任务调度方法、***及介质
Luszczek Parallel programming in MATLAB
WO2024109312A1 (zh) 任务调度执行方法、任务调度执行指令的生成方法及装置
US20200320367A1 (en) Graph Conversion Method
Han et al. Parallel data intensive applications using MapReduce: a data mining case study in biomedical sciences
CN115481732A (zh) 通过人工智能加速器处理特征图的方法和装置
US9280382B1 (en) Parallel processing of multidimensional arrays
CN114924748A (zh) 编译方法、装置及设备
US9135065B1 (en) Parallel processing of multidimensional arrays
CN111124685A (zh) 大数据处理方法、装置、电子设备和存储介质
CN114239803B (zh) 神经网络模型的编译方法和装置、电子设备和存储介质
KR102267920B1 (ko) 매트릭스 연산 방법 및 그 장치
Neelima et al. Communication and computation optimization of concurrent kernels using kernel coalesce on a GPU
Langr et al. CPP11sort: A parallel quicksort based on C++ threading
CN113096642A (zh) 语音识别方法和装置、计算机可读存储介质、电子设备
Yıldız et al. Hyper‐heuristic method for processor allocation in parallel tasks scheduling
Biswas et al. An Efficient Reduced-Memory GPU-based Dynamic Programming Strategy for Bounded Knapsack Problems
Ara et al. Throughput-Buffering Trade-Off Analysis for Scenario-Aware Dataflow Models
CN117742928B (zh) 一种用于联邦学习的算法组件执行调度方法
US20240028392A1 (en) Batch computing system and associated method
US11775299B1 (en) Vector clocks for highly concurrent execution engines

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