技术领域
[0001] 本申请涉及计算机应用技术领域,特别是涉及一种任务调度方法。
相关背景技术
[0002] 随着计算机技术的飞速发展,出现了诸如多核处理器计算机系统(Multi-core processor Computing System)以及多个处理器的多处理器计算机系统(Multi-processor Computing System)。该计算机系统的多个核处理器或多个处理器可以形成主从结构,例如,多个处理器可以包括一个主处理器和多个从处理器,主处理器可以用于对待处理任务进行分配调度,还可以用于监控及控制各个从处理器的运行。但当待处理任务的任务量较大时,如需处理大规模的机器学习数据时,上述采用主处理器进行任务分配及调度的方式的效率较低,影响计算机系统的处理效率。
具体实施方式
[0049] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0050] 如图1所示,本申请实施例提供了一种任务调度器100,该任务调度器100可以连接在第一处理器200和第二处理器300之间,该任务调度器100用于任务的分解、调度及监控,可以提高任务的处理效率。具体地,该任务调度器100可以包括任务缓存装置110、任务分派装置120及状态监控装置130,任务缓存装置110及任务分派装置120依次连接,状态监控装置130连接任务分派装置120。可选地,该任务缓存装置110可以连接至全局内存400,全局内存中以任务队列的方式存储有多个任务及各个任务的基本任务信息和全部任务信息等等。例如,如图1所示,第一处理器200、全局内存400、第二处理器及任务调度器均连接至互联模块500,通过互联模块500实现相互连接。可选地,互联模块500可以是二叉树或2D-mesh等互联模块。
[0051] 其中,任务缓存装置110用于存储多个任务对应的基本任务信息和全部任务信息;其中,该任务的基本任务信息可以包括该任务的配置信息,如配置信息包括任务类别、任务的权重及任务的输入数据等等。其中,多个任务根据其功能的不同可以分为事件任务、通信任务及数据处理任务等,即该任务类别可以包括事件任务、通信任务及数据处理任务,进一步地,该数据处理任务的任务类别还可以包括block(阻塞任务)、cluster(聚类任务)和union(联合任务)。该任务的全部任务信息可以包括该任务的配置信息等基本任务信息,以及该任务对应的指令及数据等信息。可选地,该多个任务以任务队列的形式存储于任务缓存装置110中,多个任务可以形成多个任务队列,如多个任务按照其任务类别形成多个任务队列。每个任务队列中队列头指针指向的任务的基本任务信息可以传送至任务分派装置
120中。
[0052] 任务分派装置120用于从任务缓存装置110中获取任务的基本任务信息,并根据任务的基本任务信息获得任务的任务注册请求;状态监控装置130用于根据接收到的任务注册请求,为任务分配一个任务标识,并将任务的任务标识回传给任务分派装置120,以完成任务的注册过程。本申请实施例中,注册完成的任务(即获得任务标识的任务)能够被任务分派装置120进行分解及调度,并进一步发送至第二处理器300进行处理。
[0053] 任务分派装置120还用于在接收到任务的任务标识之后,将该任务标记为待调度任务,并根据该待调度任务的基本任务信息对该任务进行预拆分,将该待调度任务分为多个作业,获得待调度任务的分解信息。进一步地,任务分派装置120还用于根据待调度任务的分解信息及第二处理器300的处理器状态信息确定目标作业,获得调度信息。本申请实施例中,通过上述的任务调度器,能够实现神经网络等数据量较大数据的调度及处理,减少第一处理器的运算量,提高任务的调度及处理效率,进而提升计算机系统的处理效率。
[0054] 在一个实施例中,该任务分派装置120可以包括任务分解装置121和任务调度装置122,该任务分解装置121连接任务缓存装置110和状态监控装置130,该任务调度装置122连接任务缓存装置110和任务分解装置121。其中,该任务分解装置121用于对待调度任务进行预拆分,将待调度任务分解为多个作业,获得待调度任务的分解信息。该任务调度装置122用于根据待调度任务的分解信息等对多个作业进行调度,确定目标作业,获得调度信息。
[0055] 具体地,任务分解装置121用于从任务缓存装置110中获取一个以上的任务的基本任务信息,分别根据各个任务的基本任务信息获得任务的任务注册请求,并将各个任务注册请求传送至状态监控装置130,状态监控装置130能够为各个任务分配一个任务标识,以完成任务的注册。进一步地,任务分解装置121在接收到状态监控装置130回传的任务标识时,将该具有任务标识的任务标记为待调度任务,并分别根据待调度任务的基本任务信息,对各个待调度任务进行预拆分(将具有任务标识的任务分解为多个作业),获得待调度任务的分解信息。本申请实施例中,各个待调度任务的预拆分可以并行进行,即在获得该任务的任务标识时,则可以任务该任务注册成功,此时任务分解装置121即可将该任务标记为待调度任务,并将该待调度任务分解为多个作业,获得待调度任务的分解信息。这样,可以提高任务的处理效率。
[0056] 可选地,任务的基本任务信息中包含任务的作业总数量和每个作业的作业大小;其中,任务的作业总数量是指该待调度任务被分解形成的作业的数量,作业的大小是指每个作业的数据容量。任务分解装置121能够获取该待调度任务的基本任务信息,并根据该待调度任务的基本任务信息中的作业总数量和各个作业的作业大小,将待调度任务分解为多个作业,得到待调度任务的分解信息。可选地,该待调度任务的作业总数量可以为2n,n为正整数,例如,该待调度任务的作业总数量可以为128、256、1024或2048等等。更进一步地,每个作业能够被分配至对应的处理器上进行处理,因此每个作业的大小可以为对应的处理器字长的整数倍,其中,处理器字长可以反应处理器单次处理数据的能力。
[0057] 同时,任务分解装置121还可以获得待调度任务的任务调度请求,并将该任务调度请求传送至任务调度装置122,以启动该任务的调度过程。任务调度装置122用于根据其获得的任务调度请求,获取第二处理器的处理器状态信息,以及待调度任务的分解信息,根据处理器状态信息以及待调度任务的分解信息确定当前能够被调度的作业,并将当前能够被调度的作业添加至待调度作业集中,之后从该待调度作业集中选定目标作业,获得调度信息。其中,该调度信息可以包括目标作业的作业标识,以及该目标作业对应的第二处理器300的处理器标识。在其他实施例中,该调度信息为多个目标作业的调度信息的集合,其还可以包括多个目标作业的发射顺序信息等等。
[0058] 可选地,第二处理器300的处理器状态信息可以包括处理器的类型信息、处理器的运行状态信息(处理器是否空闲)以及处理器的处理能力等信息。任务调度装置122可以根据待调度任务的全部任务信息及任务分解信息,可以获得该待调度任务包含的多个作业以及各个作业的作业信息,其中,各个作业的作业信息可以包括各个作业所需的处理器类型,各个作业的作业大小等信息。例如,任务调度装置122可以获得该待调度任务的各个作业所需的第二处理器300信息(如处理器类型等信息),根据各个作业的大小获得各个作业所需的处理器的处理能力等信息。任务调度装置122还用于根据各个待调度任务的各个作业的作业信息以及处理器状态信息,分别将待调度任务的各个作业与第二处理器300进行匹配,并将与第二处理器300匹配成功的作业添加至待调度作业集。其中,该待调度作业集可以包括多个待调度任务的作业。
[0059] 可选地,若任务调度装置122确定同一待调度任务的所有作业与第二处理器均匹配成功时,则将该调度任务的各个作业均作为当前能够被调度的作业,并将该当前能够被调度的作业添加至待调度作业集中。进一步地,若作业与第二处理器300匹配成功时,任务调度装置122还可以进一步获得与该作业匹配的第二处理器300的处理器标识等信息。可选地,若在预设时间(如128节拍或256节拍)内,待调度任务中的一个以上的作业与第二处理器300未匹配成功时,则任务调度装置122获得任务的调度失败信号,并将待调度任务的调度失败信号传送给任务分解装置121,以便任务分解装置121的状态控制电路1213根据该调度失败信号,更新该任务的任务状态,以便在下一次调度中重新对该任务进行调度。
[0060] 当然,在其他实施例中,任务调度装置可以在确定某个作业与第二处理器匹配成功时,将与第二处理器匹配成功的作业作为当前能够被调度的作业,并将该当前能被调度的作业添加至待调度作业集中。当获得该作业所属的待调度任务的调度失败信号时,则可以从待调度作业集中删除该调度失败的任务的所有作业。
[0061] 进一步地,任务调度装置122还用于根据待调度作业集中各个作业的目标权重从待调度作业集中选定目标作业,获得调度信息。其中,该待调度作业集中各个作业的目标权重可以计算获得,当然,该待调度作业集中各个作业的目标权重也可以是预先设置。
[0062] 可选地,在一个实施例中,任务调度装置122用于根据待调度作业集中各个作业的目标权重,并根据待调度作业集中各个作业的目标权重确定各个作业的调度优先级,即任务调度装置122可以根据待调度作业集中各个作业的目标权重大小,对各个作业进行排序,获得各个作业的调度优先级。之后,任务调度装置122可以根据各个作业的调度优先级,将待调度作业集中调度优先级最高的作业作为目标作业,获得调度信息。其中,该调度优先级最高的作业可以是目标权重最大的作业,即该目标作业为待调度作业集中目标权重最大的作业。这样,通过优先调度目标权重最大的作业,能够实现目标作业优先抢占处理器资源,从而可以优化任务调度过程。
[0063] 在一个实施例中,待调度作业集的数量为一个以上,每个待调度集用于存储同一作业类别的作业,其中,每个作业的作业类别可以与该作业所属的任务的任务类别相同。具体地,任务调度装置122用于分别根据每个作业类别对应的待调度作业集中多个作业的期望权重和当前历史权重,确定每个作业类别对应的待调度作业集中各个作业的目标权重。具体地,任务调度装置122可以计算作业类别对应的待调度作业集中各个作业的期望权重和当前历史权重的权重差值,对该权重差值进行量化获得各个作业的目标权重。可选地,作业的目标权重与权重差值呈正比关系,即权重差值越大,则作业的目标权重越大,以保证该作业能够被及时调度。若当前历史权重和期望权重的权重差值越大,则表明该作业的历史调度次数越少,因此,可以通过该权重差值来提高作业的调度优先级。之后,任务调度装置
122可以将作业类别对应的待调度作业集中目标权重最大的作业作为作业类别的预发射作业,并根据各个预发射作业的目标权重确定目标作业,获得调度信息。
[0064] 可选地,任务调度装置122可以将各个预发射作业的目标权重进行比较,并将目标权重最大的预发射作业作为目标作业。若各个预发射作业的目标权重相同时,则任务调度装置122可以根据各个预发射作业的期望权重确定目标作业。例如,当各个预发射作业的目标权重相同时,任务调度装置122可以将期望权重最大的预发射作业作为目标作业。可选地,在其他实施例中,当各个预发射作业的目标权重相同时,也可以根据各个预发射作业的当前历史权重确定目标作业。例如,可以将当前历史权重最小的预发射作业作为目标作业,以避免历史权重较小的作业能够优先进行调度。
[0065] 可选地,任务调度装置122可以根据作业类别对应的待调度作业集中各个作业的配置权重,以及作业类别对应的待调度作业集中多个作业的总配置权重,获得作业类别对应的待调度作业集中各个作业的期望权重。其中,各个作业的配置权重可以是该作业所属的任务的基本任务信息中包含配置权重,即各个作业的初始权重。该作业的期望权重可以等于作业的配置权重与该待调度作业集中的总配置权重之比。可选地,作业类别对应的待调度作业集中各个作业的配置权重为作业所属的任务的配置权重,即同一任务中各个作业的配置权重相同。此时,任务调度装置122只需根据作业所属的任务的配置权重,以及该待调度作业集中多个任务的总配置权重计算获得各个作业的期望权重。即该作业的期望权重可以等于作业所属的任务的配置权重与该待调度作业集中多个任务的总配置权重之比。可选地,作业的期望权重为作业所属的任务的期望权重。
[0066] 进一步地,任务调度装置122可以根据作业类别对应的待调度作业集中各个作业的期望权重,获得作业类别对应的待调度作业集中各个作业对应的当前历史权重。可选地,任务调度装置122可以根据各个待调度作业集中各个作业的期望权重,以及预设的映射关系,获得各个作业对应的当前历史权重。例如,任务调度装置122可以根据各个作业的期望权重以及预设的映射关系,确定各个作业对应的延迟因子;根据各个作业的初始历史权重和作业对应的延迟因子,获得作业的当前历史权重。其中,各个作业的初始历史权重可以是各个作业的配置权重或上一次调度过程中的历史权重。该预设的映射关系如下表所示:
[0067]期望权重 延迟因子
1 256
2 128
3-4 64
5-8 32
9-256 16
[0068] 从上表可以看出,期望权重越大,延迟因子越小。即作业的期望权重越大,则其调度优先级可能越高。
[0069] 可选地,若一个任务的作业在本次调度中均没有被调度,即该任务的所有作业在本次调度中均没有被选定为目标作业,则任务调度装置122可将该任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的调整因子,并将各个作业的该初始历史权重与其对应的调整因子的差值作为该作业的当前历史权重。若一个任务的作业在本次调度中被调度,即该目标作业属于该任务时,任务调度装置122可以更新该任务的其他作业的历史权重。具体地,任务调度装置122可将该任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的第一调整因子,将延迟因子的最大值与该作业对应的延迟因子的比值作为各个作业的第二调整因子,并根据各个作业的初始历史权重、第一调整因子与第二调整因子计算获得当前历史权重。例如,该当前历史权重=初始历史权重-第一调整因子+第二调整因子。
[0070] 进一步地,任务调度装置122还可以在作业类别对应的待调度作业集中新增同一任务的多个作业,或者同一任务的多个作业均被发射之后,则更新作业类别对应的待调度作业集中各个作业的期望权重和初始历史权重。当该作业为新增的作业时,该作业的初始历史权重即为其配置权重。
[0071] 更进一步地,任务调度装置122能够根据调度信息从任务缓存装置110中获取目标作业所属的任务的全部任务信息,从任务分解装置121中获取目标作业所属的任务的分解信息,并将目标作业所属的任务的分解信息及全部任务信息打包传送至第二处理器300。再进一步地,任务分解装置121可以在待调度任务调度完成时,获得该待调度任务对应的调度结束信息,并将待调度任务的调度结束信息传送至任务缓存装置110和寄存器堆140,以销毁该调度结束的任务,释放该任务在任务缓存装置110和寄存器堆140中的占用空间,提高空间利用率。
[0072] 上述的任务调度器的工作原理,具体可参见下文中的任务调度方法。本申请实施例中的任务调度方法,可应用于上述的任务调度器中,以实现任务的分解及调度。如图2所示,本申请实施例的任务调度方法,包括如下步骤:
[0073] S100、任务分解装置根据各个待调度任务的基本任务信息,获得各个待调度任务的分解信息,以及各个待调度任务的任务调度请求;其中,该待调度任务是指注册成功的任务,每个待调度任务均具有任务标识,该任务标识可以用于区别不同的任务。
[0074] 具体地,任务分解装置可以根据各个待调度任务的基本任务信息,分别对各个待调度任务进行预拆分,将待调度任务分解为多个作业,获得各个待调度任务的分解信息。同时,任务分解装置还可以获得各个待调度任务的任务调度请求传送至任务调度装置。
[0075] S200、任务调度装置根据在接收到待调度任务的任务调度请求时,获取待调度任务的分解信息及第二处理器的处理器状态信息,根据待调度任务的分解信息获得待调度任务包含的多个作业以及各个作业的作业信息。
[0076] 具体地,任务调度装置122可以根据其获得的任务调度请求,获取第二处理器的处理器状态信息以及待调度任务的分解信息。进一步地,任务调度装置122可以根据待调度任务的分解信息,确定该待调度任务包含的作业以及各个作业的作业信息。其中,各个作业的作业信息可以包括各个作业所需的处理器类型,各个作业的作业大小等信息。第二处理器300的处理器状态信息可以包括处理器的类型信息、处理器的运行状态信息(处理器是否空闲)以及处理器的处理能力等信息。
[0077] S300、任务调度装置分别根据各个作业的作业信息及第二处理器的处理器状态信息,确定当前能够被调度的作业,并将当前能够被调度的作业添加至待调度作业集中。
[0078] 具体地,任务调度装置122能够根据各个作业的作业信息,以及第二处理器的处理器状态信息,将各个作业与第二处理器进行匹配,以确定当前能够被调度的作业,并将当前能够被调度的作业添加至待调度作业集中。
[0079] S400、任务调度装置从待调度作业集中选定目标作业,获得调度信息。其中,该调度信息可以包括目标作业的作业标识,以及该目标作业对应的第二处理器300的处理器标识。在其他实施例中,该调度信息为多个目标作业的调度信息的集合,其还可以包括多个目标作业的发射顺序信息等等。
[0080] 可选地,如图3所示,在上述步骤S100之前,上述方法还包括如下步骤:
[0081] S010、任务分解装置获取一个以上的任务的基本任务信息,分别根据任务的基本任务信息获得各个任务的任务注册请求;
[0082] S020、状态监控装置根据接收到的任务的任务注册请求,为每个任务分配一个任务标识,并将各个任务的任务标识传送至任务分解装置;
[0083] S030、任务分解装置将具有任务标识的任务标记为待调度任务。
[0084] 具体地,任务分解装置121可以从任务缓存装置110中获取任务的基本任务信息,并根据任务的基本任务信息获得任务的任务注册请求;状态监控装置130用于根据接收到的任务注册请求,为任务分配一个任务标识,并将任务的任务标识回传给任务分解装置121,以完成任务的注册过程。进一步地,任务分解装置121可以将具有任务标识的任务标记为待调度任务,该注册完成的待调度任务(即获得任务标识的任务)能够被任务分派装置
120进行分解及调度。
[0085] 进一步地,在上述步骤S010之前,上述方法还包括如下步骤:
[0086] 任务分解装置根据任务的基本任务信息确定任务存在前置任务时,向状态监控装置发送前置任务查询请求;
[0087] 状态监控装置根据前置任务查询请求,确定任务的前置任务是否执行完毕,并将查询结果反馈至任务分解装置;
[0088] 任务分解装置在根据查询结果确定任务的前置任务执行完毕之后,再向状态监控装置发送任务注册请求。
[0089] 具体地,该基本任务信息中还包含任务的依赖关系信息,任务分解装置121可以根据基本任务信息中的依赖关系信息判断当前任务是否存在前置任务,并在确定该当前任务存在前置任务时,向状态监控装置130发送前置任务查询请求,以确定该当前任务的前置任务是否执行完毕。状态监控装置130能够记录各个任务的执行完毕信息,进一步可以根据前置任务查询请求,确定任务的前置任务是否执行完毕,并将查询结果反馈至任务分解装置121。任务分解装置121在根据查询结果确定任务的前置任务执行完毕之后,可以向状态监控装置130发送任务注册请求。若任务分解装置121根据查询结果确定任务的前置任务未执行完毕,则可以暂停该任务的注册,即不会向状态监控装置130发送相应的任务注册请求。
这样,只有在当前任务的前置任务执行完毕之后,才执行当前任务的注册过程,可以保证各个任务的执行顺序的正确性,进而保证运算结果的准确性及可靠性。
[0090] 可选地,待调度任务的基本任务信息中包含待调度任务的作业总数量和每个作业的作业大小;上述步骤S100还包括如下步骤:
[0091] 任务分解装置根据待调度任务的作业总数量和各个作业的作业大小,获得待调度任务的分解信息;其中,待调度任务的作业总数量为2n,其中,n为正整数;例如,该待调度任务的作业总数量可以为128、256、1024或2048等等。该待调度任务的各个作业的作业大小为处理器字长的整数倍。
[0092] 可选地,上述步骤S300还可以包括如下步骤:
[0093] S310、任务调度装置分别根据各个作业的作业信息及第二处理器的处理器状态信息,分别将各个作业与第二处理器进行匹配;
[0094] S320、若任务调度装置确定同一待调度任务的所有作业与第二处理器匹配成功时,则待调度任务的各个作业作为当前能够被调度的作业,并将当前能够被调度的作业添加至待调度作业集。
[0095] 具体地,第二处理器300的处理器状态信息可以包括处理器的类型信息、处理器的运行状态信息(处理器是否空闲)以及处理器的处理能力等信息。任务调度装置122可以根据待调度任务的全部任务信息及任务分解信息,可以获得该待调度任务包含的多个作业以及各个作业的作业信息,其中,各个作业的作业信息可以包括各个作业所需的处理器类型,各个作业的作业大小等信息。例如,任务调度装置122可以获得该待调度任务的各个作业所需的第二处理器300信息(如处理器类型等信息),根据各个作业的大小获得各个作业所需的处理器的处理能力等作业信息。
[0096] 任务调度装置122可以根据各个作业的作业信息以及处理器状态信息,分别将各个作业与第二处理器300进行匹配,并将与第二处理器300匹配成功的作业添加至待调度作业集,其中,该待调度作业集可以包括多个待调度任务的作业。具体地,若任务调度装置122确定同一待调度任务的所有作业与第二处理器均匹配成功时,则将该调度任务的各个作业均作为当前能够被调度的作业,并将该当前能够被调度的作业添加至待调度作业集中。当然,在其他实施例中,任务调度装置可以在确定某个作业与第二处理器匹配成功时,将与第二处理器匹配成功的作业作为当前能够被调度的作业,并将该当前能被调度的作业添加至待调度作业集中。当获得该作业所属的待调度任务的调度失败信号时,则可以从待调度作业集中删除该调度失败的任务的所有作业。
[0097] 进一步地,上述方法还包括如下步骤:
[0098] 任务调度装置在预设时间内,确定待调度任务中的一个以上的作业与第二处理器未匹配成功时,则获得待调度任务的调度失败信号,并将待调度任务的调度失败信号传送给任务分解装置。
[0099] 可选地,该预设时间可以是128或256个节拍。若在接收到任务调度请求之后的预设时间内,该待调度任务中的一个以上的作业与第二匹配器未匹配成功时,则获得该待调度任务的调度失败信号,并将该待调度任务的调度失败信号传送至任务分解装置。任务分解装置可以根据其接收到的调度失败信号,将该调度失败的任务仍然标记为待调度任务,即将该调度失败的任务的任务状态重设为待调度状态,以便在下一次调度中重新对该任务进行调度。
[0100] 在一个实施例中,上述步骤S400还可以包括如下步骤:
[0101] 任务调度装置根据待调度作业集中各个作业的目标权重,确定各个作业的调度优先级;
[0102] 任务调度装置根据各个作业的调度优先级,将待调度作业集中调度优先级最高的作业作为目标作业,获得调度信息。
[0103] 具体地,任务调度装置122可以将该待调度作业集中的各个作业的目标权重,对该待调度作业集中的多个作业进行排序,获得各个作业的调度优先级,并将该调度优先级最高的作业作为目标作业,获得调度信息。
[0104] 在一个实施例中,待调度作业集的数量为一个以上,每个待调度集用于存储同一作业类别的作业;上述的步骤S400还可以包括如下步骤:
[0105] S410、任务调度装置分别根据每个作业类别对应的待调度作业集中各个作业的期望权重和当前历史权重,确定每个作业类别对应的待调度作业集中各个作业的目标权重。
[0106] 具体地,任务调度装置122可以根据作业类别对应的待调度作业集中各个作业的配置权重,以及作业类别对应的待调度作业集中多个作业的总配置权重,获得作业类别对应的待调度作业集中各个作业的期望权重。其中,各个作业的配置权重可以是该作业所属的任务的基本任务信息中包含配置权重,即各个作业的初始权重。该作业的期望权重可以等于作业的配置权重与该待调度作业集中的总配置权重之比。
[0107] 可选地,作业类别对应的待调度作业集中各个作业的配置权重为作业所属的任务的配置权重,作业的期望权重为作业所属的任务的期望权重。即同一任务中各个作业的配置权重相同,同一任务中各个作业的期望权重也相同。此时,任务调度装置122只需根据作业所属的任务的配置权重,以及该待调度作业集中多个任务的总配置权重计算获得各个作业的期望权重。即该作业的期望权重可以等于作业所属的任务的配置权重与该待调度作业集中多个任务的总配置权重之比。
[0108] 进一步地,任务调度装置122可以根据作业类别对应的待调度作业集中各个作业的期望权重,获得作业类别对应的待调度作业集中各个作业对应的当前历史权重,并根据各个作业的期望权重及当前历史权重计算获得目标权重。具体地,该任务调度装置122可以根据各个作业的期望权重确定各个作业对应的延迟因子,可选地,任务调度装置122可以根据各个作业的期望权重以及预设的映射关系,确定各个作业对应的延迟因子。例如,该预设的映射关系如下表所示:
[0109]期望权重 延迟因子
1 256
2 128
3-4 64
5-8 32
9-256 16
[0110] 从上表可以看出,期望权重越大,延迟因子越小。即作业的期望权重越大,则其调度优先级可能越高。
[0111] 之后,任务调度装置122可以根据各个作业的初始历史权重和作业对应的延迟因子,获得作业的当前历史权重,并计算作业类别对应的待调度作业集中各个作业的期望权重和当前历史权重的权重差值,对该权重差值进行量化获得各个作业的目标权重。可选地,作业的目标权重与权重差值呈正比关系,即权重差值越大,则作业的目标权重越大,以保证该作业能够被及时调度。若当前历史权重和期望权重的权重差值越大,则表明该作业的历史调度次数越少,因此,可以通过该权重差值来提高作业的调度优先级。其中,各个作业的初始历史权重可以是各个作业的配置权重或上一次调度过程中的历史权重。
[0112] 更进一步地,在一次调度结束之后,任务调度装置122可以根据各个作业的初始历史权重和作业对应的延迟因子,更新作业的当前历史权重。可选地,若一个任务的作业在本次调度中均没有被调度,即该任务的所有作业在本次调度中均没有被选定为目标作业,则任务调度装置122可将该任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的调整因子,并将各个作业的该初始历史权重与其对应的调整因子的差值作为该作业的当前历史权重。若一个任务的作业在本次调度中被调度,即该目标作业属于该任务时,任务调度装置122可以更新该任务的其他作业的历史权重。具体地,任务调度装置122可将该任务的各个作业的初始历史权重与延迟因子的比值作为各个作业的第一调整因子,将延迟因子的最大值与该作业对应的延迟因子的比值作为各个作业的第二调整因子,并根据各个作业的初始历史权重、第一调整因子与第二调整因子计算获得当前历史权重。例如,该当前历史权重=初始历史权重-第一调整因子+第二调整因子。
[0113] 再进一步地,任务调度装置122可以在作业类别对应的待调度作业集中新增同一任务的多个作业,或者同一任务的多个作业均被发射之后,则更新作业类别对应的待调度作业集中各个作业的期望权重和初始历史权重。当该作业为新增的作业时,该作业的初始历史权重即为其配置权重。
[0114] S420、任务调度装置将作业类别对应的待调度作业集中目标权重最大的作业作为作业类别的预发射作业。
[0115] 具体地,任务调度装置122可以根据各个作业的目标权重,将各个作业类别对应的待调度集中的作业进行排序,并将目标权重最大的作业作为该作业类别的预发射作业。
[0116] S430、任务调度装置根据各个预发射作业的目标权重确定目标作业,获得调度信息。
[0117] 具体地,任务调度装置在各个预发射作业的目标权重不同时,将目标权重最大的预发射作业作为目标作业。任务调度装置在各个预发射作业的目标权重相同时,根据各个预发射作业的期望权重确定目标作业。例如,当各个预发射作业的目标权重相同时,则可以将各个预发射作业中期望权重最大的一个预发射作业作为目标作业。可选地,在其他实施例中,当各个预发射作业的目标权重相同时,也可以根据各个预发射作业的当前历史权重确定目标作业。例如,可以将当前历史权重最小的预发射作业作为目标作业,以避免历史权重较小的作业能够优先进行调度。
[0118] 下面举例说明本申请的步骤S400中确定目标作业的过程:
[0119] 例如,该任务的任务类别可以是block(阻塞任务)、cluster(聚类任务)和union(联合任务),该阻塞任务包含的作业的作业类别为阻塞作业,简记为作业类别B;该聚类任务包含的作业的作业类别为集群作业,简记为作业类别C;该联合任务包含的作业的作业类别为普通作业,简记为作业类别U。其中,
[0120] 作业类别U对应的待调度作业集一可以表示如下:
[0121]
[0122] 其中,任务调度装置122可以根据作业1的期望权重WU1和当前历史权重HU1,计算获得作业的目标权重TU1,同理,任务调度装置122可以计算获得作业2至作业n的目标权重。进一步地,任务调度装置122可以对作业1至作业n的目标权重进行排序,并将该作业1至作业n中目标权重最大的作业作为预发射作业。例如,该待调度作业集一的预发射作业为作业
1。
[0123] 作业类别B对应的待调度作业集二可以表示如下:
[0124]
[0125] 其中,任务调度装置122可以根据作业1的期望权重WB1和当前历史权重HB1,计算获得作业的目标权重TB1,同理,任务调度装置122可以计算获得作业2至作业m的目标权重。进一步地,任务调度装置122可以对作业1至作业m的目标权重进行排序,并将该作业1至作业m中目标权重最大的作业作为预发射作业。例如,该待调度作业集二的预发射作业为作业
2。
[0126] 作业类别C对应的待调度作业集三可以表示如下:
[0127]
[0128] 其中,任务调度装置122可以根据作业1的期望权重WC1和当前历史权重HC1,计算获得作业的目标权重TC1,同理,任务调度装置122可以计算获得作业2至作业k的目标权重。进一步地,任务调度装置122可以对作业1至作业k的目标权重进行排序,并将该作业1至作业k中目标权重最大的作业作为预发射作业。例如,该待调度作业集二的预发射作业为作业
3。
[0129] 之后,任务调度装置122可以从上述的3个预发射作业中确定目标作业。具体地,若TU1大于TB2,TB2大于TC3时,则可以将该待调度作业集一中的作业1作为目标作业。若TU1、TB2、TC3三者相等时,则可以进一步比较WU1、WB2、及WC3的大小。若WU1大于WB2,WB2大于WC3时,则可以将该待调度作业集一中的作业1作为目标作业。
[0130] 其中,各个作业的期望权重等于其所属任务的期望权重,同一任务的多个作业的期望权重相等。例如,调度作业集一中,作业1和作业2可以同属于同一任务1,作业3和作业4可以同属于同一任务2,该作业n可以属于任务3。其中,任务1的配置权重记为S1,任务2的配置权重记为S2,任务3的配置权重记为S3,则该任务1的期望权重WU1可以等于S1/(S1+S2+S3)。同理,任务2的期望权重WU2可以等于S2/(S1+S2+S3)。作业1和作业2的期望权重均等于其所属任务的期望权重WB1,作业3和作业4的期望权重均等于其所属任务的期望权重WB2。待调度作业集二和待调度作业集三中各个作业的期望权重的计算方法与上述方法类似,此处不再赘述。
[0131] 进一步地,任务调度装置122可以根据各个作业的期望权重确定各个作业的当前历史权重。之后,任务调度装置122可以计算该作业类别对应的待调度作业集中各个作业的期望权重和当前历史权重的权重差值,对该权重差值进行量化获得各个作业的目标权重。可选地,作业的目标权重与权重差值呈正比关系,即权重差值越大,则作业的目标权重越大,以保证该作业能够被及时调度。
[0132] 本申请实施例中,通过采用上述调度机制,能够优化任务调度过程,提高任务调度的效率。
[0133] 在一个实施例中,上述方法还可以包括如下步骤:
[0134] 任务调度装置在获得调度信息之后,从任务缓存装置中获得目标作业所属的待调度任务的全部任务信息,从任务分解装置中获得目标作业所属的待调度任务的分解信息;
[0135] 任务调度装置将调度信息、目标作业所属的待调度任务的全部任务信息,以及目标作业所属的待调度任务的分解信息发送至第二处理器。
[0136] 可选地,任务调度装置122可以在获得调度信息之后,从任务缓存装置中获得目标作业所属的待调度任务的全部任务信息,从任务分解装置中获得目标作业所属的待调度任务的分解信息。同时,任务调度装置122根据调度信息将第二处理器锁定信号设置为高电平之后,再将将调度信息、目标作业所属的待调度任务的全部任务信息,以及目标作业所属的待调度任务的分解信息打包发送至第二处理器300;当完成调度信息的传送之后,将第二处理器300锁定信号设置为低电平。
[0137] 可选地,上述方法还包括如下步骤:
[0138] 任务分解装置在待调度任务调度完成时,获得待调度任务对应的调度结束信息,并将待调度任务的调度结束信息传送至任务缓存装置,以销毁待调度任务。具体地,任务分解装置121在任务调度结束后,可以生成调度结束信息,以释放该待调度任务在任务缓存装置或寄存器堆中的占用空间,从而可以提高存储空间的使用效率。
[0139] 可选地,上述方法还包括如下步骤:
[0140] 任务缓存装置在任务队列的队列头指针与队列尾指针不相同,且任务缓存装置的剩余存储空间大于零时,则向全局内存发送数据读取请求,以向任务缓存装置存入新的任务。具体地,当任务队列的队列头指针与队列尾指针不相同,且任务缓存装置的剩余存储空间大于零时,说明此时该任务队列可以接收新的任务,此时,可以从全局内存中读取新的任务,并将该新的任务放入该任务队列中。
[0141] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0142] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0143] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。