CN111026518A - 任务调度方法 - Google Patents
任务调度方法 Download PDFInfo
- Publication number
- CN111026518A CN111026518A CN201811179192.1A CN201811179192A CN111026518A CN 111026518 A CN111026518 A CN 111026518A CN 201811179192 A CN201811179192 A CN 201811179192A CN 111026518 A CN111026518 A CN 111026518A
- Authority
- CN
- China
- Prior art keywords
- job
- task
- weight
- scheduled
- jobs
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种任务调度方法,根据任务的配置信息及处理器的状态信息,对任务进行调度,可以对任务进行高效合理的调度。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种任务调度方法。
背景技术
随着计算机技术的飞速发展,出现了诸如多核处理器计算机系统(Multi-coreprocessor Computing System)以及多个处理器的多处理器计算机系统(Multi-processorComputing System)。该计算机系统的多个核处理器或多个处理器可以形成主从结构,例如,多个处理器可以包括一个主处理器和多个从处理器,主处理器可以用于对待处理任务进行分配调度,还可以用于监控及控制各个从处理器的运行。但当待处理任务的任务量较大时,如需处理大规模的机器学习数据时,上述采用主处理器进行任务分配及调度的方式的效率较低,影响计算机系统的处理效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提供高效的任务调度方法。
一种任务调度方法,所述方法包括:
获取任务的分解信息和全部任务信息,以及处理器的状态信息;
根据各个所述任务的分解信息和全部任务信息,以及所述处理器的状态信息,分别将所述任务的各个作业与处理器进行匹配,并将与所述处理器匹配成功的所述作业添加至待调度作业集;
根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业,获得调度信息,所述调度信息用于确定所述作业在处理器上的执行顺序。
在其中一个实施例中,所述方法还包括:
若在预设时间内,所述任务中的一个以上的作业与所述处理器未匹配成功时,则获取所述任务的调度失败信号。
在其中一个实施例中,所述根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业的步骤,包括:
根据所述待调度作业集中各个所述作业的目标权重确定所述各个所述作业的调度优先级;
根据所述各个所述作业的调度优先级,将所述待调度作业集中调度优先级最高的作业作为所述目标作业。
在其中一个实施例中,所述待调度作业集的数量为一个以上时,每个所述待调度集存储同一作业类别的作业,所述根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业的步骤,包括:
根据每个待调度作业集中多个作业的期望权重和当前历史权重,确定每个所述待调度作业集中各个作业的目标权重;
将各个所述待调度作业集中目标权重最大的所述作业作为对应的作业类别的预发射作业;
根据各个所述预发射作业的目标权重确定所述目标作业。
在其中一个实施例中,所根据每个待调度作业集中多个作业的期望权重和当前历史权重,确定每个所述待调度作业集中各个作业的目标权重的步骤,包括:
根据每一所述待调度作业集中各个作业的配置权重,以及每一所述待调度作业集中多个作业的总配置权重,对应获得每一所述待调度作业集中各个作业的期望权重;
根据每一所述待调度作业集中各个所述作业的期望权重,获得每一所述待调度作业集中各个所述作业对应的当前历史权重;
计算每一所述待调度作业集中各个所述作业的期望权重和当前历史权重的权重差值,根据所述权重差值获得各个作业的目标权重。
在其中一个实施例中,每一所述待调度作业集中各个作业的配置权重为所述作业所属的任务的配置权重,所述作业的期望权重为所述作业所属的任务的期望权重。
在其中一个实施例中,所述根据每一所述待调度作业集中各个所述作业的期望权重,获得每一所述待调度作业集中各个所述作业对应的当前历史权重的步骤,包括:
根据每一所述待调度作业集中各个所述作业的期望权重确定各个所述作业对应的延迟因子;
根据每一所述待调度作业集中各个所述作业的初始历史权重和所述作业对应的延迟因子,获得所述作业的当前历史权重。
在其中一个实施例中,所述方法还包括:
若某一所述待调度作业集中新增同一所述任务的多个作业,或者同一所述任务的多个作业均被发射之后,更新所述某一待调度作业集中各个作业的期望权重和初始历史权重。
在其中一个实施例中,所述根据各个所述预发射作业的目标权重确定所述目标作业的步骤,包括:
若各个所述预发射作业的目标权重相同,则根据各个所述预发射作业的期望权重确定所述目标作业;
若各个所述预发射作业的目标权重不同时,则将目标权重最大的所述预发射作业作为所述目标作业。
在其中一个实施例中,所述方法还包括:
获取与匹配处理器成功的作业对应的处理器标识,所述处理器标识用于标识处理器的身份。
上述任务调度方法,首先根据任务的分解信息和全部任务信息,以及处理器的状态信息,为任务的各个作业匹配处理器,得到待调度作业集,保证了在调度完成后,分发至处理器的作业可以及时的被处理,之后再根据作业的目标从待调度作业集中选定目标作业,获取调度信息,可以保证权重高的作业抢占处理器资源,因此该任务调度方法可以提高处理器的处理效率。
附图说明
图1为一个实施例中任务调度装置的应用环境图;
图2为另一个实施例中任务调度装置的应用环境图;
图3为一个实施例中任务分解装置的应用环境图;
图4为另一个状态监控装置的应用环境图;
图5为一个实施例提供的一种计算装置的结构示意图;
图6为另一个实施例提供的计算装置的结构图;
图7为一个实施例提供的主处理电路的结构图;
图8为一个实施例提供的一种计算装置的结构图;
图9为一个实施例提供的另一种计算装置的结构图;
图10为一个实施例提供的树型模块的结构示意图;
图11为一个实施例提供的一种计算装置的结构图;
图12为一个实施例提供的一种计算装置的结构图;
图13为一个实施例提供的计算装置的结构图;
图14为一个实施例中提出的任务调度方法的步骤流程图;
图15为一个实施例中提出的确定目标作业的步骤流程图;
图16为另一个实施例中提出的确定目标作业的步骤流程图;
图17为一个实施例中提出的确定作业的目标权重的步骤流程图;
图18为一个实施例中提出的确定作业的当前历史权重的步骤流程图;
图19为一个实施例中提出的确定目标作业的步骤流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,任务调度装置100可以包括第一读写电路110、匹配电路120和选择电路130,第一读写电路110、匹配电路120和选择电路130依次电连接,选择电路130连接处理器。可选地,该处理器可以包括第一处理器200和/或第二处理器300。可选地,第一处理器200可以是CPU等通用处理器,第二处理器300可以作为第一处理器200的协处理器。任务调度装置100可以对任务的分解信息和全部任务信息进行处理,得到调度信息,该调度信息用于处理器确定需处理的作业,以及处理器需处理的多个作业的处理顺序。该调度信息可以包括为多个作业的作业标识,各作业对应的处理器身份信息,以及该多个作业被对应处理器处理的位次信息。
可选地,该第二处理器300可以包括第二处理器本体310以及用于控制第二处理器本体运行的控制装置320,第二处理器本体310可以是IPU(Intelligence ProcessingUnit,智能处理器)或NPU(Neural-network Process Unit,神经网络处理器)等人工智能处理器。当然,在其他实施例中,该第二处理器本体310也可以是CPU或GPU等通用处理器。可选地,多个第二处理器本体均连接至第二处理器本体的控制装置。或者,该第二处理器本体310也可以包括多个核处理器,各个核处理器均连接至所述第二处理器本体的控制装置。具体地,第一读写电路110用于在接收到任务的任务调度请求时,根据任务的任务调度请求,获取任务的分解信息和全部任务信息,以及处理器的状态信息。可选地,该第二读写控制电路可以为I/O电路。
匹配电路120用于根据各个任务的分解信息和全部任务信息,以及处理器的状态信息,分别将任务的各个作业与处理器进行匹配,并将与处理器匹配成功的作业添加至待调度作业集。其中,该待调度作业集可以包括多个任务的作业。进一步地,若在预设时间(如128节拍或256节拍)内,任务中的一个以上的作业与处理器未匹配成功时,则获取任务的调度失败信号。
具体地,匹配电路120可以根据任务的全部任务信息及任务分解信息,可以获得该任务的各个作业所需的处理器信息(如处理器类型等信息),根据各个作业的大小获得各个作业所需的处理器的处理能力等信息。处理器的处理器状态信息可以包括处理器的类型信息、处理器的运行状态信息(处理器是否空闲)以及处理器的处理能力等信息。这样,匹配电路120可以根据该任务的全部任务信息及任务分解信息,以及处理器状态信息,将任务的各个作业与处理器进行匹配。可选地,该匹配电路120可以由一个以上的比较器并联形成,每个比较器的输入数据可以是各个作业的分解信息和全部任务信息,以及处理器状态信息,比较器的输出数据可以是匹配成功或匹配失败的信号。进一步地,若作业与处理器匹配成功时,匹配电路还可以进一步获得与该作业匹配的处理器的处理器标识等信息,所述处理器标识用于标识处理器的身份(例如处理器编号等等)。
选择电路130用于根据待调度作业集中各个作业的目标权重从待调度作业集中选定目标作业,获得调度信息。具体地,任务调度装置100可以将该待调度作业集中的多个作业逐一发送至处理器进行处理,选择电路130根据待调度作业集中各个作业的目标权重确定当前进行调度的目标作业。其中,该待调度作业集中各个作业的目标权重可以计算获得,当然,该待调度作业集中各个作业的目标权重也可以是预先设置。
可选地,在一个实施例中,该选择电路130可以包括运算器和与该运算器连接的选择器,该运算器可以连接至匹配电路120,该选择器可以连接至处理器300。其中,运算器用于根据待调度作业集中各个作业的目标权重,并根据待调度作业集中各个作业的目标权重确定各个作业的调度优先级,即运算器可以根据待调度作业集中各个作业的目标权重大小,对各个作业进行排序,获得各个作业的调度优先级。选择器用于根据各个作业的调度优先级,将待调度作业集中调度优先级最高的作业作为目标作业,获得调度信息。其中,该调度优先级最高的作业可以是目标权重最大的作业,即该目标作业为待调度作业集中目标权重最大的作业。这样,通过优先调度目标权重最大的作业,能够实现目标作业优先抢占处理器资源,从而可以优化任务调度过程。
在一个实施例中,待调度作业集的数量为一个以上,每个待调度集用于存储同一作业类别的作业,其中,每个作业的作业类别可以与该作业所属的任务的任务类别相同。具体地,选择电路包括运算器和选择器,该运算器可以连接至匹配电路,该选择器可以连接至第二处理器。其中,运算器用于分别根据每个作业类别对应的待调度作业集中多个作业的期望权重和当前历史权重,确定每个作业类别对应的待调度作业集中各个作业的目标权重,并将作业类别对应的待调度作业集中目标权重最大的作业作为作业类别的预发射作业。选择器用于根据各个预发射作业的目标权重确定目标作业,获得调度信息。
可选地,选择器可以将各个预发射作业的目标权重进行比较,并将目标权重最大的预发射作业作为目标作业。若各个预发射作业的目标权重相同时,则选择器可以根据各个预发射作业的期望权重确定目标作业。例如,当各个预发射作业的目标权重相同时,选择器可以将期望权重最大的预发射作业作为目标作业。
例如,该任务的任务类别可以是block(阻塞任务)、cluster(聚类任务)和union(联合任务),该阻塞任务包含的作业的作业类别为阻塞作业,简记为作业类别B;该聚类任务包含的作业的作业类别为聚类作业,简记为作业类别C;该联合任务包含的作业的作业类别为联合作业,简记为作业类别U。其中,
作业类别U对应的待调度作业集一可以表示如下:
其中,运算器可以根据作业1的期望权重WU1和当前历史权重HU1,计算获得作业的目标权重TU1,同理,运算器可以计算获得作业2至作业n的目标权重。进一步地,运算器可以对作业1至作业n的目标权重进行排序,并将该作业1至作业n中目标权重最大的作业作为预发射作业。例如,该待调度作业集一的预发射作业为作业1。
作业类别B对应的待调度作业集二可以表示如下:
其中,运算器可以根据作业1的期望权重WB1和当前历史权重HB1,计算获得作业的目标权重TB1,同理,运算器可以计算获得作业2至作业m的目标权重。进一步地,运算器可以对作业1至作业m的目标权重进行排序,并将该作业1至作业m中目标权重最大的作业作为预发射作业。例如,该待调度作业集二的预发射作业为作业2。
作业类别C对应的待调度作业集三可以表示如下:
其中,运算器可以根据作业1的期望权重WC1和当前历史权重HC1,计算获得作业的目标权重TC1,同理,运算器可以计算获得作业2至作业k的目标权重。进一步地,运算器可以对作业1至作业k的目标权重进行排序,并将该作业1至作业k中目标权重最大的作业作为预发射作业。例如,该待调度作业集二的预发射作业为作业3。
之后,选择器可以从上述的3个预发射作业中确定目标作业。具体地,若TU1大于TB2,TB2大于TC3时,则可以将该待调度作业集一中的作业1作为目标作业。若TU1、TB2、TC3三者相等时,则可以进一步比较WU1、WB2、及WC3的大小。若WU1大于WB2,WB2大于WC3时,则可以将该待调度作业集一中的作业1作为目标作业。
可选地,作业的期望权重为作业所属的任务的期望权重。例如,调度作业集一中,作业1和作业2可以同属于同一任务,作业3和作业4可以同属于同一任务,该作业n可以属于另一任务。作业1和作业2的期望权重均等于其所属任务的期望权重WB1,作业3和作业4的期望权重均等于其所属任务的期望权重WB2。当然,在其他实施例中,同一任务中的各个作业的期望权重可以不相同。
进一步地,运算器可以包括第一运算单元(ALU1)、第二运算单元(ALU2)和第三运算单元(ALU3),第一运算单元、第二运算单元和第三运算单元依次连接,第一运算单元可以连接至匹配电路,第三运算单元可以连接至选择器。
其中,第一运算单元用于根据作业类别对应的待调度作业集中各个作业的配置权重,以及作业类别对应的待调度作业集中多个作业的总配置权重,获得作业类别对应的待调度作业集中各个作业的期望权重。其中,各个作业的配置权重可以是该作业所属的任务的基本任务信息中包含配置权重,即各个作业的初始权重。该作业的期望权重可以等于作业的配置权重与该待调度作业集中的总配置权重之比。
可选地,作业类别对应的待调度作业集中各个作业的配置权重为作业所属的任务的配置权重,即同一任务中各个作业的配置权重相同。此时,第一运算单元只需根据作业所属的任务的配置权重,以及该待调度作业集中多个任务的总配置权重计算获得各个作业的期望权重。即该作业的期望权重可以等于作业所属的任务的配置权重与该待调度作业集中多个任务的总配置权重之比。
承接上例,例如,待调度作业集一中的n个作业可以分属于三个任务,任务1、任务2及任务3,其中,任务1的配置权重记为S1,任务2的配置权重记为S2,任务3的配置权重记为S3,则该任务1的期望权重WU1可以等于S1/(S1+S2+S3)。同理,任务2的期望权重WU2可以等于S2/(S1+S2+S3)。该待调度作业集一中各个作业的期望权重记为其所属任务的期望权重。待调度作业集二和待调度作业集三中各个作业的期望权重的计算方法与上述方法类似,此处不再赘述。
具体地,第二运算单元用于根据作业类别对应的待调度作业集中各个作业的期望权重,获得作业类别对应的待调度作业集中各个作业对应的当前历史权重。可选地,第二运算单元可以根据各个待调度作业集中各个作业的期望权重,以及预设的映射关系,获得各个作业对应的当前历史权重。
可选地,该第二运算单元还可以包括延迟子单元和更新子单元,该延迟子单元与第一运算单元连接,更新子单元连接延迟子单元和第一运算单元。其中,延迟子单元用于根据各个作业的期望权重确定各个作业对应的延迟因子;更新子单元用于根据各个作业的初始历史权重和作业对应的延迟因子,获得作业的当前历史权重。其中,各个作业的初始历史权重可以是各个作业的配置权重或上一次调度过程中的历史权重。
可选地,延迟子单元可以根据各个作业的期望权重以及预设的映射关系,确定各个作业对应的延迟因子。例如,该预设的映射关系如下表所示:
期望权重 | 延迟因子 |
1 | 256 |
2 | 128 |
3-4 | 64 |
5-8 | 32 |
9-256 | 16 |
从上表可以看出,期望权重越大,延迟因子越小。即作业的期望权重越大,则其调度优先级可能越高。
进一步地,在一次调度结束之后,更新子单元用于根据各个作业的初始历史权重和作业对应的延迟因子,获得作业的当前历史权重。可选地,若一个任务的作业在本次调度中均没有被调度,即该任务的所有作业在本次调度中均没有被选定为目标作业,则更新子单元可将该任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的调整因子,并将各个作业的该初始历史权重与其对应的调整因子的差值作为该作业的当前历史权重。若一个任务的作业在本次调度中被调度,即该目标作业属于该任务时,更新子单元可以更新该任务的其他作业的历史权重。具体地,更新子单元可将该任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的第一调整因子,将延迟因子的最大值与该作业对应的延迟因子的比值作为各个作业的第二调整因子,并根据各个作业的初始历史权重、第一调整因子与第二调整因子计算获得当前历史权重。例如,该当前历史权重=初始历史权重-第一调整因子+第二调整因子。
更进一步地,更新子单元还用于在作业类别对应的待调度作业集中新增同一任务的多个作业,或者同一任务的多个作业均被发射之后,则更新作业类别对应的待调度作业集中各个作业的期望权重和初始历史权重。当该作业为新增的作业时,该作业的初始历史权重即为其配置权重。
可选地,第三运算单元用于计算作业类别对应的待调度作业集中各个作业的期望权重和当前历史权重的权重差值,根据权重差值获得各个作业的目标权重,并将作业类别对应的待调度作业集中目标权重最大的作业作为作业类别的预发射作业。具体地,第三运算单元用于计算作业类别对应的待调度作业集中各个作业的期望权重和当前历史权重的权重差值,对该权重差值进行量化获得各个作业的目标权重。若当前历史权重和期望权重的权重差值越大,则表明该作业的历史调度次数越少,因此,可以通过该权重差值来提高作业的调度优先级。可选地,作业的目标权重与权重差值呈正比关系,即权重差值越大,则作业的目标权重越大,以保证该作业能够被及时调度。
可选地,选择电路130还用于根据调度信息将对应的处理器锁定信号设置为高电平之后,再将调度信息传送至所述对应的处理器;当完成调度信息的传送之后,将该对应的处理器锁定信号设置为低电平。具体地,选择器可以在处理器锁定信号为高电平时,将调度信息传送至该处理器。同时,当处理器锁定信号为高电平时,该处理器能够获取目标作业所属任务的全部任务信息及分解信息等等。进一步地,第二读写控制电路还用于在获得调度信息之后,获取目标作业所属的当前调度任务的全部任务信息。在处理器锁定信号为高电平时,第二读写控制电路能够将调度信息及目标作业的当前调度任务的全部任务信息和分解信息传送至处理器。
本申请实施例中,任务调度装置通过采用上述调度机制,能够优化任务调度过程,提高任务调度的效率。
在其中一个实施例中,当任务调度装置100得到的调度信息中对应的处理器身份信息为至少一个第二处理器本体时,第二处理器本体的控制装置接收任务调度装置100发送的调度信息,并对应获取该目标作业所属的任务的分解信息及全部任务信息,将该任务拆分为多个作业;第二处理器本体用于根据调度信息执行接收到的目标作业。
在一个实施例中,如图2所示,该任务调度装置100连接与任务分解装置400,该任务分解装置400连接任务缓存装置600和状态监控装置500,该任务调度装置100连接任务缓存装置600、任务分解装置400和第二处理器300。其中,该任务分解装置用于对任务进行预拆分,将任务分解为多个作业,获得任务的分解信息。该任务调度装置用于根据任务的分解信息等对多个作业进行调度,确定目标作业,获得调度信息。
进一步地,任务分解装置用于从任务缓存装置600中获取任务的基本任务信息,并根据任务的基本任务信息获得任务的任务注册请求;状态监控装置600用于根据接收到的任务注册请求,为任务分配一个任务标识,并将任务的任务标识回传给任务分派装置,以完成任务的注册过程。本申请实施例中,注册完成的任务(即获得任务标识的任务)能够被任务分派装置进行分解及调度,并进一步发送至第二处理器进行处理。具体地,任务分解装置400用于从任务缓存装置600中获取任务的基本任务信息,并根据任务的基本任务信息获得任务的任务注册请求,并将该任务注册请求传送至状态监控装置500,状态监控装置500能够为各个任务分配一个任务标识,以完成任务的注册。任务分解装置400在接收到状态监控装置500回传的任务标识时,能够根据该具有任务标识的任务的基本任务信息,对各个注册成功的任务进行预拆分(将具有任务标识的任务分解为多个作业),获得任务的分解信息。本申请实施例中,各个任务的任务预拆分可以并行进行,即在获得该任务的任务标识时,则可以任务该任务注册成功,此时任务分解装置即可将该任务分解为多个作业,获得任务的分解信息。这样,可以提高任务的处理效率。
同时,任务分解装置400在接收到状态监控装置500回传的任务标识后,向任务调度装置发送该具有任务标识的任务的调度请求,以启动该任务的调度过程。任务调度装置用于根据其获得的任务调度请求,从第二处理器获取第二处理器的处理器状态信息,从任务分解装置获得任务的分解信息,根据处理器状态信息以及任务的分解信息确定当前进行调度的目标作业,获得调度信息,并将该调度信息传送至第二处理器,该任务调度装置的具体工作过程可参见上文,此处不再赘述。该调度信息可以包括为多个作业的作业标识,各作业对应的处理器身份信息,以及该多个作业被对应处理器处理的位次信息。
更进一步地,任务调度装置100能够根据调度信息从任务缓存装置600中获取目标作业所属的任务的全部任务信息,从任务分解装置400中获取目标作业所属的任务的分解信息,并将目标作业所属的任务的分解信息及全部任务信息打包传送至第二处理器300。第二处理器300可以根据其接收到目标作业所属的任务的分解信息及全部任务信息将该目标作业所属的任务拆分为多个作业(该拆分过程为实际拆分过程),拆分获得各个作业均包含权重及数据等信息。进一步地,第二处理器300可以对拆分根据调度信息对目标作业进行处理。
在其他实施例中,任务调度装置在获得调度信息之后,可以将其获得的调度信息传送至第二处理器,第二处理器可以根据其接收到的调度信息,从任务缓存装置中获取目标作业所属的任务的全部任务信息,从任务分解装置中获取目标作业所属的任务的分解信息,并根据其接收到目标作业所属的任务的分解信息及全部任务信息将该目标作业所属的任务拆分为多个作业(该拆分过程为实际拆分过程),拆分获得各个作业均包含权重及数据等信息。进一步地,第二处理器可以对拆分根据调度信息对目标作业进行处理。
可选地,如图3所示,任务分解装置400可以包括第二读写控制电路410、注册请求电路420以及数据分割器430,第二读写控制电路410、注册请求电路420以及数据分割器430依次电连接,第二读写控制电路420连接任务缓存装置600,注册请求电路420连接状态监控装置500,数据分割器430连接任务调度装置100。
其中,任务缓存装置600还用于在任务缓存装置中存在处于等待发射状态的任务时,获得任务使能信号;第二读写控制电路410用于在接收到任务缓存装置600传送的任务使能信号时,从任务缓存装置600中获取任务的基本任务信息。可选地,该第二读写控制电路410可以是I/O电路。具体地,任务缓存装置600中存储有多个任务队列,当一个以上的任务队列中存在处于等待发射状态的任务时,则任务缓存装置600能够获得任务使能信号。例如,该任务使能信号可以通过标志位(task enable)的方式表示,当标志位的值为1时,则认为任务缓存装置600中存在处于等待发射状态的任务。当标志位的值为0时,则可以认为该任务缓存装置600中不存在等待发射状态的任务。其中,该处于等待发射状态的任务可以是任务队列的队列头指针指向的任务,即该任务队列中的首个任务。第二读写控制电路410在接收到任务使能信号时,可以从任务缓存装置600中获得该处于等待发射状态的任务的基本任务信息,以对该任务进行注册。
注册请求电路420用于根据任务的基本任务信息获得任务的任务注册请求,将任务注册请求传送至状态监控装置500,对任务进行注册。其中,注册成功之后的任务(即获得任务标识的任务)能够进行调度处理。进一步地,该注册请求电路420还用于接收状态监控装置500回传的任务标识等信息,并将其接收到的任务的任务标识传送至数据分割器430。数据分割器430用于在接收到状态监控装置500回传的任务标识时,根据任务的基本信息对该注册成功的任务进行预拆分,将该任务分解为多个作业,获得任务的分解信息。
可选地,任务的基本任务信息中包含任务的作业总数量和每个作业的作业大小;其中,任务的作业总数量是指该任务被分解形成的作业的数量,作业的大小是指每个作业的数据容量。数据分割器能够获取该任务的基本任务信息,并根据该任务的基本任务信息中的作业总数量和各个作业的作业大小,将多个任务分解为多个作业,得到任务的分解信息。可选地,该任务的作业总数量可以为2n,n为正整数。更进一步地,每个作业能够被分配至对应的处理器上进行处理,因此每个作业的大小可以为对应的处理器字长的整数倍,其中,处理器字长可以反应处理器单次处理数据的能力。
本申请实施例中,通过数据分割器对具有任务标识的任务进行预拆分获得任务的分解信息,第二处理器在对该任务进行处理时,可以直接根据该任务的分解信息将任务拆分为多个作业,无需对任务进行预拆分及注册等预处理,简化了第二处理器的任务处理流程,进而第二处理器对同一任务的多个作业进行并行处理,提高了处理效率。
可选地,任务分解装置还包括状态控制电路440,状态控制电路440连接注册请求电路420和任务调度装置100,该状态控制电路440用于对任务的任务状态进行记录及更新,从而可以根据该任务的任务状态获知该任务的处理进度。本申请实施例中,通过状态控制电路440可以对任务调度及处理过程中的任务状态进行跟踪及监控,从而可以保证任务调度的可靠性。
具体地,注册请求电路420可以在接收到状态监控装置500回传的任务的任务标识之后,将该任务的任务标识传送至状态控制电路440,状态控制电路440可以用于在接收到任务的任务标识之后,将具有任务标识的任务的任务状态从等待发射状态更新为待调度状态。进一步地,数据分割器430可以对该处于待调度状态的任务进行预拆分,获得该处于待调度状态的任务的分解信息。注册请求电路420还用于在接收到状态监控装置回传的任务标识时,获得任务对应的任务调度请求,并将任务的任务调度请求传送至任务调度装置,即注册请求电路420可以将各个处于待调度状态的任务对应的任务调度请求传送至任务调度装置100。该任务调度装置100可以根据该任务的任务调度请求,获取第二处理器300的处理器状态信息及任务的分解信息等信息,开始对该任务进行调度。
进一步地,任务调度装置100可以在该处于待调度状态的任务调度成功时,生成调度成功信号,并将该调度成功信号传送至状态控制电路。状态控制电路还用于在接收到任务调度装置传送的调度成功信号时,将任务的任务状态由待调度状态更新为调度状态,之后任务调度装置可以将处于调度状态的任务的多个作业依次发送至第二处理器。更进一步地,状态控制电路440还可以用于在完成任务的调度之后,将任务的任务状态从调度状态更新为调度结束状态,获得任务的调度结束信息,并根据任务的调度结束信息销毁任务。
又进一步地,任务调度装置100可以在该处于待调度状态的任务调度失败时,生成调度失败信号,并将该调度失败信号传送至状态控制电路440。状态控制电路440的还用于在接收到任务调度装置100传送的调度失败信号时,将任务的任务状态由调度状态设置为待调度状态,以在下一次调度时重新对该任务进行调度。本申请实施例中,通过上述调度失败机制可以避免死锁现象。
可选地,任务调度装置100可以根据各个处于待调度状态的任务的分解信息及基本任务信息,以及第二处理器的处理器状态信息,分别将各个任务包含的多个作业与第二处理器进行匹配。若在预设的时间(如128节拍或256节拍)内,该任务的一个以上的作业与第二处理器匹配失败时,则可以认为任务调度存在异常,此时任务调度装置100可以获得调度失败信号,并将该调度失败信号传送至状态控制电路440。状态控制电路440可以根据调度失败信号时,将任务的任务状态由调度状态更新为待调度状态,以在下一次调度时重新对该任务进行调度。本申请实施例中,通过上述调度失败机制可以避免死锁现象。
若在预设的时间内,该任务的一个以上的作业均与第二处理器300匹配成功时,则可以任务调度正常,此时任务调度装置100可以获得调度成功信号,并将该调度成功信号传送至状态控制电路440。状态控制电路可以根据该调度成功信号,将该任务的任务状态由待调度状态更新为调度状态。当该任务的任务状态更新为调度状态之后,任务调度装置可以开始执行调度过程,即任务调度装置可以将处于调度状态的任务的多个作业依次发送至第二处理器。状态控制电路440还可以用于在完成任务的调度之后,将任务的任务状态从调度状态更新为调度结束状态,获得任务的调度结束信息,并根据任务的调度结束信息销毁任务。
可选地,任务分解装置400还包括依赖关系处理电路,依赖关系处理电路连接第二读写控制电路和状态监控装置500;依赖关系处理电路用于在根据任务的基本任务信息确定任务存在前置任务时,向状态监控装置500发送前置任务查询请求;状态监控装置500还用于根据前置任务查询请求,确定任务的前置任务是否执行完毕,并将查询结果反馈至依赖关系处理电路;依赖关系处理电路还用于在根据查询结果确定任务的前置任务执行完毕之后,再向状态监控装置500发送任务注册请求。
具体地,该基本任务信息中还包含任务的依赖关系信息,依赖关系处理电路可以根据基本任务信息中的依赖关系信息判断当前任务是否存在前置任务,并在确定该当前任务存在前置任务时,向状态监控装置500发送前置任务查询请求,以确定该当前任务的前置任务是否执行完毕。具体地,状态监控装置500还用于根据前置任务查询请求,确定任务的前置任务是否执行完毕,并将查询结果反馈至依赖关系处理电路;依赖关系处理电路还用于在根据查询结果确定任务的前置任务执行完毕之后,再通过注册请求电路420向状态监控装置发送任务注册请求。若依赖关系处理电路根据查询结果确定任务的前置任务未执行完毕,则可以暂停该任务的注册,即不会向状态监控装置500发送相应的任务注册请求。这样,只有在当前任务的前置任务执行完毕之后,才执行当前任务的注册过程,可以保证各个任务的执行顺序的正确性,进而保证运算结果的准确性及可靠性。
当依赖关系处理电路根据任务的基本任务信息中的依赖关系信息,确定该当前任务不存在前置任务时,则可以调用注册请求电路420,该注册请求电路420可以根据该当前任务的基本任务信息获得任务注册请求,并将该任务的任务注册请求传送至状态监控装置500进行注册。
在其中一个实施例中,任务缓存装置600用于存储多个任务对应的基本任务信息和全部任务信息;其中,该任务的基本任务信息可以包括该任务的配置信息,如配置信息包括任务类别、任务的权重及任务的数据等等。其中,多个任务根据其功能的不同可以分为事件任务、通信任务及数据处理任务等,即该任务类别可以包括事件任务、通信任务及数据处理任务,进一步地,该数据处理任务的任务类别还可以包括block(阻塞任务)、cluster(聚类任务)和union(联合任务)。该任务的全部任务信息可以包括该任务的配置信息等基本任务信息,以及该任务对应的指令及数据等信息。可选地,该多个任务以任务队列的形式存储于任务缓存装置600中,多个任务可以形成多个任务队列,如多个任务按照其任务类别形成多个任务队列。每个任务队列中队列头指针指向的任务的基本任务信息可以传送至任务分解装置400中。
在一个实施例中,如图4所示,状态监控装置500可以包括任务注册电路510,任务注册电路510连接任务分解装置400,具体地,任务注册电路510连接任务分解装置400的注册请求电路420。注册请求电路420可以将任务的任务注册请求发送至任务注册电路510,任务注册电路510用于接收该任务的任务注册请求,根据任务的任务注册请求为任务分配任务标识,并将任务的任务标识回传给任务分解装置400。其中,已获得任务标识的当前任务能够被任务调度装置100调度,并在调度之后发送至第二处理器进行处理。
可选地,任务注册电路510可以是一存储装置,该存储装置内存储有一状态表,该状态表包含多个状态表项,每个状态表项对应一个任务标识。具体地,每个任务注册请求可以占用一个状态表项,该状态表项的存储地址或标号等可以作为该任务的任务标识。在其他实施例中,该任务注册电路可以采用堆栈等其他存储装置。进一步地,每个状态表项可以包括多个子状态表项,任务注册电路110可以根据当前任务的作业总数量,为每个作业分配一个子状态表项。例如,当前任务对应的任务标识可以为Table ID,该Table ID用于表示该当前任务。若当前任务注册完成之后,可以按照多个作业在队列中的排列方式为每个作业分配一个该Table ID对应的子状态表项。
进一步地,该状态监控装置500还包括与任务注册电路510连接的校验电路520和与校验电路520连接的状态处理电路530,校验电路520连接任务分解装置400,状态处理电路530连接校验电路520和第一处理器200。
具体地,校验电路520连接至任务分解装置400的第二读写控制电路410,第二读写控制电路410可以将任务包含的作业总数量传送至校验电路520,校验电路520用于获取任务分解装置400传送的任务包含的作业总数量,以及第二处理器300传送的任务的作业接收数量,并根据任务的作业总数量和任务的作业接收数量获得分派完成指令。该分派完成指令用于表示该第二处理器已接收到任务调度装置发送的所有作业。进一步地,该校验电路520可以将该分派完成指令传送至状态处理电路。
状态处理电路530用于根据分派完成指令接收任务的各个作业的作业结束信息,并将任务的各个作业的作业结束信息传送至第一处理器。具体地,当状态处理电路530接收到分派完成指令时,表明该第二处理器已经接收到需处理的各个作业,可以开始执行各个作业。状态监控装置500可等待第二处理器300反馈的各个已接收作业的执行状态信息,即状态处理电路530可以开始接收并缓存第二处理器传送的任务中各个作业的作业结束信息。可选地,该状态处理电路530可以通过DMA连接至全局内存,从而该状态处理电路530可以将其获得的各个作业的作业结束信息写入全局内存,以通过全局内存将当前任务的各个作业的作业结束信息传送至第一处理器200。
可选地,该校验电路520可以包括比较器,该比较器用于获取任务的作业接收数量和预设作业数量,并对该任务的作业接收数量与预设作业数量进行比较,当任务的作业接收数量与预设作业数量相等时,该比较器可以输出分派完成指令,并将分派完成指令发送至状态处理电路。
可选地,本申请实施例中的预设作业数量可以是为发送至第二处理器300的作业数量。此时,比较器用于判断任务的作业接收数量是否等于当前任务的作业总数量,当任务的作业接收数量等于该任务的作业总数量时,则比较器可以获得分派完成指令,并将分派完成指令传送至状态处理电路。若任务的作业接收数量小于该任务的作业总数量时,则继续等待,直至任务的作业接收数量等于该任务的作业总数量。
可选地,在其他实施例中,由于每个任务包含多个作业,为减少单次校验的作业数量,提高作业的执行效率,预设作业数量还可以小于任务的作业总数量。具体地,比较器的预设作业数量可以为2m,其中,m的取值范围为5~10,m为正整数。例如,预设作业数量可以是32、64、128、512或1024等等,此处不做具体限定。
例如,该预设作业数量为128,比较器用于判断任务的作业接收数量是否等于128,当任务的作业接收数量等于128时,则比较器可以获得分派完成指令,并将分派完成指令传送至状态处理电路。同时,可以将该任务的作业接收数量清零,进行下一循环的处理。若任务的作业接收数量小于128时,则继续等待,直至任务的作业接收数量等于128。
进一步地,该预设作业数量可以根据当前任务的作业数量动态设置。此时,当比较器确定任务的作业接收数量与预设作业数量相等,则比较器可以获得分派完成指令,并将分派完成指令传送至状态处理电路。若任务的作业接收数量小于预设作业数量时,则继续等待,直至任务的作业接收数量等于比较器的预设作业数量。
可选地,状态处理电路530还包括重排序缓存,该重排序缓存可以连接校验电路520和第一处理器200,具体地,该重排序缓存可以通过全局内存连接至第一处理器200。该重排序缓存用于接收校验电路520的比较器输出的分派完成指令,并根据分派完成指令接收当前任务的各个作业的作业结束信息,并当接收到的作业结束信息的数量达到预设结束信息数量时,按照预设的排列方式对接收到的作业结束信息重新进行排序,并按照重新排序后的顺序将接收到的作业结束信息传送至第一处理器200。可选地,该预设的排列方式可以是各个作业的执行顺序。这样,通过对各个作业的作业结束信息进行重新排序,可以保证当前作业之前的一个或多个作业均已经执行结束,从而可以保证当前任务的执行结果的可靠性。
在一个实施例中,状态处理电路530还包括第三读写控制电路,第三读写控制电路与重排序缓存连接。若任务为阻塞任务时,第三读写控制电路用于在接收到阻塞任务的作业结束信息的数量等于阻塞任务的作业总数量,且阻塞任务所属的阻塞区间之前的上一阻塞区间内的所有任务的作业结束信息均传送至第一处理器之后,再将阻塞任务的多个作业的作业结束信息传送至第一处理器。
可选地,状态处理电路530还包括与第二处理器连接的异常处理电路,任务分解装置还包括任务销毁电路,异常处理电路连接任务销毁电路。其中,第二处理器300用于将作业的作业结束信息传送至所述异常处理电路;异常处理电路用于作业的作业结束信息判断作业是否存在执行异常,并在作业存在执行异常时,获得任务销毁指令,并将任务销毁指令传送至任务销毁电路。任务销毁电路用于根据任务销毁指令销毁执行销毁操作,销毁操作包括销毁存在执行异常的作业所属的任务以及销毁存在执行异常的作业所属的任务及作业所属的任务对应的任务队列中的所有任务。
具体地,该异常处理电路可以获取该任务的作业的作业结束信息,并根据该作业的作业结束信息判断作业是否存在执行异常。若该作业存在执行异常时,获得任务销毁指令。可选地,该作业的作业结束信息中包含结果标志数据,异常处理电路可以根据作业的作业结束信息中包含的结果标志数据判断该作业是否存在执行异常。
例如,若该作业存在执行异常时,则第二处理器可以将该作业的作业结束信息中的结果标志数据设置为非0(如该结果标志数据为1),此时,异常处理电路可以根据该结果标志数据确定该作业是否存在执行异常。若该作业不存在执行异常,则第二处理器可以将该作业的作业结束信息中的结果标志数据设置为0,此时,异常处理电路可以根据该结果标志数据确定该作业不存在执行异常。进一步地,异常处理电路可以根据该作业的作业结束信息获得任务销毁指令,以通知任务分解装置的任务销毁电路执行销毁操作。
进一步地,该作业的执行异常可以包括第一异常情况和第二异常情况,任务销毁指令可以包括与第一异常情况相对应的第一任务销毁指令和与第二异常情况相对应的第二任务销毁指令。可选地,在确定该作业存在异常时,异常处理电路还可以根据该作业的作业结束信息中包含的异常标志数据,判断当前任务的执行异常是第一异常情况还是第二异常情况。其中,该第一异常情况和第二异常情况可以是第二处理器资源不足及第二处理器故障等异常情况等异常中的一个或多个的组合。
可选地,异常处理电路用于在根据作业的作业结束信息确定该作业存在第一异常情况时,则获得第一任务销毁指令,并将第一任务销毁指令传送至任务销毁电路,任务销毁电路根据第一任务销毁指令销毁该作业所属的任务。具体地,任务销毁电路在接收到第一任务销毁指令时,可以用于终止调度存在执行异常的作业,以及该作业之后的所有作业,并获得该作业所属的任务的调度结束信息。进一步地,当任务销毁电路完成该该作业所属的任务的销毁操作之后,可以将该作业所属的任务的任务调度结束信息传送至状态监控装置500。
在其中一个实施例中,任务分解装置400连接有寄存器堆。若异常处理电路根据作业的作业结束信息确定该作业存在第二异常情况时,则可以获得第二任务销毁指令,以销毁该作业所属的任务以及所述该作业所属的任务之后的所有任务。具体地,若异常处理电路根据作业的作业结束信息确定该作业存在第二异常情况时,则可以获得第二任务销毁指令,并将该第二任务销毁指令传送至任务销毁电路,通知任务销毁电路销毁该作业所属的任务及其之后的所有任务。可选地,当任务销毁电路接收到异常处理电路传送的第二任务销毁指令之后,任务销毁电路可以销毁该该作业所属的任务所在的任务队列中的所有任务。具体地,任务分解装置首先根据第二任务销毁指令终止该作业所属的任务及该作业所属的任务之后的其他任务的调度,并通知与该任务分解装置连接的寄存器清除该该作业所属的任务。在该作业所属的任务从寄存器中清除之后,可以获得该该作业所属的任务的调度结束信息。
同时,在该作业所属的任务从寄存器中清除之后,任务分解装置可以向状态监控装置500发送该作业所属的任务之后的其他任务对应的任务注册请求,以获得该作业所属的任务之后的其他任务对应的任务标识。状态监控装置500的任务注册电路510可以分别为该作业所属的任务之后的其他任务分配一个任务标识。当任务销毁电路接收到状态监控装置500的任务注册电路510反馈的任务标识时,任务销毁电路可以根据其接收到的任务标识,获得该作业所属的任务之后的其他任务对应的调度结束信息,以销毁该作业所属的任务之后的所有任务。进一步地,该任务分解装置400还可以将各个待处理任务的调度结束信息传送至状态监控装置500。
通过设置上述异常处理机制,可以保证任务执行结果的准确性。并且,当存在异常情况时,状态监控装置可以通知任务销毁电路销毁对应的任务和/或其之后的全部任务,避免第二处理器在存在异常时继续执行其他任务带来的资源浪费。
可选地,任务分解装置400的状态控制电路440还用于在接收到任务销毁指令时,获得第一中断信号,并将第一中断信号传送至第一处理器200,之后执行销毁操作。具体地,当任务销毁电路接收到任务销毁指令时,首先终止该作业所属的任务的调度,以避免异常情况下进行调度消耗不必要的资源。同时,当任务销毁电路接收到任务销毁指令后,可以获得第一中断信号,并将第一中断信号传送至第一处理器200。进一步地,当第一处理器200接收到第一中断信号后,第一处理器200还可以获取各个第二处理器本体310的状态信息,并根据各个第二处理器本体310的状态信息,确定出现异常的第二处理器本体。
任务分解装置400的状态控制电路440还用于在完成销毁操作之后,获得第二中断信号,并将第二中断信号传送至第一处理器200。具体地,状态监控装置在接收到当前任务的调度结束信息,或状态监控装置在接收到当前任务及当前任务所属的任务队列中的所有任务的调度结束信息之后,获得异常处理结束信息,并将异常处理结束信息传送至任务分解装置400;任务分解装置400的任务销毁电路还用于根据异常处理结束信息,获得第二中断信号,并将第二中段信号传送至第一处理器200。
在一个实施例中,多个任务以任务队列的方式进行存储于任务缓存装置600中,任务缓存装置还用于监测各个任务队列的队列状态。当任务队列的队列头指针与队列尾指针不相同,且任务缓存装置的剩余存储空间大于零时,则任务缓存装置可以向全局内存发送数据读取请求,以向任务缓存装置存入新的任务。
进一步地,任务分解装置400还用于在任务调度结束或被销毁之后,向任务缓存装置600发送任务释放请求;任务缓存装置600还用于根据任务释放请求,释放该任务,并将该任务所在的任务队列的队列头指针累加一次,以更新该任务所在的任务队列的队列头任务。本申请实施例中,通过释放已经调度结束或被销毁的任务,能够避免已经调度结束的任务或被销毁的任务占用任务缓存装置的存储空间,提高任务缓存装置的空间利用率。
同时,本申请实施例还提供了一种任务处理系统,包括第一处理器、全局内存、任务分解装置、任务调度装置、状态监控装置及第二处理器,任务调度装置分别连接第一处理器、第二处理器和任务分解装置,全局内存分别连接任务分解装置、任务调度装置、状态监控装置、第一处理器及第二处理器。可选地,全局内存可以为DRAM(Dynamic Random AccessMemory,动态随机存储器)或SRAM(Static Random-Access Memory,静态随机存储器)等等。本申请实施例中任务处理系统工作原理,具体可参见上文中的描述,此处不再赘述。
进一步地,第二处理器本体的控制装置还用于在接收调度信息时,为目标作业分配一个作业标识;当接收到目标作业对应的所有第二处理器本体反馈的信息时,则获得目标作业的作业结束信息,并将目标作业的作业结束信息传送至状态监控装置,之后,销毁目标作业对应的作业标识。
更进一步地,目标作业可以对应一个以上的第二处理器本体,各个第二处理器本体的连接关系及结构可参见下文中的描述。第二处理器本体的控制装置还用于在目标作业对应的一个以上第二处理器本体反馈的信息存在异常时,则将目标作业的执行状态标记为执行异常,目标作业的执行状态附加在目标作业的作业结束信息中,并将该目标作业的作业结束信息传送至状态监控装置。状态监控装置能够根据目标作业的作业结束信息中的目标作业的执行状态,获得任务销毁指令。
可选地,多个第二处理器本体形成多个处理器集群,每个处理器集群均对应设置有共享存储;每个处理器集群中的各个第二处理器本体均连接至处理器集群对应的共享存储。进一步地,各个共享存储之间相互连接,各个共享存储均连接任务调度器和/或全局内存。本申请实施例中,通过设置共享存储,避免了每次数据读写均需调用全局内存,能够节省全局内存的读写带宽。
可选地,任务处理系统还包括多个与共享存储连接的DMA(Direct MemoryAccess,直接内存存取);处理器集群中的各个第二处理器本体均通过DMA连接至处理器集群对应的共享存储;各个共享存储通过DMA连接任务调度器和/或全局内存,各个共享存储之间通过DMA连接。本申请实施例中,通过设置多个DMA,能够实现不同的硬件装置之间的数据访存,无需设置中断程序,从而可以提高该系统的处理效率。
作为进一步的改进,任务处理系统还包括互联模块,第一处理器、第二处理器、全局内存及任务调度器均连接至互联模块,如片上互联模块(Networks ON Chip)。可选地,该互联模块可以是二叉树互联模块或2D-mesh互联模块。进一步地,第二处理器的数量为一个以上,一个以上的第二处理器均连接至互联模块;任务调度器的数量为一个以上,一个以上的任务调度器均连接至互联模块。这样,通过互联模块和一个以上的任务调度器和第二处理器,能够提高该任务处理系统的可扩展性,以满足不同的需求。
在其中一个实施例中,第二处理器本体310包括如图5所示的计算装置,该计算装置包括:控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路。
具体地,该控制器单元11,可以用于获取作业,该作业可以包括数据、机器学习模型以及计算指令。在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令缓存单元110’、指令处理单元111和存储队列单元113;
指令缓存单元110’,用于存储所述人工神经网络运算关联的计算指令。
所述指令处理单元111,用于对所述计算指令解析得到多个运算指令。
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 | 寄存器或立即数 | 寄存器/立即数 | ... |
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元108,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
在另一种可选实施例中,运算单元12如图6所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图6所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图6所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图7所示,该主处理电路还可以包括:转换处理电路110”、激活处理电路111、加法处理电路112中的一种或任意组合;
转换处理电路110”,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换)。
激活处理电路111,用于执行主处理电路内数据的激活运算。
加法处理电路112,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路。
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
下面通过神经网络运算指令来说明如图5所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
在一种可选的实施方案中,如图8所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
上述树型模块具有收发功能,例如如图8所示,该树型模块即为发送功能,如图9所示,该树型模块即为接收功能。
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图10所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图10所示的倒数第一层的节点。
可选的,上述运算单元可以携带单独的缓存,如图11所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
如图12所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。
在一种可选实施例中,运算单元12如图13所示,可以包括分支处理电路103;其具体的连接结构如图13所示,其中,
主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制器单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该最终结果y输出或存储至存储单元内。
如图5所示的计算装置执行神经网络正向运算指令的方法具体可以为:
控制器单元从指令存储单元内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
控制器单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从存储单元内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成n个数据块;
控制器单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制器单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
如图14所示,为其中一个实施例中提出的一种任务调度方法的步骤流程图,该任务调度方法包括:
步骤S1000:获取任务的分解信息和全部任务信息,以及处理器的状态信息。
具体地,任务调度装置100从任务分解装置400中获取任务的分解信息,从任务缓存装置600中对应获取全部任务信息,从第二处理器本体的控制装置320上获取处理器状态信息。任务的分解信息可以包括任务被分解为作业的数量,各个作业的大小信息等等。处理器的处理器状态信息可以包括处理器的类型信息、处理器的运行状态信息(处理器是否空闲)以及处理器的处理能力等信息。步骤S2000:根据各个所述任务的分解信息和全部任务信息,以及所述处理器的状态信息,分别将所述任务的各个作业与处理器进行匹配,并将与所述处理器匹配成功的所述作业添加至待调度作业集。
具体地,任务调度装置100根据各个所述任务的分解信息和全部任务信息,以及所述处理器的状态信息,分别将所述任务的各个作业与处理器进行匹配,并将与所述处理器匹配成功的所述作业添加至待调度作业集。更具体地,任务调度装置100首先根据任务的全部任务信息及任务分解信息,获得该任务的各个作业所需的处理器信息(如处理器类型等信息)和各个作业的大小信息,之后根据各个作业的大小获得各个作业所需的处理器的处理能力等信息。这样,任务调度装置100可以根据该任务的全部任务信息及任务分解信息,以及处理器状态信息,将任务的各个作业与处理器进行匹配。进一步地,若作业与处理器匹配成功时,匹配电路还可以进一步获得与该作业匹配的处理器的处理器标识等信息。
可选地,若任务调度装置确定同一任务的所有作业与处理器均匹配成功时,则将该任务的各个作业均添加至待调度作业集中。当然,在其他实施例中,任务调度装置可以在确定某个作业与处理器匹配成功时,即将与处理器匹配成功的作业作为添加至待调度作业集中;当获得该作业所属的任务的调度失败信号时,则可以从待调度作业集中删除该调度失败的任务的所有作业。
步骤S3000:根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业,获得调度信息,所述调度信息用于确定所述作业在处理器上的执行顺序。
其中,调度信息用于确定所述作业在处理器上的执行顺序。具体地,任务调度装置100根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业,获得调度信息。其中,该待调度作业集中各个作业的目标权重可以计算获得,当然,该待调度作业集中各个作业的目标权重也可以是预先设置。
可选地,任务调度装置100根据待调度作业集中各个作业的目标权重,并根据待调度作业集中各个作业的目标权重确定各个作业的调度优先级,即任务调度装置100可以根据待调度作业集中各个作业的目标权重大小,对各个作业进行排序,获得各个作业的调度优先级,之后再根据各个作业的调度优先级,将待调度作业集中调度优先级最高的作业作为目标作业,获得调度信息。其中,该调度优先级最高的作业可以是目标权重最大的作业,即该目标作业为待调度作业集中目标权重最大的作业。这样,通过优先调度目标权重最大的作业,能够实现目标作业优先抢占处理器资源,从而可以优化任务调度过程。本实施例提出的任务调度方法,首先根据任务的分解信息和全部任务信息,以及处理器的状态信息,为任务的各个作业匹配处理器,得到待调度作业集,保证了在调度完成后,分发至处理器的作业可以及时的被处理,之后再根据作业的目标从待调度作业集中选定目标作业,获取调度信息,可以保证权重高的作业抢占处理器资源,因此该任务调度方法可以提高处理器的处理效率。
在其中一个实施例中上述任务调度方法还包括:
若在预设时间内,所述任务中的一个以上的作业与所述处理器未匹配成功时,则获取所述任务的调度失败信号。
具体地,任务调度装置100在为任务的各个作业匹配处理器时,若在预设时间(如128节拍或256节拍)内,任务中的一个以上的作业与处理器未匹配成功时,则获取任务的调度失败信号。该调度失败信号可以被传送至任务分解装置400,任务分解装置接收该调度失败信号,重新发起该任务的调度。
本实施提出的调度异常处理方法,在任务中的一个以上的作业与处理器未匹配到处理器,通过生成调度失败信号,重新进行调度,避免任务死锁。
在其中一个实施例中,如图15所示,步骤S3000,包括:
步骤S3100a:根据所述待调度作业集中各个所述作业的目标权重确定所述各个所述作业的调度优先级。
具体地,任务调度装置100根据所述待调度作业集中各个所述作业的目标权重确定所述各个所述作业的调度优先级。其中,该待调度作业集中各个作业的目标权重可以计算获得,当然,该待调度作业集中各个作业的目标权重也可以是预先设置。
步骤S3200a:根据所述各个所述作业的调度优先级,将所述待调度作业集中调度优先级最高的作业作为所述目标作业。
具体地,任务调度装置100根据所述各个所述作业的调度优先级,将所述待调度作业集中调度优先级最高的作业作为所述目标作业。
本实施例确定目标作业的方法,可以保证目标权重高的作业抢占处理器资源。
在另一可选地实施例中,如图16所示,所述待调度作业集的数量为一个以上时,每个所述待调度集存储同一作业类别的作业,可选地,每个作业的作业类别可以与该作业所属的任务的任务类别相同。此时,步骤S3000,包括:
步骤S3100b:根据每个待调度作业集中多个作业的期望权重和当前历史权重,确定每个所述待调度作业集中各个作业的目标权重。
具体地,任务调度装置100根据每个待调度作业集中多个作业的期望权重和当前历史权重,确定每个所述待调度作业集中各个作业的目标权重。其中,该待调度作业集中各个作业的目标权重可以计算获得,当然,该待调度作业集中各个作业的目标权重也可以是预先设置。
步骤S3200b:将各个所述待调度作业集中目标权重最大的所述作业作为对应的作业类别的预发射作业。
具体地,任务调度装置100将各个所述待调度作业集中目标权重最大的所述作业作为对应的作业类别的预发射作业。
步骤S3300b:根据各个所述预发射作业的目标权重确定所述目标作业。
具体地,任务调度装置100根据各个所述预发射作业的目标权重确定所述目标作业。可选地,任务调度装置100可以将各个预发射作业的目标权重进行比较,并将目标权重最大的预发射作业作为目标作业。若各个预发射作业的目标权重相同时,则选择器可以根据各个预发射作业的期望权重确定目标作业。例如,当各个预发射作业的目标权重相同时,任务调度装置100可以将期望权重最大的预发射作业作为目标作业。
例如,任务的任务类别可以是block(阻塞任务)、cluster(聚类任务)和union(联合任务),该阻塞任务包含的作业的作业类别为阻塞作业,简记为作业类别B;该聚类任务包含的作业的作业类别为聚类作业,简记为作业类别C;该联合任务包含的作业的作业类别为联合作业,简记为作业类别U。其中,
作业类别U对应的待调度作业集一可以表示如下:
其中,任务调度装置100可以根据作业1的期望权重WU1和当前历史权重HU1,计算获得作业的目标权重TU1,同理,任务调度装置100可以计算获得作业2至作业n的目标权重。进一步地,任务调度装置100可以对作业1至作业n的目标权重进行排序,并将该作业1至作业n中目标权重最大的作业作为预发射作业。例如,该待调度作业集一的预发射作业为作业1。
作业类别B对应的待调度作业集二可以表示如下:
其中,任务调度装置100可以根据作业1的期望权重WB1和当前历史权重HB1,计算获得作业的目标权重TB1,同理,任务调度装置100可以计算获得作业2至作业m的目标权重。进一步地,任务调度装置100可以对作业1至作业m的目标权重进行排序,并将该作业1至作业m中目标权重最大的作业作为预发射作业。例如,该待调度作业集二的预发射作业为作业2。
作业类别C对应的待调度作业集三可以表示如下:
其中,任务调度装置100可以根据作业1的期望权重WC1和当前历史权重HC1,计算获得作业的目标权重TC1,同理,任务调度装置100可以计算获得作业2至作业k的目标权重。进一步地,任务调度装置100可以对作业1至作业k的目标权重进行排序,并将该作业1至作业k中目标权重最大的作业作为预发射作业。例如,该待调度作业集二的预发射作业为作业3。
之后,任务调度装置100从上述的3个预发射作业中确定目标作业。具体地,若TU1大于TB2,TB2大于TC3时,则可以将该待调度作业集一中的作业1作为目标作业。若TU1、TB2、TC3三者相等时,则可以进一步比较WU1、WB2、及WC3的大小。若WU1大于WB2,WB2大于WC3时,则可以将该待调度作业集一中的作业1作为目标作业。
可选地,作业的期望权重为作业所属的任务的期望权重。例如,调度作业集一中,作业1和作业2可以同属于同一任务,作业3和作业4可以同属于同一任务,该作业n可以属于另一任务。作业1和作业2的期望权重均等于其所属任务的期望权重WB1,作业3和作业4的期望权重均等于其所属任务的期望权重WB2。当然,在其他实施例中,同一任务中的各个作业的期望权重可以不相同。
本实施例根据作业(任务)的类别,分别进行任务调度的方法,可以更加合理的利用处理器资源,提高调度效率。
在其中一个实施例中,如图17所示,步骤S310b,包括:
步骤S3110b:根据每一所述待调度作业集中各个作业的配置权重,以及每一所述待调度作业集中多个作业的总配置权重,对应获得每一所述待调度作业集中各个作业的期望权重。
具体地,任务调度装置100根据每一所述待调度作业集中各个作业的配置权重,以及每一所述待调度作业集中多个作业的总配置权重,对应获得每一所述待调度作业集中各个作业的期望权重。其中,各个作业的配置权重可以是该作业所属的任务的基本任务信息中包含配置权重,即各个作业的初始权重。该作业的期望权重可以等于作业的配置权重与该待调度作业集中的总配置权重之比。
可选地,每一待调度作业集中各个作业的配置权重为作业所属的任务的配置权重,即同一任务中各个作业的配置权重相同。此时,任务调度装置100只需根据作业所属的任务的配置权重,以及该待调度作业集中多个任务的总配置权重计算获得各个作业的期望权重。即该作业的期望权重可以等于作业所属的任务的配置权重与该待调度作业集中多个任务的总配置权重之比。
承接上例,例如,待调度作业集一中的n个作业可以分属于三个任务,任务1、任务2及任务3,其中,任务1的配置权重记为S1,任务2的配置权重记为S2,任务3的配置权重记为S3,则该任务1的期望权重WU1可以等于S1/(S1+S2+S3)。同理,任务2的期望权重WU2可以等于S2/(S1+S2+S3)。该待调度作业集一中各个作业的期望权重记为其所属任务的期望权重。待调度作业集二和待调度作业集三中各个作业的期望权重的计算方法与上述方法类似,此处不再赘述。
步骤S31200b:根据每一所述待调度作业集中各个所述作业的期望权重,获得每一所述待调度作业集中各个所述作业对应的当前历史权重。
具体地,任务调度装置100根据每一所述待调度作业集中各个所述作业的期望权重,获得每一所述待调度作业集中各个所述作业对应的当前历史权重。
步骤S31300b:计算每一所述待调度作业集中各个所述作业的期望权重和当前历史权重的权重差值,根据所述权重差值获得各个作业的目标权重。
具体地,任务调度装置100计算每一所述待调度作业集中各个所述作业的期望权重和当前历史权重的权重差值,根据所述权重差值获得各个作业的目标权重。
本实施例的方法,根据作业的历史权重和期望权重得到作业的目标权重,应用该目标权重进行调度及参考了历史调度信息,又考量了当前作业自身的配置权重,使得到的结果更加合理。
在其中一个可选地实施例中,每一所述待调度作业集中各个作业的配置权重为所述作业所属的任务的配置权重,所述作业的期望权重为所述作业所属的任务的期望权重。
具体地,任务调度装置100将每一所述待调度作业集中各个作业的配置权重设置为所述作业所属的任务的配置权重,将所述作业的期望权重设置为所述作业所属的任务的期望权重。
在其中一个可选地实施例中,如图18所示,步骤S3120b,包括:
步骤S3121b:根据每一所述待调度作业集中各个所述作业的期望权重,确定各个所述作业对应的延迟因子。
具体地,任务调度装置100根据每一所述待调度作业集中各个所述作业的期望权重,及期望权重与延迟因子的预设映射关系,确定各个所述作业对应的延迟因子。
步骤S3122b:根据每一所述待调度作业集中各个所述作业的初始历史权重和所述作业对应的延迟因子,获得所述作业的当前历史权重。
具体地,任务调度装置100根据每一所述待调度作业集中各个所述作业的初始历史权重和所述作业对应的延迟因子,获得所述作业的当前历史权重。
其中,各个作业的初始历史权重可以是各个作业的配置权重或上一次调度过程中的历史权重。
本实施引入延迟因子,调整调度过程,可以某些权重较低的作业能够被及时调度。
在其中一个实施例中,步骤S3122b,包括:根据各个作业的期望权重以及预设的映射关系,确定各个作业对应的延迟因子。
例如,可以预设的映射关系如下表所示:
期望权重 | 延迟因子 |
1 | 256 |
2 | 128 |
3-4 | 64 |
5-8 | 32 |
9-256 | 16 |
从上表可以看出,期望权重越大,延迟因子越小。即作业的期望权重越大,则其调度优先级可能越高。
在其中一个实施例中,步骤S3122b,包括两种情形:
情形一、若某一任务的作业在本次调度中均没有被选定为目标作业,则将所述某一任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的调整因子,将各个作业的该初始历史权重与对应的调整因子的差值作为各个所述作业的当前历史权重。
情形二、若某一任务的作业在本次调度中被选定为目标作业,将所述某一任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的第一调整因子,将延迟因子的最大值与各个作业对应的延迟因子的比值作为各个作业的第二调整因子,并根据各个作业的初始历史权重、第一调整因子与第二调整因子计算获得当前历史权重。
在其中一个可选地实施例中,若某一所述待调度作业集中新增同一所述任务的多个作业,或者同一所述任务的多个作业均被发射之后,更新所述某一待调度作业集中各个作业的期望权重和初始历史权重。
具体地,若某一所述待调度作业集中新增同一所述任务的多个作业,或者同一所述任务的多个作业均被发射之后,任务调度装置100更新所述某一待调度作业集中各个作业的期望权重和初始历史权重。
本实施例对各个作业的期望权重和初始历史权重进行更新,可以保证任务的调度过程所使用的信息准确。
作为一种可选地实施方式,如图19所示,步骤S3300b,包括:
步骤S3310b:若各个所述预发射作业的目标权重相同,则根据各个所述预发射作业的期望权重确定所述目标作业。
具体地,若各个所述预发射作业的目标权重相同,任务调度装置100根据各个所述预发射作业的期望权重确定所述目标作业。
步骤S3320b:若各个所述预发射作业的目标权重不同时,则将目标权重最大的所述预发射作业作为所述目标作业。
具体地,若各个所述预发射作业的目标权重不同时,任务调度装置100将目标权重最大的所述预发射作业作为所述目标作业。
本实施例选择目标作业的方法,可以保证高权重任务快速抢占处理器资源的同时,优化调度结果。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种任务调度方法,其特征在于,所述方法包括:
获取任务的分解信息和全部任务信息,以及处理器的状态信息;
根据各个所述任务的分解信息和全部任务信息,以及所述处理器的状态信息,分别将所述任务的各个作业与处理器进行匹配,并将与所述处理器匹配成功的所述作业添加至待调度作业集;
根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业,获得调度信息,所述调度信息用于确定所述作业在处理器上的执行顺序。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在预设时间内,所述任务中的一个以上的作业与所述处理器未匹配成功时,则获取所述任务的调度失败信号。
3.根据权利要求1所述的方法,其特征在于,所述根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业的步骤,包括:
根据所述待调度作业集中各个所述作业的目标权重确定所述各个所述作业的调度优先级;
根据所述各个所述作业的调度优先级,将所述待调度作业集中调度优先级最高的作业作为所述目标作业。
4.根据权利要求1所述的方法,其特征在于,所述待调度作业集的数量为一个以上时,每个所述待调度集存储同一作业类别的作业,所述根据所述待调度作业集中各个作业的目标权重从所述待调度作业集中选定目标作业的步骤,包括:
根据每个待调度作业集中各个作业的期望权重和当前历史权重,确定每个所述待调度作业集中各个作业的目标权重;
将各个所述待调度作业集中目标权重最大的所述作业,作为对应的作业类别的预发射作业;
根据各个所述预发射作业的目标权重确定所述目标作业。
5.根据权利要求4所述的方法,其特征在于,所根据每个待调度作业集中多个作业的期望权重和当前历史权重,确定每个所述待调度作业集中各个作业的目标权重的步骤,包括:
根据每一所述待调度作业集中各个作业的配置权重,以及每一所述待调度作业集中多个作业的总配置权重,对应获得每一所述待调度作业集中各个作业的期望权重;
根据每一所述待调度作业集中各个所述作业的期望权重,获得每一所述待调度作业集中各个所述作业对应的当前历史权重;
计算每一所述待调度作业集中各个所述作业的期望权重和当前历史权重的权重差值,根据所述权重差值获得各个作业的目标权重。
6.根据权利要求5所述的方法,其特征在于,每一所述待调度作业集中各个作业的配置权重为所述作业所属的任务的配置权重,所述作业的期望权重为所述作业所属的任务的期望权重。
7.根据权利要求5所述的方法,其特征在于,所述根据每一所述待调度作业集中各个所述作业的期望权重,获得每一所述待调度作业集中各个所述作业对应的当前历史权重的步骤,包括:
根据每一所述待调度作业集中各个所述作业的期望权重,确定各个所述作业对应的延迟因子;
根据每一所述待调度作业集中各个所述作业的初始历史权重和所述作业对应的延迟因子,获得所述作业的当前历史权重。
8.根据权利要求7所述的方法,其特征在于,所述根据每一所述待调度作业集中各个所述作业的期望权重确定各个所述作业对应的延迟因子的步骤,包括:
根据各个作业的期望权重以及预设的映射关系,确定各个作业对应的延迟因子。
9.根据权利要求7所述的方法,其特征在于,所述根据每一所述待调度作业集中各个所述作业的初始历史权重和所述作业对应的延迟因子,获得所述作业的当前历史权重的步骤,包括:
若某一任务的作业在本次调度中均没有被选定为目标作业,则将所述某一任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的调整因子,将各个作业的该初始历史权重与对应的调整因子的差值作为各个所述作业的当前历史权重;
若某一任务的作业在本次调度中被选定为目标作业,将所述某一任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的第一调整因子,将延迟因子的最大值与各个作业对应的延迟因子的比值作为各个作业的第二调整因子,并根据各个作业的初始历史权重、第一调整因子与第二调整因子计算获得当前历史权重。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若某一所述待调度作业集中新增同一所述任务的多个作业,或者同一所述任务的多个作业均被发射之后,更新所述某一待调度作业集中各个作业的期望权重和初始历史权重。
11.根据权利要求4所述的方法,其特征在于,所述根据各个所述预发射作业的目标权重确定所述目标作业的步骤,包括:
若各个所述预发射作业的目标权重相同,则根据各个所述预发射作业的期望权重确定所述目标作业;
若各个所述预发射作业的目标权重不同时,则将目标权重最大的所述预发射作业作为所述目标作业。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取与匹配处理器成功的作业对应的处理器标识,所述处理器标识用于标识处理器的身份。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811179192.1A CN111026518B (zh) | 2018-10-10 | 2018-10-10 | 任务调度方法 |
PCT/CN2019/110273 WO2020073938A1 (zh) | 2018-10-10 | 2019-10-10 | 任务调度器、任务处理系统及任务处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811179192.1A CN111026518B (zh) | 2018-10-10 | 2018-10-10 | 任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026518A true CN111026518A (zh) | 2020-04-17 |
CN111026518B CN111026518B (zh) | 2022-12-02 |
Family
ID=70191929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811179192.1A Active CN111026518B (zh) | 2018-10-10 | 2018-10-10 | 任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026518B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026522A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务调度装置、任务调度器和任务处理装置 |
CN111459645A (zh) * | 2020-04-22 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置和电子设备 |
CN113760483A (zh) * | 2020-06-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 执行任务的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5437032A (en) * | 1993-11-04 | 1995-07-25 | International Business Machines Corporation | Task scheduler for a miltiprocessor system |
CN103365708A (zh) * | 2012-04-06 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 任务调度方法和装置 |
CN105373429A (zh) * | 2014-08-20 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 任务调度方法、装置及系统 |
-
2018
- 2018-10-10 CN CN201811179192.1A patent/CN111026518B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5437032A (en) * | 1993-11-04 | 1995-07-25 | International Business Machines Corporation | Task scheduler for a miltiprocessor system |
CN103365708A (zh) * | 2012-04-06 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 任务调度方法和装置 |
CN105373429A (zh) * | 2014-08-20 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 任务调度方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
李橙: "嵌入式MPSoC系统中的任务调度管理研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026522A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务调度装置、任务调度器和任务处理装置 |
CN111459645A (zh) * | 2020-04-22 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置和电子设备 |
CN111459645B (zh) * | 2020-04-22 | 2023-06-30 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置和电子设备 |
CN113760483A (zh) * | 2020-06-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 执行任务的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111026518B (zh) | 2022-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038069B (zh) | Hadoop平台下动态标签匹配DLMS调度方法 | |
CN111026521B (zh) | 任务调度器、任务处理系统及任务处理方法 | |
US3916383A (en) | Multi-processor data processing system | |
JP6920170B2 (ja) | プロセッサ、及び複数のメモリ装置を含む分散計算システム内のワークフローを制御する方法 | |
CN111026518B (zh) | 任务调度方法 | |
JP2019522850A (ja) | ディープニューラルネットワーク用のアクセラレータ | |
US8688956B2 (en) | Execution engine for executing single assignment programs with affine dependencies | |
US20070226696A1 (en) | System and method for the execution of multithreaded software applications | |
US20140173192A1 (en) | Execution engine for executing single assignment programs with affine dependencies | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
KR20210057184A (ko) | 이종 cpu/gpu 시스템에서 데이터 흐름 신호 처리 애플리케이션 가속화 | |
CN111178494A (zh) | 神经处理单元、神经处理系统和应用系统 | |
CN113748399B (zh) | 在异构计算资源上调度计算图的方法、装置及可读介质 | |
CN104123304A (zh) | 数据驱动的并行排序系统和方法 | |
CN105027075A (zh) | 具有共享前端单元的处理核 | |
CN111047045B (zh) | 机器学习运算的分配系统及方法 | |
CN111026540B (zh) | 任务处理方法、任务调度器和任务处理装置 | |
US11875425B2 (en) | Implementing heterogeneous wavefronts on a graphics processing unit (GPU) | |
US11221979B1 (en) | Synchronization of DMA transfers for large number of queues | |
CN111026523A (zh) | 任务调度控制方法、任务调度器及任务处理装置 | |
EP3108358B1 (en) | Execution engine for executing single assignment programs with affine dependencies | |
CN111026522A (zh) | 任务调度装置、任务调度器和任务处理装置 | |
CN111026517B (zh) | 任务分解装置及任务调度器 | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
Aghapour | Integrated ARM big |
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 |