CN106980533B - 基于异构处理器的任务调度方法、装置及电子设备 - Google Patents

基于异构处理器的任务调度方法、装置及电子设备 Download PDF

Info

Publication number
CN106980533B
CN106980533B CN201610032798.7A CN201610032798A CN106980533B CN 106980533 B CN106980533 B CN 106980533B CN 201610032798 A CN201610032798 A CN 201610032798A CN 106980533 B CN106980533 B CN 106980533B
Authority
CN
China
Prior art keywords
processor
module
scheduling
heterogeneous
source
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
CN201610032798.7A
Other languages
English (en)
Other versions
CN106980533A (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201610032798.7A priority Critical patent/CN106980533B/zh
Publication of CN106980533A publication Critical patent/CN106980533A/zh
Application granted granted Critical
Publication of CN106980533B publication Critical patent/CN106980533B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种基于异构处理器的任务调度方法、装置及电子设备,所述方法包括:电子设备中的主处理器监测每个异构从处理器的当前CPU负载,并从各异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器;针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块;针对每个调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器;在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务。本实施例能够提高任务调度效率和成功率。

Description

基于异构处理器的任务调度方法、装置及电子设备
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于异构处理器的任务调度方法、装置及电子设备。
背景技术
在目前的数据分析(如视频分析、图像分析等)系统中,需针对同一数据采用不同的算法进行分析,不同的算法实现方式差别很大,更加适合在指令集完全不同的异构处理器中完成。为了充分均衡地利用各异构处理器资源,这种异构处理器之间的任务调度就显得非常重要。
现有的异构处理器之间的任务调度方法,主要采用反馈或预测的方法对处理线程进行调度。具体地,当源处理器负载过大时,对于源处理器中需要进行调度的线程,采用反馈的方法可以随机地将该线程调度到任一其它处理器中,采用预测的方法需要应用复杂的算法过程,预测可以运行该线程的其它处理器。如果该其它处理器可以处理该线程,则线程调度完成。而如果该处理器的CPU负载已经过大,则该其它处理器不能处理该线程,线程调度失败。此时,需要将该线程调度到另一处理器中,直到有处理器能够处理该线程。
因此,现有的异构处理器之间的任务调度方法,任务调度过程复杂、调度效率较低。并且,以线程为最小单位进行调度,增加了任务调度的难度,很容易造成任务调度的失败。
发明内容
本发明实施例的目的在于提供一种基于异构处理器的任务调度方法、装置及电子设备,以提高异构处理器之间的任务调度的效率和成功率。具体技术方案如下:
第一方面,本发明提供了一种基于异构处理器的任务调度方法,应用于电子设备,所述方法包括:
电子设备中的主处理器监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;
针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块;
针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;
在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务。
进一步地,所述模块属性表中保存有每个算法模块在所述源处理器中的负载量,所述针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块包括:
针对每个所述源处理器,根据该源处理器的当前CPU负载,以及其对应的所述第一设定阈值,计算该源处理器的超负载量;
根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
进一步地,所述根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块包括:
判断是否存在负载量大于所述超负载量的算法模块,如果存在,将所述算法模块确定为调度模块;
如果不存在,判断是否存在至少两个算法模块,所述至少两个算法模块的负载量之和大于所述超负载量,如果存在,将所述至少两个算法模块确定为调度模块。
进一步地,所述模块属性表中针对每个算法模块保存有每个异所述构从处理器对应的调度权重,所述根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,包括:
从所述模块属性表中获得所述调度模块调度到各所述异构从处理器的调度权重;
根据所述调度模块调度到各所述异构从处理器的调度权重,在当前CPU负载小于所述第二设定阈值的所述异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
进一步地,所述模块属性表中保存有每个算法模块在每个所述异构从处理器中的负载量,所述确定调度权重最大的异构从处理器为目标处理器,包括:
针对所述至少一个异构从处理器中的每个异构从处理器,确定其对应的所述第一设定阈值与该异构从处理器的当前CPU负载的差负载量;
识别所述调度模块在所述至少一个异构从处理器中的负载量小于所述差负载量的待确定的目标处理器;
在所述待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
进一步地,所述将所述调度模块调度到所述目标处理器,包括:
发送与所述调度模块对应的实现代码给所述目标处理器,以供所述目标处理器解析并装载所述实现代码。
进一步地,所述方法还包括:
当监测到所述源处理器CPU负载小于第三设定阈值时,将所述调度模块恢复到所述源处理器中运行。
第二方面,本发明提供了一种基于异构处理器的任务调度装置,应用于电子设备,所述装置包括:
监测模块,用于监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;
确定模块,用于针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块;
获取模块,用于针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;
调度模块,用于在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务。
进一步地,所述模块属性表中保存有每个算法模块在所述源处理器中的负载量,所述确定模块包括:
计算子模块,用于针对每个所述源处理器,根据该源处理器的当前CPU负载,以及其对应的所述第一设定阈值,计算该源处理器的超负载量;
第一确定子模块,用于根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
进一步地,所述第一确定子模块具体用于:
判断是否存在负载量大于所述超负载量的算法模块,如果存在,将所述算法模块确定为调度模块;
如果不存在,判断是否存在至少两个算法模块,所述至少两个算法模块的负载量之和大于所述超负载量,如果存在,将所述至少两个算法模块确定为调度模块。
进一步地,所述模块属性表中针对每个算法模块保存有每个所述异构从处理器对应的调度权重,所述获取模块包括:
获得子模块,用于从所述模块属性表中获得所述调度模块调度到各异构从处理器的调度权重;
第二确定子模块,用于根据所述调度模块调度到各所述异构从处理器的调度权重,在当前CPU负载小于所述第二设定阈值的所述异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
进一步地,所述模块属性表中保存有每个算法模块在每个所述异构从处理器中的负载量,所述第二确定子模块具体用于:
针对所述至少一个异构从处理器中的每个异构从处理器,确定其对应的所述第一设定阈值与该异构从处理器的当前CPU负载的差负载量;
识别所述调度模块在所述至少一个异构从处理器中的负载量小于所述差负载量的待确定的目标处理器;
在所述待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
进一步地,所述调度模块具体用于:
发送与所述调度模块对应的实现代码给所述目标处理器,以供所述目标处理器解析并装载所述实现代码。
进一步地,所述装置还包括:
恢复模块,用于当监测模块监测到所述源处理器CPU负载小于第三设定阈值时,将所述调度模块恢复到所述源处理器中运行。
第三方面,本发明提供了一种电子设备,所述电子设备包括:主处理器、至少两个异构从处理器以及用于连接所述主处理器与各异构从处理器的总线,
所述主处理器,用于监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块;针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器;
所述目标处理器,用于与所述源处理器建立连接,接收所述主处理器调度的调度模块,与所述源处理器共同完成所述源处理器对应的任务;
所述源处理器,用于与所述目标处理器建立连接,与所述目标处理器共同完成所述源处理器对应的任务。
进一步地,所述源处理器,具体用于根据所述调度模块所在的线程中各算法模块之间的关系,当所述调度模块的上一个算法模块得到相应的第一数据后,产生第一中断信号;检测到所述目标处理器产生第二中断信号后,从所述目标处理器中获取所述第二数据,并根据所述第二数据生成对应任务的数据结果;
所述目标处理器,具体用于检测到所述源处理器产生所述第一中断信号后,从所述源处理器中获取所述第一数据,采用调度模块对所述第一数据进行处理得到第二数据后,产生所述第二中断信号。
本发明实施例提供的基于异构处理器的任务调度方法、装置及电子设备,所述方法包括:电子设备中的主处理器监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块;针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务。由于在本实施例中,将执行各任务的线程分为多个算法模块,在进行任务调度时,不是以线程为单位进行调度,而是只将一个或多个算法模块进行调度,与线程相比,每一个算法模块的计算量要小得多,因此,以算法模块为单位进行任务调度减小了调度难度,能够提高任务调度的成功率。并且,可以根据模块属性表中保存的算法模块与异构从处理器的对应关系以及各异构从处理器的当前负载量确定目标处理器,针对一个算法模块,能够一次调度成功,不需要进行多次调度,提高了调度效率和成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明提供的基于异构处理器的任务调度方法的一个实施例的示意性流程图;
图2示出了本发明实施例提供的在源处理器的各算法模块中确定调度模块的一种方法的示意性流程图;
图3示出了本发明实施例提供的获取调度模块调度到的目标处理器的一种方法的示意性流程图;
图4示出了根据本发明提供的基于异构处理器的任务调度装置的一个实施例的结构示意图;
图5示出了根据本发明提供的电子设备的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
在目前的数据分析(如视频分析、图像分析等)系统中,不同的算法实现方式差别很大,更加适合在指令集完全不同的异构处理器中完成。为了充分均衡地利用各异构处理器资源,这种异构处理器之间的任务调度就显得非常重要。现有的异构处理器之间的任务调度方法,主要采用反馈或预测的方法对处理线程进行调度,任务调度过程比较复杂、调度效率较低。并且,由于在数据分析系统中,计算过程比较复杂,每个线程处理的计算量也较大,因此,以线程为最小单位进行任务调度的难度较大,很容易造成任务调度的失败。
因此,本发明实施例提供了一种基于异构处理器的任务调度方法,在本实施例中,可以将执行各任务的线程分为多个算法模块,在进行任务调度时,只将执行该任务的线程的一个或多个算法模块进行调度,减小了调度难度,因此,能够提高任务调度的成功率。
具体地,可以将每个线程按执行顺序进一步细分,划分为多个算法模块。为了方便任务调度,在进行模块划分时,可以使各个算法模块尽量独立,各算法模块之间的数据依赖关系尽可能少。并且,各个算法模块的计算量可以尽可能均衡,同一算法模块内部代码实现方式比较一致,可以调度到对应的异构处理器中,比如同一算法模块里面大部分代码可以都适合在GPU(Graphics Processing Unit,图形处理器)上运行,或者适合于x86;而不是有一半适合GPU,另一半适合x86。
例如,以目标检测算法为例,可以按如下表所示的方式进行算法模块划分,划分后的各算法模块分别执行对应的任务:前处理、前n个尺度检测、后n个尺度检测、跟踪以及后处理。其中,为了均衡各算法模块的计算量,可以将计算量较大的检测模块拆分为两个算法模块,该两个算法模块分别执行以下任务:前n个尺度检测、后n个尺度检测。每一个算法模块均可以调度到对应的异构处理器中,如前处理模块和后处理模块可以调度到任何异构处理器;跟踪模块只能调度到通用处理器中。
Figure BDA0000908931530000081
将线程划分为多个算法模块后,在进行任务调度时,可以只将执行该任务的线程的一个或多个算法模块进行调度,与线程相比,每一个算法模块的计算量要小得多,因此,以算法模块为单位进行任务调度能够提高任务调度的成功率。
以算法模块为单位进行任务调度时,由于各算法模块能够调度到的异构处理器的类型不同,有的算法模块可以调度到任何类型的处理器中,有的算法模块只可以调度到部分处理器中,因此,为了避免将算法模块调度到不能运行的处理器中,并进一步提高任务调度效率和成功率,在本实施例中,可以建立模块属性表,以保存各算法模块对应的信息,并进一步指导任务调度的进行。
具体地,可以在模块属性表中保存各算法模块的调度属性。各算法模块的调度属性可以用来表征各算法模块与各异构处理器的对应关系。由于各算法模块的实现代码不同,某些算法模块可以调度到任何异构处理器,而另一些算法模块只能调度到部分异构处理器中运行,因此,这些算法模块只能在相应的处理器之间进行调度。
构建模块属性表后,在进行任务调度时,可以根据模块属性表中保存的算法模块与异构处理器的对应关系以及各异构从处理器的当前负载量确定目标处理器,针对一个算法模块,能够一次调度成功,不需要进行多次调度,提高了调度效率和成功率。
请参考图1,其示出了根据本发明提供的基于异构处理器的任务调度方法的一个实施例的示意性流程图。
如图1所示,本实施例提供的基于异构处理器的任务调度方法,应用于电子设备,可以包括如下步骤:
步骤101,电子设备中的主处理器监测每个异构从处理器的当前CPU负载,并从各异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个异构从处理器处理对应的任务,每个任务由至少一个线程完成。上述电子设备例如可以包括:服务器、终端设备等,本发明对此不作限定。
在数据分析系统中,不同的任务可以由对应的异构从处理器处理,其中,每个任务由至少一个线程完成。在数据分析过程中,各异构从处理器的负载是个动态变化的过程。比如对一个道路监控场景,可能某些时候处理车牌检测算法的处理器负载很高,但另一些时候可能检测行人的处理器负载很高。因此,为了均衡地利用各异构从处理器,当一个异构从处理器的CPU负载过大时,可以将该异构从处理器处理的任务的一部分调度到其它异构从处理器中处理,以降低该异构从处理器的CPU负载。
具体地,在本实施例中,主处理器可以监测每个异构从处理器的当前CPU负载,并从各异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值(如60%、70%、80%等)的至少一个源处理器,以将该至少一个源处理器处理的任务的一部分调度到其它异构从处理器。
需要说明的是,在本实施例中,各异构从处理器对应的第一设定阈值可以相同,也可以不同。例如,在一种实现方式中,可以为各异构从处理器设置相同的第一设定阈值;在另一种实现方式中,为了更准确的对各异构从处理器的任务模块进行调度,也可以根据各异构从处理器的CPU性能,为其设置不同的第一设定阈值,如,针对CPU性能较高的异构从处理器,可以为其设置较高的第一设定阈值(如80%、85%、90%等),针对CPU性能较低的异构从处理器,可以为其设置较低的第一设定阈值(如60%、65%、70%等),
步骤102,针对每个源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在从处理器中,一个线程包括多个算法模块。
确定至少一个源处理器后,针对每个源处理器,可以在该源处理器的各算法模块中,确定至少一个调度模块。针对每个源处理器,该处理器处理的任务可以由至少一个线程完成。在本实施例中,为了提高任务调度的成功率,可以将各线程划分为多个算法模块。在进行任务调度时,可以在源处理器的各算法模块中,确定至少一个调度模块,以将该调度模块调度到其它异构从处理器中,减轻该源处理器的CPU负载。例如,可以将源处理器的各算法模块中,选择任意一个或多个算法模块为调度模块。
可以理解,源处理器可以先选择一个调度模块并将其调度到其它异构从处理器中,然后继续监测源处理器的CPU负载,若源处理器的CPU负载仍大于其对应的第一设定阈值,则可以继续选择另一调度模块,并将其调度到其它异构从处理器中,直到源处理器的CPU负载小于或等于其对应的第一设定阈值。
步骤103,针对每个调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值。
确定源处理器中的至少一个调度模块后,主处理器可以针对每个调度模块,确定该调度模块调度到的目标处理器,以将该调度模块调度到目标处理器中。
在本实施例中,针对每个调度模块,可以根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取该调度模块调度到的目标处理器。具体地,针对每个调度模块,可以根据模块属性表中保存的该调度模块与异构从处理器的对应关系,在数据分析系统的各异构从处理器中,识别与该调度模块对应的异构从处理器,并将识别出的异构从处理器中的任意一个作为该调度模块调度到的目标处理器。
可以理解,当源处理器中存在两个以上调度模块时,可以针对每一个调度模块分别按上述方法确定其对应的目标处理器。对于源处理器中所有的调度模块,确定的目标处理器可以为同一异构从处理器,也可以为不同的异构从处理器。
在选择目标处理器时,为了保证将调度模块调度到目标处理器后,目标处理器可以处理调度模块对应的任务以及目标处理器自身对应的任务,目标处理器的当前CPU负载可以小于第二设定阈值(如50%、60%等)。当目标处理器的当前CPU负载大于或等于第二设定阈值时,将调度模块调度到该目标处理器后,该目标处理器的CPU负载可能会过大,以至于不能处理调度模块对应的任务,或不能处理该目标处理器自身对应的任务,这种情况下,会导致任务调度失败。因此,在本实施例中,目标处理器的当前CPU负载可以小于第二设定阈值,以保证任务调度的成功。
步骤104,在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务。
获取到调度模块调度到的目标处理器后,可以将该调度模块调度到该目标处理器。具体地,可以在源处理器与目标处理器之间建立连接,将调度模块调度到目标处理器,以使得源处理器和目标处理器共同完成源处理器对应的任务。
例如,可以通过总线在源处理器与目标处理器之间建立连接,将调度模块调度到目标处理器。调度模块在源处理器处理其对应的任务时,需要用到相应的代码。因此,为了使目标处理器能够和源处理器一起完成源处理器对应的任务,目标处理器中需要有调度模块对应的实现代码。
在一种实现方式中,为了保证目标处理器可以和源处理器一起完成源处理器对应的任务,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,在每个异构从处理器中保存与其存在对应关系的算法模块在该异构从处理器中对应的实现代码。这种情况下,无论源处理器为哪个异构从处理器,目标处理器都可以处理源处理器中调度过来的算法模块对应的任务。
在目标处理器中预先保存数据分析系统中每个异构从处理器中的算法模块对应的实现代码,可能会占用目标处理器较多的资源。因此,优选地或附加地,目标处理器中可以不预先保存数据分析系统中每个异构从处理器中的算法模块对应的实现代码,而是在任务调度过程中,当确定调度模块对应的目标处理器后,主处理器可以发送与调度模块对应的实现代码给目标处理器,以供目标处理器解析并装载该实现代码。进一步地,目标处理器可以和源处理器一起完成源处理器对应的任务。
具体地,源处理器可以根据调度模块所在的线程中各算法模块之间的关系,当调度模块的上一个算法模块得到相应的第一数据后,产生第一中断信号。当目标处理器检测到源处理器产生第一中断信号后,从源处理器中获取第一数据,采用调度模块对第一数据进行处理得到第二数据后,产生第二中断信号,源处理器检测到目标处理器产生的第二中断信号后,从目标处理器中获取第二数据,并根据第二数据生成对应任务的数据结果。
可选地,当监测到源处理器CPU负载小于第三设定阈值(如50%、60%、70%等)时,可以将调度模块恢复到源处理器中运行。
本实施例提供的基于异构处理器的任务调度方法,通过将执行各任务的线程分为多个算法模块,在进行任务调度时,不是以线程为单位进行调度,而是只将一个或多个算法模块进行调度,与线程相比,每一个算法模块的计算量要小得多,因此,以算法模块为单位进行任务调度减小了调度难度,能够提高任务调度的成功率。并且,可以根据模块属性表中保存的每个算法模块与异构从处理器的对应关系以及各异构从处理器的当前负载量确定目标处理器,针对一个算法模块,能够一次调度成功,不需要进行多次调度,提高了调度效率和成功率。
在图1所示实施例的基础上,本发明还提供了如图2所示的另一实施例。
请参考图2,其示出了本发明实施例提供的在源处理器的各算法模块中确定调度模块的一种方法的示意性流程图。
如图2所示,本实施例提供的在源处理器的各算法模块中确定调度模块的方法,可以包括如下步骤:
步骤201,针对每个源处理器,根据该源处理器的当前CPU负载,以及其对应的第一设定阈值,计算该源处理器的超负载量。
在本实施例中,为了保证将调度模块调度出去后,源处理器的CPU负载可以小于其对应的第一设定阈值,针对每个源处理器,可以根据该源处理器的当前CPU负载,以及其对应的第一设定阈值,计算该源处理器的超负载量,以根据该源处理器的超负载量确定调度模块。
例如,当源处理器的当前CPU负载为83%,其对应的第一设定阈值为60%时,该源处理器的超负载量即为23%。
步骤202,根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
得到源处理器的超负载量后,可以根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块。
模块属性表中可以保存有每个算法模块在源处理器中的负载量,各算法模块的负载量可以用来表征各算法模块在各异构处理器中运行的平均负载数值,各算法模块的负载量可以由开发人员事先进行测试得到。如前处理模块22%、跟踪模块30%等。在确定源处理器中的调度模块时,可以根据源处理器中各算法模块的负载量,以及源处理器的超负载量,确定至少一个调度模块。
具体地,可以根据源处理器中各算法模块的负载量,以及源处理器的超负载量,将总负载量大于超负载量的一个或多个算法模块确定为调度模块。
根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块,能够保证将调度模块调度出去后,源处理器的CPU负载可以小于其对应的第一设定阈值,从而有效实现各异构从处理器之间的负载均衡。
将调度模块调度到其它异构从处理器后,源处理器和目标处理器需要共同完成源处理器对应的任务。具体地,源处理器可以根据调度模块所在的线程中各算法模块之间的关系,当调度模块的上一个算法模块得到相应的第一数据后,产生第一中断信号。当目标处理器检测到源处理器产生第一中断信号后,从源处理器中获取第一数据,采用调度模块对第一数据进行处理得到第二数据后,产生第二中断信号,源处理器检测到目标处理器产生的第二中断信号后,从目标处理器中获取第二数据,并根据第二数据生成对应任务的数据结果。
因此,与调度之前所有的算法模块均在源处理器中处理对应的任务相比,将调度模块调度到其它异构从处理器后,源处理器和目标处理器一起处理源处理器的任务增加了任务处理的复杂度。
为了减小任务处理的复杂度,进而能够高效地完成源处理对应的任务,在本实施例中,在针对每个源处理器进行任务调度时,可以将该源处理器中数量较少的算法模块调度到其它异构从处理器中,在源处理器中保留数量较多的算法模块。
例如,可以判断源处理器中是否存在负载量大于源处理器超负载量的算法模块,如果存在,将该算法模块确定为调度模块。源处理器中存在负载量大于源处理器当前超负载量的算法模块时,将该算法模块确定为调度模块,可以保证只调度出去一个调度模块,且将该调度模块调度出去后,源处理器的CPU负载小于其对应的第一设定阈值。
如果源处理器中不存在负载量大于源处理器当前超负载量的算法模块,则可以判断是否存在至少两个算法模块,该至少两个算法模块的负载量之和大于超负载量,如果存在,将该至少两个算法模块确定为调度模块。当源处理器中存在两个算法模块,这两个算法模块的负载量之和大于源处理器的超负载量时,可以将这两个算法模块确定为调度模块。以此类推,若源处理器中不存在两个算法模块的负载量之和大于源处理器的超负载量时,可以判断是否存在三个算法模块,这三个算法模块的负载量之和大于超负载量,直到存在负载量之和大于超负载量的几个算法模块。
在确定源处理器中的调度模块时,可以根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块,将源处理器中数量较少的算法模块调度到其它异构从处理器中,可以减小任务处理的复杂度,进而能够高效地完成源处理器对应的任务。
本发明还提供了如图3所示的另一实施例。请参考图3,其示出了本发明实施例提供的获取调度模块调度到的目标处理器的一种方法的示意性流程图。
如图3所示,本实施例提供的获取调度模块调度到的目标处理器的方法,可以包括如下步骤:
步骤301,从所述模块属性表中获得所述调度模块调度到各异构从处理器的调度权重。
在确定源处理器中的调度模块的目标处理器时,可能在模块属性表中有多个与调度模块对应的异构从处理器。在多个与调度模块对应的异构从处理器中,调度模块在每个异构从处理器中的处理速度可能不同。
因此,为了选择调度模块处理速度较快的异构从处理器,在本实施例中,在确定调度模块的目标处理器时,可以从保存有每个算法模块对应的每个异构从处理器的调度权重的模块属性表中,获得调度模块调度到各异构从处理器的调度权重,以基于调度模块调度到各异构从处理器的调度权重,确定调度模块的目标处理器。
每一个算法模块的调度权重可以用来表征该算法模块调度到各异构处理器的优先级,调度权重越高,表明该算法模块优先调度到该处理器。例如,某一算法模块调度到x86处理器的权重为1.0,调度到ARM的权重为3.0,表示该算法模块优先调度到ARM。各算法模块调度到各异构处理器的调度权重可以由各算法模块在不同异构处理器的效率数据比值决定,即可以由各算法模块在不同异构处理器的处理速度决定。
步骤302,根据该调度模块调度到各异构从处理器的调度权重,在当前CPU负载小于第二设定阈值的异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
获得调度模块调度到各异构从处理器的调度权重后,可以根据调度模块调度到各异构从处理器的调度权重,在当前CPU负载小于第二设定阈值的异构从处理器中,获取调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
具体地,可以在当前CPU负载小于第二设定阈值的异构从处理器中,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取调度模块调度到的至少一个异构从处理器,并根据调度模块调度到各异构从处理器的调度权重,将获取到的至少一个异构从处理器中调度权重最大的异构从处理器作为目标处理器。
根据调度模块调度到各异构从处理器的调度权重来确定调度模块调度到的目标处理器,将调度模块调度到权重较高的目标处理器后,可以使调度模块保持较快的处理速度,从而保证源处理器中的任务完成速度。
可选地,为了保证将调度模块调度到目标处理器后,目标处理器可以处理调度模块对应的任务以及目标处理器自身对应的任务。在确定目标处理器时,在当前CPU负载小于第二设定阈值的异构从处理器中,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取到调度模块调度到的至少一个异构从处理器后,可以进一步针对该至少一个异构从处理器中的每个异构从处理器,确定其对应的第一设定阈值与该异构从处理器的当前CPU负载的差负载量,并识别调度模块在该至少一个异构从处理器中的负载量小于差负载量的待确定的目标处理器,最后在待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
在确定目标处理器时,获取到调度模块调度到的至少一个异构从处理器后,可以进一步针对该至少一个异构从处理器中的每个异构从处理器,确定其对应的第一设定阈值与该异构从处理器的当前CPU负载的差负载量,并识别调度模块在该至少一个异构从处理器中的负载量小于差负载量的待确定的目标处理器,最后在待确定的目标处理器中,确定调度权重最大的处理器为目标处理器,能够保证将调度模块调度到目标处理器后,目标处理器的CPU负载不会过大,从而保证目标处理器可以处理调度模块对应的任务以及目标处理器自身对应的任务。
请参考图4,其示出了根据本发明提供的基于异构处理器的任务调度装置的一个实施例的结构示意图。
如图4所示,本实施例提供的基于异构处理器的任务调度装置,应用于电子设备,所述装置可以包括:
监测模块410,用于监测每个异构从处理器的当前CPU负载,并从各异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个异构从处理器处理对应的任务,每个任务由至少一个线程完成;
确定模块420,用于针对每个源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在从处理器中,一个线程包括多个算法模块;
获取模块430,用于针对每个调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;
调度模块440,用于在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务。
进一步地,所述调度模块440具体用于:
发送与所述调度模块对应的实现代码给所述目标处理器,以供所述目标处理器解析并装载所述实现代码。
进一步地,所述装置还包括:
恢复模块450,用于当监测模块监测到所述源处理器CPU负载小于第三设定阈值时,将所述调度模块恢复到所述源处理器中运行。
在本实施例的一个可选实现方式中,所述模块属性表中保存有每个算法模块在源处理器中的负载量,所述确定模块420包括:
计算子模块(图中未示出),用于针对每个源处理器,根据该源处理器的当前CPU负载,以及其对应的第一设定阈值,计算该源处理器的超负载量;
第一确定子模块(图中未示出),用于根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
进一步地,所述第一确定子模块具体用于:
判断是否存在负载量大于所述超负载量的算法模块,如果存在,将所述算法模块确定为调度模块;
如果不存在,判断是否存在至少两个算法模块,所述至少两个算法模块的负载量之和大于所述超负载量,如果存在,将所述至少两个算法模块确定为调度模块。
在本实施例的另一个可选实现方式中,所述模块属性表中针对每个算法模块保存有每个异构从处理器对应的调度权重,所述获取模块430包括:
获得子模块(图中未示出),用于从所述模块属性表中获得所述调度模块调度到各异构从处理器的调度权重;
第二确定子模块(图中未示出),用于根据该调度模块调度到各异构从处理器的调度权重,在当前CPU负载小于第二设定阈值的异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
进一步地,所述模块属性表中保存有每个算法模块在每个异构从处理器中的负载量,所述第二确定子模块具体用于:
针对所述至少一个异构从处理器中的每个异构从处理器,确定其对应的第一设定阈值与该异构从处理器的当前CPU负载的差负载量;
识别所述调度模块在所述至少一个异构从处理器中的负载量小于所述差负载量的待确定的目标处理器;
在所述待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
本实施例提供的基于异构处理器的任务调度装置,通过将执行各任务的线程分为多个算法模块,在进行任务调度时,不是以线程为单位进行调度,而是只将一个或多个算法模块进行调度,与线程相比,每一个算法模块的计算量要小得多,因此,以算法模块为单位进行任务调度减小了调度难度,能够提高任务调度的成功率。并且,可以根据模块属性表中保存的每个算法模块与异构从处理器的对应关系以及各异构从处理器的当前负载量确定目标处理器,针对一个算法模块,能够一次调度成功,不需要进行多次调度,提高了调度效率和成功率。
根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块,能够保证将调度模块调度出去后,源处理器的CPU负载可以小于其对应的第一设定阈值。
在确定源处理器中的调度模块时,可以根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块,将源处理器中数量较少的算法模块调度到其它异构从处理器中,可以减小任务处理的复杂度,进而能够高效地完成源处理对应的任务。
根据调度模块调度到各异构从处理器的调度权重来确定调度模块调度到的目标处理器,将调度模块调度到权重较高的目标处理器后,可以使调度模块保持较快的处理速度,从而保证源处理器中的任务完成速度。
在确定目标处理器时,获取到调度模块调度到的至少一个异构从处理器后,可以进一步针对该至少一个异构从处理器中的每个异构从处理器,确定其对应的第一设定阈值与该异构从处理器的当前CPU负载的差负载量,并识别调度模块在该至少一个异构从处理器中的负载量小于差负载量的待确定的目标处理器,最后在待确定的目标处理器中,确定调度权重最大的处理器为目标处理器,能够保证将调度模块调度到目标处理器后,目标处理器的CPU负载不会过大,从而保证目标处理器可以处理调度模块对应的任务以及目标处理器自身对应的任务。
请参考图5,其示出了根据本发明提供的电子设备的一个实施例的结构示意图。
如图5所示,本实施例提供的电子设备可以包括:主处理器510、至少两个异构从处理器520,以及用于连接所述主处理器与各异构从处理器的总线530,
主处理器510,用于监测每个异构从处理器520的当前CPU负载,并从各异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个异构从处理器处理对应的任务,每个任务由至少一个线程完成;针对每个源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在从处理器中,一个线程包括多个算法模块;针对每个调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器;
所述目标处理器,用于与所述源处理器建立连接,接收所述主处理器调度的调度模块,与所述源处理器共同完成所述源处理器对应的任务;
所述源处理器,用于与所述目标处理器建立连接,与所述目标处理器共同完成所述源处理器对应的任务。
进一步地,所述源处理器,具体用于根据所述调度模块所在的线程中各算法模块之间的关系,当所述调度模块的上一个算法模块得到相应的第一数据后,产生第一中断信号;检测到所述目标处理器产生第二中断信号后,从所述目标处理器中获取所述第二数据,并根据所述第二数据生成对应任务的数据结果;所述目标处理器,具体用于检测到所述源处理器产生第一中断信号后,从所述源处理器中获取所述第一数据,采用调度模块对所述第一数据进行处理得到第二数据后,产生第二中断信号。
进一步地,所述主处理器具体用于:针对每个源处理器,根据该源处理器的当前CPU负载,以及其对应的所述第一设定阈值,计算该源处理器的超负载量;根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
进一步地,所述主处理器具体用于:判断是否存在负载量大于所述超负载量的算法模块,如果存在,将所述算法模块确定为调度模块;如果不存在,判断是否存在至少两个算法模块,所述至少两个算法模块的负载量之和大于所述超负载量,如果存在,将所述至少两个算法模块确定为调度模块。
进一步地,所述主处理器具体用于:从所述模块属性表中获得所述调度模块调度到各异构从处理器的调度权重;根据该调度模块调度到各异构从处理器的调度权重,在当前CPU负载小于第二设定阈值的异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
进一步地,所述主处理器具体用于:针对所述至少一个异构从处理器中的每个异构从处理器,确定其对应的第一设定阈值与该异构从处理器的当前CPU负载的差负载量;识别所述调度模块在所述至少一个异构从处理器中的负载量小于所述差负载量的待确定的目标处理器;在所述待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
进一步地,所述主处理器具体用于:发送与所述调度模块对应的实现代码给所述目标处理器,以供所述目标处理器解析并装载所述实现代码。
进一步地,所述主处理器具体用于:当监测模块监测到所述源处理器CPU负载小于第三设定阈值时,将所述调度模块恢复到所述源处理器中运行。
本实施例提供的电子设备,通过将执行各任务的线程分为多个算法模块,在进行任务调度时,不是以线程为单位进行调度,而是只将一个或多个算法模块进行调度,与线程相比,每一个算法模块的计算量要小得多,因此,以算法模块为单位进行任务调度减小了调度难度,能够提高任务调度的成功率。并且,可以根据模块属性表中保存的每个算法模块与异构从处理器的对应关系以及各异构从处理器的当前负载量确定目标处理器,针对一个算法模块,能够一次调度成功,不需要进行多次调度,提高了调度效率和成功率。
根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块,能够保证将调度模块调度出去后,源处理器的CPU负载可以小于其对应的第一设定阈值。
在确定源处理器中的调度模块时,可以根据模块属性表中保存的每个算法模块在源处理器中的负载量,及源处理器的超负载量,在源处理器的各算法模块中,确定至少一个调度模块,将源处理器中数量较少的算法模块调度到其它异构从处理器中,可以减小任务处理的复杂度,进而能够高效地完成源处理对应的任务。
根据调度模块调度到各异构从处理器的调度权重来确定调度模块调度到的目标处理器,将调度模块调度到权重较高的目标处理器后,可以使调度模块保持较快的处理速度,从而保证源处理器中的任务完成速度。
在确定目标处理器时,获取到调度模块调度到的至少一个异构从处理器后,可以进一步针对该至少一个异构从处理器中的每个异构从处理器,确定其对应的第一设定阈值与该异构从处理器的当前CPU负载的差负载量,并识别调度模块在该至少一个异构从处理器中的负载量小于差负载量的待确定的目标处理器,最后在待确定的目标处理器中,确定调度权重最大的处理器为目标处理器,能够保证将调度模块调度到目标处理器后,目标处理器的CPU负载不会过大,从而保证目标处理器可以处理调度模块对应的任务以及目标处理器自身对应的任务。
对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (14)

1.一种基于异构处理器的任务调度方法,其特征在于,应用于电子设备,所述方法包括:
电子设备中的主处理器监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;
针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块;
针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;
在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务;
所述模块属性表中保存有每个算法模块在所述源处理器中的负载量;
所述针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块包括:
针对每个所述源处理器,根据该源处理器的当前CPU负载,以及其对应的所述第一设定阈值,计算该源处理器的超负载量;
根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
2.根据权利要求1所述的方法,其特征在于,所述根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块包括:
判断是否存在负载量大于所述超负载量的算法模块,如果存在,将所述算法模块确定为调度模块;
如果不存在,判断是否存在至少两个算法模块,所述至少两个算法模块的负载量之和大于所述超负载量,如果存在,将所述至少两个算法模块确定为调度模块。
3.根据权利要求1所述的方法,其特征在于,所述模块属性表中针对每个算法模块保存有每个所述异构从处理器对应的调度权重,所述根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,包括:
从所述模块属性表中获得所述调度模块调度到各所述异构从处理器的调度权重;
根据所述调度模块调度到各所述异构从处理器的调度权重,在当前CPU负载小于所述第二设定阈值的所述异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
4.根据权利要求3所述的方法,其特征在于,所述模块属性表中保存有每个算法模块在每个所述异构从处理器中的负载量,所述确定调度权重最大的异构从处理器为目标处理器,包括:
针对所述至少一个异构从处理器中的每个异构从处理器,确定其对应的所述第一设定阈值与该异构从处理器的当前CPU负载的差负载量;
识别所述调度模块在所述至少一个异构从处理器中的负载量小于所述差负载量的待确定的目标处理器;
在所述待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
5.根据权利要求1-4任一所述的方法,其特征在于,所述将所述调度模块调度到所述目标处理器,包括:
发送与所述调度模块对应的实现代码给所述目标处理器,以供所述目标处理器解析并装载所述实现代码。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当监测到所述源处理器CPU负载小于第三设定阈值时,将所述调度模块恢复到所述源处理器中运行。
7.一种基于异构处理器的任务调度装置,其特征在于,应用于电子设备,所述装置包括:
监测模块,用于监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;
确定模块,用于针对每个所述源处理器,在该源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块;
获取模块,用于针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;
调度模块,用于在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器,以使得所述源处理器和所述目标处理器共同完成所述源处理器对应的任务;
所述模块属性表中保存有每个算法模块在所述源处理器中的负载量所述确定模块包括:
计算子模块,用于针对每个所述源处理器,根据该源处理器的当前CPU负载,以及其对应的所述第一设定阈值,计算该源处理器的超负载量;
第一确定子模块,用于根据所述模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块。
8.根据权利要求7所述的装置,其特征在于,所述第一确定子模块具体用于:
判断是否存在负载量大于所述超负载量的算法模块,如果存在,将所述算法模块确定为调度模块;
如果不存在,判断是否存在至少两个算法模块,所述至少两个算法模块的负载量之和大于所述超负载量,如果存在,将所述至少两个算法模块确定为调度模块。
9.根据权利要求7所述的装置,其特征在于,所述模块属性表中针对每个算法模块保存有每个所述异构从处理器对应的调度权重,所述获取模块包括:
获得子模块,用于从所述模块属性表中获得所述调度模块调度到各所述异构从处理器的调度权重;
第二确定子模块,用于根据所述调度模块调度到各所述异构从处理器的调度权重,在当前CPU负载小于所述第二设定阈值的所述异构从处理器中,获取所述调度模块调度到的至少一个异构从处理器,并确定调度权重最大的异构从处理器为目标处理器。
10.根据权利要求9所述的装置,其特征在于,所述模块属性表中保存有每个算法模块在每个所述异构从处理器中的负载量,所述第二确定子模块具体用于:
针对所述至少一个异构从处理器中的每个异构从处理器,确定其对应的所述第一设定阈值与该异构从处理器的当前CPU负载的差负载量;
识别所述调度模块在所述至少一个异构从处理器中的负载量小于所述差负载量的待确定的目标处理器;
在所述待确定的目标处理器中,确定调度权重最大的处理器为目标处理器。
11.根据权利要求7-10任一所述的装置,其特征在于,所述调度模块具体用于:
发送与所述调度模块对应的实现代码给所述目标处理器,以供所述目标处理器解析并装载所述实现代码。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
恢复模块,用于当监测模块监测到所述源处理器CPU负载小于第三设定阈值时,将所述调度模块恢复到所述源处理器中运行。
13.一种电子设备,所述电子设备包括:主处理器、至少两个异构从处理器以及用于连接所述主处理器与各异构从处理器的总线,其特征在于,
所述主处理器,用于监测每个异构从处理器的当前CPU负载,并从各所述异构从处理器中,识别当前CPU负载大于其对应的第一设定阈值的至少一个源处理器,其中每个所述异构从处理器处理对应的任务,每个任务由至少一个线程完成;针对每个所述源处理器,根据该源处理器的当前CPU负载,以及其对应的所述第一设定阈值,计算该源处理器的超负载量,根据模块属性表中保存的每个算法模块在所述源处理器中的负载量,及所述源处理器的超负载量,在所述源处理器的各算法模块中,确定至少一个调度模块,其中,在所述异构从处理器中,一个线程包括多个算法模块,所述模块属性表中保存有每个算法模块在所述源处理器中的负载量;针对每个所述调度模块,根据模块属性表中保存的算法模块与至少一个异构从处理器的对应关系,获取所述调度模块调度到的目标处理器,其中所述目标处理器当前CPU负载小于第二设定阈值;在所述源处理器与所述目标处理器之间建立连接,将所述调度模块调度到所述目标处理器;
所述目标处理器,用于与所述源处理器建立连接,接收所述主处理器调度的调度模块,与所述源处理器共同完成所述源处理器对应的任务;
所述源处理器,用于与所述目标处理器建立连接,与所述目标处理器共同完成所述源处理器对应的任务。
14.根据权利要求13所述的电子设备,其特征在于,所述源处理器,具体用于根据所述调度模块所在的线程中各算法模块之间的关系,当所述调度模块的上一个算法模块得到相应的第一数据后,产生第一中断信号;检测到所述目标处理器产生第二中断信号后,从所述目标处理器中获取第二数据,并根据所述第二数据生成对应任务的数据结果;
所述目标处理器,具体用于检测到所述源处理器产生所述第一中断信号后,从所述源处理器中获取所述第一数据,采用调度模块对所述第一数据进行处理得到第二数据后,产生所述第二中断信号。
CN201610032798.7A 2016-01-18 2016-01-18 基于异构处理器的任务调度方法、装置及电子设备 Active CN106980533B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610032798.7A CN106980533B (zh) 2016-01-18 2016-01-18 基于异构处理器的任务调度方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610032798.7A CN106980533B (zh) 2016-01-18 2016-01-18 基于异构处理器的任务调度方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN106980533A CN106980533A (zh) 2017-07-25
CN106980533B true CN106980533B (zh) 2020-04-28

Family

ID=59340628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610032798.7A Active CN106980533B (zh) 2016-01-18 2016-01-18 基于异构处理器的任务调度方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN106980533B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021454A (zh) * 2017-12-28 2018-05-11 努比亚技术有限公司 一种处理器负载均衡的方法、终端及计算机存储介质
CN108549574B (zh) * 2018-03-12 2022-03-15 深圳市万普拉斯科技有限公司 线程调度管理方法、装置、计算机设备和存储介质
CN110659112B (zh) * 2018-06-29 2023-07-18 中车株洲电力机车研究所有限公司 算法调度方法及系统
CN108897622A (zh) * 2018-06-29 2018-11-27 郑州云海信息技术有限公司 一种任务运行的调度方法以及相关装置
CN113448516B (zh) * 2021-06-04 2023-07-21 山东英信计算机技术有限公司 一种基于raid卡的数据处理方法、系统、介质及设备
CN113434280A (zh) * 2021-07-15 2021-09-24 湖北央中巨石信息技术有限公司 基于时间动态调整调度间隔的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855218A (zh) * 2012-05-14 2013-01-02 中兴通讯股份有限公司 数据处理系统、方法及装置
WO2015149350A1 (zh) * 2014-04-04 2015-10-08 华为技术有限公司 一种数据处理方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7665092B1 (en) * 2004-12-15 2010-02-16 Sun Microsystems, Inc. Method and apparatus for distributed state-based load balancing between task queues
CN102135950B (zh) * 2011-03-10 2012-11-28 中国科学技术大学苏州研究院 基于星型互联架构的片上异构多核系统及其通信方法
CN102541640B (zh) * 2011-12-28 2014-10-29 厦门市美亚柏科信息股份有限公司 一种集群gpu资源调度系统和方法
CN103279445A (zh) * 2012-09-26 2013-09-04 上海中科高等研究院 运算任务的计算方法及超算系统
CN103365718A (zh) * 2013-06-28 2013-10-23 贵阳朗玛信息技术股份有限公司 一种线程调度方法、线程调度装置及多核处理器系统
CN103605498B (zh) * 2013-12-05 2016-07-06 用友网络科技股份有限公司 单线程任务的多线程执行方法及系统
CN104133724B (zh) * 2014-04-03 2015-08-19 腾讯科技(深圳)有限公司 并发任务调度方法及装置
CN104035823B (zh) * 2014-06-17 2018-06-26 华为技术有限公司 负载均衡方法及装置
CN104869398B (zh) * 2015-05-21 2017-08-22 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855218A (zh) * 2012-05-14 2013-01-02 中兴通讯股份有限公司 数据处理系统、方法及装置
WO2015149350A1 (zh) * 2014-04-04 2015-10-08 华为技术有限公司 一种数据处理方法及系统

Also Published As

Publication number Publication date
CN106980533A (zh) 2017-07-25

Similar Documents

Publication Publication Date Title
CN106980533B (zh) 基于异构处理器的任务调度方法、装置及电子设备
CN107967205B (zh) 一种内存分析方法、装置、系统以及计算设备
US10819603B2 (en) Performance evaluation method, apparatus for performance evaluation, and non-transitory computer-readable storage medium for storing program
US8756600B2 (en) Judging apparatus, method, and recording medium of program for estimating the effect of deployment of an application in a virtual machine environment
US8719799B2 (en) Measuring coupling between coverage tasks and use thereof
CN111049705A (zh) 一种监控分布式存储系统的方法及装置
CN109243619B (zh) 预测模型的生成方法、装置及计算机可读存储介质
US9588813B1 (en) Determining cost of service call
US10324784B2 (en) Mitigating crashes of an application server executing a monitoring agent
CN107343164B (zh) 视频监控任务的分配方法及装置
CN109710624B (zh) 数据处理方法、装置、介质及电子设备
US10970200B2 (en) Test result triage for a failed code validation
CN111984426B (zh) 任务调度方法、装置、电子设备及存储介质
CN113885956A (zh) 服务部署方法及装置、电子设备和存储介质
CN109800085B (zh) 资源配置的检测方法、装置、存储介质和电子设备
WO2017020941A1 (en) Category based execution scheduling
CN109783385A (zh) 一种产品测试方法和装置
JP2014078160A (ja) 仮想リソースの組み合わせの決定を支援する装置及び方法
CN107634978B (zh) 一种资源调度方法及装置
Srivastava et al. Investigating the robustness of adaptive dynamic loop scheduling on heterogeneous computing systems
CN117009221A (zh) 产品测试的处理方法、装置、设备、存储介质及程序产品
CN113065055B (zh) 新闻资讯抓取方法、装置、电子设备及存储介质
US20160004982A1 (en) Method and system for estimating the progress and completion of a project based on a bayesian network
JP2017151594A (ja) 支援装置、支援方法及びプログラム
CN112131468A (zh) 推荐系统中的数据处理方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant