CN110300959A - 动态运行时任务管理 - Google Patents

动态运行时任务管理 Download PDF

Info

Publication number
CN110300959A
CN110300959A CN201780071470.9A CN201780071470A CN110300959A CN 110300959 A CN110300959 A CN 110300959A CN 201780071470 A CN201780071470 A CN 201780071470A CN 110300959 A CN110300959 A CN 110300959A
Authority
CN
China
Prior art keywords
task
new
argument
subtask
processor
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
Application number
CN201780071470.9A
Other languages
English (en)
Other versions
CN110300959B (zh
Inventor
C·胡
T·什佩斯曼
R·巴里克
J·E·高茨克里奇
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN110300959A publication Critical patent/CN110300959A/zh
Application granted granted Critical
Publication of CN110300959B publication Critical patent/CN110300959B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

一种动态运行时调度系统,包括任务管理器电路,该任务管理器电路能够检测来自一个或多个第一任务的输出变元的至少部分与到一个或多个第二任务的输入变元的至少部分的对应关系。一旦检测到来自第一任务的输出变元表示第二任务输入变元的超集,任务管理器电路就将第一任务分摊成多个新的子任务。这些新的子任务中的至少一个包括与第二任务输入变元具有1:1对应关系的输出变元。一旦检测到来自第一任务的输出变元表示第二任务输入变元的子集,则任务管理器电路可自主地第二任务分摊成多个新的子任务。这些新的子任务中的至少一个可包括与第一任务输出变元具有1:1对应关系的输入变元。

Description

动态运行时任务管理
技术领域
本公开涉及基于处理器的系统中的任务管理和分配。
背景
异构系统利用中央处理单元(CPU)以及诸如图形处理单元(GPU)、现场可编程门阵列(FPGA)之类的加速器。异构系统还利用协处理器,诸如,由英特尔公司(加利福尼亚州,圣克拉拉市)制造的至强TM(XeonTM)Phi。此类异构系统在高性能计算领域中越来越普遍。此类加速器可向CPU提供显著的附加计算能力和/或增加的功能。然而,开发能够利用此类加速器的全部能力的软件对于编程人员来说可能是挑战性的。编程人员所面对的挑战包括创建高度高效的代码以及指定如何在CPU与一个或多个加速器之间划分任务以优化对系统资源的使用并使系统性能最大化。
进一步使问题复杂化的是,在中央处理单元与一个或多个加速器之间对任务的划分可能取决于任务的属性,并且通常取决于由任务使用的输入数据的属性。另外,中央处理单元与加速器之间的数据传送通常在数量和时间两者上都是显著的,由此还必须考虑通过建立维护公共设备中的公共数据的工作负荷分区来减少系统等待时间。
附图说明
随着以下具体实施方式进行并且在参照附图时,所要求保护的主题的各实施例的特征和优点将变得显而易见,其中,同样的数字指代同样的部件,并且其中:
图1是描绘根据本文中所描述的至少一个实施例的说明性任务管理器电路的示意图,该说明性任务管理器电路提供任务管理系统,在该任务管理系统中,由处理器以及至少一个加速器执行的任务按使任务并行性最大化并且使运行时开销最小化的方式在处理器/处理器核以及加速器之间自主地被分摊;
图2是描绘根据本文中所描述的至少一个实施例的说明性系统的示意图,在该说明性系统中,任务管理电路自主地将新的任务分摊成多个新的子任务,以使得在现有任务的输出与对新的子任务的输入之间存在1∶1对应关系;
图3是描绘根据本文中所描述的至少一个实施例的说明性的基于处理器的设备的框图,该说明性的基于处理器的设备包含能够提供任务管理器电路的一个或多个逻辑设备、逻辑系统、逻辑元件和/或电路,该任务管理器电路用于在一个或多个处理器/核、和/或一个或多个加速器之间分摊任务,以通过增加任务并行性并减少可归属于一个或多个处理器/核以及一个或多个加速器之间的数据传输的系统等待时间来改进系统性能;
图4是根据本文中所描述的至少一个实施例的用于将任务分摊成子任务以使得一个子任务的输入/输出维持与另一任务的输入/输出的1∶1对应关系的说明性方法的高级流程图;
图5是根据本文中所描述的至少一个实施例的用于将任务分摊成子任务以使得一个子任务的输入/输出维持与另一任务的输入/输出的1∶1对应关系的说明性方法的高级流程图;
图6A是根据本文中所描述的至少一个实施例的用于将任务分摊成子任务以使得一个子任务的输入/输出维持与另一任务的输入/输出的1∶1对应关系的说明性方法的高级流程图;以及
图6B是根据本文中所描述的至少一个实施例的继续图6A中开始的用于将任务分摊成子任务的说明性方法的高级流程图。
虽然以下具体实施方式将参照说明性实施例进行,但是其许多替代方案、修改和变型对本领域技术人员而言将是显而易见的。
具体实施方式
为了管理对中央处理单元和加速器的利用,已提出了各种自动化方法。一种此类方法通过使用动态调度运行时。动态调度运行时使在一个或多个中央处理单元以及数个可通信地耦合的硬件加速器之间对工作负荷进行分区的过程自动化。工作负荷被分区成任务。调度器或任务管理器将任务的集合作为输入,并且在程序执行期间,将那些任务调度至各系统设备同时维护任务之间的依赖性。理想地,调度器或任务管理器发现任务之间的并行性并且调度这些任务以优化系统性能和/或使系统等待时间最小化。在此类布置中,编程人员不需要考虑系统组件之间的工作负荷划分。
在至少一些实现方式中,可使用描绘或以其他方式表示任务之间的关系的任务图或类似结构来维护任务之间的依赖性。任务图是包括节点和有向边的有向图,节点表示任务,有向边表示各任务之间的关系和数据依赖性。任务之间的数据依赖性由调度器或任务管理器在运行时确定,并且在该调度器或任务管理器将任务插入到任务图时被处理。不具有前驱的任务准备好由中央处理单元和/或加速器执行。一旦被执行,已完成的任务从任务图被移除,使得具有对最近被完成的任务的依赖性的附加任务能够执行。如果多于一个任务准备好供执行,则任务可同时被调度在不同的计算设备上,以实现任务级的并行性。
特定任务的粒度可对所应用的动态调度运行时的性能具有显著影响。任务粒度可人为地限制并行性和调度灵活性。如果任务粒度过粗,则任务可能是不可分的,并且可能损害调度器或任务管理器有效地和/或高效地在中央处理单元以及一个或多个加速器之间对子任务进行划分和分配的能力。在另一方面,如果任务粒度过细,则可生成大量的任务节点和依赖性边,导致用于负责在中央处理单元和加速器之间任务分配的调度器或任务管理器的较高的开销。本文中所描述的系统和方法并非依赖于编程人员来为应用选择适当的粒度等级,而是在尝试使任务并行性最大化同时使任务图依赖性分析、调度和维护的运行时开销最小化时自动地调整任务粒度。
提供了包括多个可通信地耦合的处理器的系统。该系统可包括:系统存储器,可通信地耦合至多个可通信地耦合的处理器;以及任务管理器电路,用于在多个可通信地耦合的处理器之间动态地分配任务,该任务管理器电路用于:将与新的任务相关联的多个变元同与至少一个现有任务相关联的多个变元进行比较;判定与新的任务相关联的多个变元中的至少一些同与现有任务相关联的多个变元中的至少一些之间是否存在1∶1对应关系;以及响应于判定与新的任务相关联的多个输入变元中的至少一些具有同与现有任务相关联的多个输出变元中的至少一些的1∶1对应关系而:将现有任务分摊成多个现有子任务,以使得与第一现有子任务相关联的输出变元中的每个输出变元具有同与新的任务相关联的输入变元中的每个输入变元的1∶1对应关系。
根据示例1,提供了一种系统,该系统包括:多个可通信地耦合的处理器;系统存储器,可通信地耦合至多个可通信地耦合的处理器;以及任务管理器电路,用于在多个可通信地耦合的处理器之间动态地分配任务,该任务管理器电路用于:将与新的任务相关联的多个变元同与至少一个现有任务相关联的多个变元进行比较;判定与新的任务相关联的多个变元中的至少一些同与现有任务相关联的多个变元中的至少一些之间是否存在1∶1对应关系;以及响应于判定与新的任务相关联的多个输入变元中的至少一些同与现有任务相关联的多个输出变元中的至少一些具有1∶1对应关系:将现有任务分摊成多个现有子任务,以使得与第一现有子任务相关联的输出变元中的每个输出变元同与新的任务相关联的输入变元中的每个输入变元具有1∶1对应关系。
提供了一种在多个可通信地耦合的处理器之间动态地分配任务的方法。该方法可包括:由任务管理器将与新的任务相关联的多个变元同与至少一个现有任务相关联的多个变元进行比较;由该任务管理器判定在与新的任务相关联的多个变元中的至少一些同与现有任务相关联的多个变元中的至少一些之间是否存在1∶1对应关系;以及由任务管理器响应于判定与新的任务相关联的多个输入变元中的至少一些同与现有任务相关联的多个输出变元中的至少一些具有1∶1对应关系而将现有任务分摊成多个现有子任务,以使得与第一现有子任务相关联的输出变元中的每个输出变元同与新的任务相关联的输入变元中的每个输入变元具有1∶1对应关系。
一种设备,包括任务管理器电路,该任务管理器电路在多个可通信地耦合的处理器之间动态地分配任务。该设备可包括任务管理器电路,该任务管理器电路用于:将与新的任务相关联的多个变元同与至少一个现有任务相关联的多个变元进行比较;判定与新的任务相关联的多个变元中的至少一些同与现有任务相关联的多个变元中的至少一些之间是否存在1∶1对应关系;响应于判定与新的任务相关联的多个输入变元中的至少一些具有同与现有任务相关联的多个输出变元中的至少一些的1∶1对应关系而:将现有任务分摊成多个现有子任务,以使得与第一现有子任务相关联的输出变元中的每个输出变元同与新的任务相关联的输入变元中的每个输入变元具有1∶1对应关系;响应于判定与新的任务相关联的多个输出变元中的至少一些同与现有任务相关联的多个输入变元中的至少一些具有1∶1对应关系:将新的任务分摊成多个新的子任务,以使得与第一新的子任务相关联的输出变元中的每个输出变元同与现有任务相关联的输入变元中的每个输入变元具有1∶1对应关系。
提供了一种非瞬态计算机可读介质。该非瞬态计算机可读介质可包括指令,这些指令在由电路执行时将该电路变换成专用的任务管理器电路,该任务管理器电路用于:将与新的任务相关联的多个变元同与至少一个现有任务相关联的多个变元进行比较;判定在与新的任务相关联的多个变元中的至少一些同与现有任务相关联的多个变元中的至少一些之间是否存在1∶1对应关系;以及响应于判定与新的任务相关联的多个输入变元中的至少一些同与现有任务相关联的多个输出变元中的至少一些具有1∶1对应关系而将现有任务分摊成多个现有子任务,以使得与第一现有子任务相关联的输出变元中的每个输出变元同与新的任务相关联的输入变元中的每个输入变元具有1∶1对应关系。
如本文中所使用,术语“顶部”、“底部”、“最低”和“最高”在与一个或多个元件关联使用时意在表达相对而非绝对的物理配置。因此,当设备被倒置时,该设备中被描述为“最高元件”或“顶部元件”的元件可替代地形成设备中的“最低元件”或“底部元件”。类似地,当设备被倒置时,该设备中被描述为“最低元件”或“底部元件”的元件可替代地形成设备中的“最高元件”或“顶部元件”。
图1描绘了说明性任务管理系统100,根据本文中所描述的至少一个实施例,在该任务管理系统100中,由具有至少一个核1141-114n(单独称为:“核114”并且统称为:“核114”)的处理器110以及至少一个加速器1121-112n(单独称为:“加速器112”并且统称为:“加速器112”)执行的任务由任务管理器电路140自动地管理,以使得任务按在任务管理器电路140内使任务并行性最大化并且使运行时开销最小化的方式在处理器110与加速器112之间分摊。当一个或多个应用由处理器110和/或加速器112执行时,任务管理器电路140接收与该(多个)应用相关联的各种任务,并在处理器110和加速器112之间分配这些任务。
在操作中,任务管理器将每个现有任务的输出与经由有向边链接至相应的现有任务的那些新的任务的输入进行比较,以判定是否与现有任务输入中的任一者共享现有任务输出中的任一者。在一些实现方式中,现有任务输出中的全部可具有与新的任务输入中的至少部分的1∶1对应关系——在此类实例中,任务管理器电路可将新的任务分割、分摊或以其他方式分成多个新的子任务。对多个新的子任务中所包括的新的子任务中的至少一个新的子任务的输入可与现有任务输出中的一些或全部具有1∶1对应关系。在一些实现方式中,现有任务输出中的至少部分可具有与新的任务输入中的全部的1∶1对应关系——在此类实例中,任务管理器电路可将现有任务分割、分摊或以其他方式分成多个现有子任务。来自多个现有子任务中所包括的现有子任务中的至少一个现有子任务的输出可与新的任务输入中的一些或全部具有1∶1对应关系。
图1包括两个说明性任务——第一任务(“任务A”)150和第二任务(“任务B”)152。依赖性边154示出了第一任务150与第二任务152之间的关系。第一任务150从位置“A”读取1000个值,并且将这1000个值写入到位置“B”。第二任务152从位置“B”读取前500个值,并且将这些值写入到位置“C”。如图1中所描绘,来自第一任务150的输出中的部分(即,从位置“A”读取并写入到位置“B”的前500个值)由第二任务152使用。任务管理器电路140判定在由第一任务150提供的输出中的部分(即,写入到位置“B”的500个值)与由第二任务152使用的输入(即,从位置“B”读取的500个值)之间存在1∶1对应关系。响应于检测到来自第一任务150的输出中的部分与对第二任务152的输入之间的1∶1对应关系,任务管理器电路140进一步确定第一任务150可被分割、分摊或分配成两个新的子任务1501和1502
新的子任务1501包括与第二任务152输入具有1∶1对应关系的来自第一任务150的输出。任务管理器电路140可使用一个或多个逻辑结构来分组、指示或以其他方式指定新的子任务1501与第二任务152的依赖性。新的子任务1502包括不与第二任务152输入共享对应关系的来自第一任务150的输入。任务管理器电路140可将新的子任务1501和第二任务152分配或以其他方式指派到单个处理器110或加速器112,以有利地避免因在设备之间传送输出而引入的等待时间。任务管理器电路140可将新的子任务1502分配或以其他方式指派到不同的处理器110或加速器112,以有益地与新的子任务1501并行地(即,与其同期或同时)执行新的子任务1502
在实施例中,任务管理器电路140可整体或部分地被合并在设置在处理器110和/或加速器112外部的一个或多个设备、元件、模块、或子系统中。在一些实现方式中,任务管理器电路140可包括一个或多个专用电路、模块、基于主机处理器的设备内的子系统。在至少一些实现方式中,任务管理器电路140包括使用一个或多个机器可读指令集、逻辑集、应用等自主地配置的一个或多个可配置电路、逻辑设备、逻辑元件或其组合。此外,在一些实现方式中,虽然在图1中描绘为在处理器110外部,但是处理器110、一个或多个核114和/或加速器112可包含任务管理器电路140的全部或部分。
在实施例中,驻留在主机中的管理程序电路或虚拟机管理器(VMM)可包括任务管理器电路140的全部或部分。在此类实现方式中,主机系统中的一个或多个客户机或虚拟机可提供处理器110的全部或部分、一个或多个核114的全部或部分、和/或加速器112的全部或部分。在一些实现方式中,任务管理器电路可包括或可具有对指示现有子任务1501-150n中的每个现有子任务和/或新的子任务1521-152n中的每个新的子任务的最大任务尺寸和/或最小任务尺寸(例如,所定义数量的字节)的数据的访问。
一个或多个通信链路132可将任务管理器电路140与处理器110和/或加速器112可通信地耦合。一个或多个通信链路132可包括一个或多个串行或并行总线结构。一个或多个通信链路132可包括一个或多个短程或者近场无线通信接口。一个或多个通信链路132可包括在包含处理器110和/或加速器112中的一些或全部的半导体封装内所形成的一个或多个迹线或类似结构。
存储器120可包括能够以数字格式存储、保存或以其他方式留存数据和/或信息的任何设备、系统、或者系统和设备的组合。存储器120可包括固定或可移除存储介质。存储器120可包括磁存储介质、电磁存储介质、电阻存储介质、光学存储介质、分子存储介质、原子存储介质、量子存储介质或其组合。
如图1中所描绘,存储器120留存来自现有任务150的输出数据以及由新的任务152所接收的输入数据。一个或多个通信链路122将存储器120与处理器110和/或加速器112中的一些或全部可通信地耦合。在存储器120内,来自现有任务150的变元(例如,输出)能以多维数组的形式被存储。例如,位置“A”可包括布置在具有一个或多个主轴125以及一个或多个次轴126的数组124中的变元,多维数组沿一个或多个主轴125是可分离、可分摊、可分割或以其他方式可划分的,多维数组沿一个或多个次轴126是不可清晰地分离、不可清晰地分摊、不可清晰地分割或者以其他方式不可清晰地划分的。类似地,位置“B”可包括布置在具有一个或多个主轴129以及一个或多个次轴130的数组128中的变元,并且位置“C”可包括布置在具有一个或多个主轴133以及一个或多个次轴133的数组132中的变元。在一些实现方式中,存储器120可包括指示最小子任务尺寸阈值的数据或信息。此类最小子任务尺寸阈值可防止任务管理器电路以过细的粒度水平来分摊现有任务150和/或新的任务152。此类最小子任务尺寸阈值可包括以下尺寸的任务:4千字节(kB)或更小;8kB或更小;16kB或更小;128kB或更小;256kB或更小;或者512kB或更小。
处理器110可包括能够执行机器可读指令的任何设备、系统、和/或系统和设备的组合。每个处理器110可包括至少一个核114。在一些实现方式中,处理器110中的一些或全部可包括多个核1141-114n中相同数量的核或不同数量的核。在一些实现方式中,处理器110可包括任何数量的电路,这些电路包含被配置成用于提供一个或多个特定机器的任何数量的逻辑元件。在一些实现方式中,处理器110可包括但不限于一个或多个单核或多个微处理器,诸如,一个或多个处理器、一个或多个处理器、一个或多个处理器、一个或多个处理器、一个或多个酷睿TM(CoreTM)i3、i5或i7处理器(加利福尼亚州,圣克拉拉市,)。在一些实现方式中,处理器110可包括一个或多个数字信号处理器(DSP)、一个或多个可编程门阵列(PGA)、一个或多个专用集成电路(ASIC)、一个或多个精简指令集计算(RISC)处理器等等。
加速器112中的每个加速器可包括专用或通用处理器,该专用或通用处理器包括能够执行机器可读指令的任何设备、系统、或者系统和设备的组合。加速器112中的每个加速器可减轻处理器110的计算负载中的至少部分。示例加速器112包括但不限于:一个或多个协处理器、一个或多个图像处理单元(GPU)、一个或多个图像媒体加速器(GMA)、一个或多个密码加速器、一个或多个视频处理单元、一个或多个人工智能加速器、一个或多个数字信号处理器、以及一个或多个现场可编程门阵列(FPGA)。在一些实现方式中,加速器112可包括一个或多个至强(Xeon)PhiTM协处理器(加利福尼亚州,圣克拉拉市,公司)。在一些实现方式中,加速器112可包括一个或多个英特尔HD显卡、英特尔锐炬(Iris)显卡或者英特尔锐炬Pro显卡(加利福尼亚州,圣克拉拉市,公司),这些显卡是可与处理器110设置在同一封装或管芯中、上或附近的集成图形处理器。在一些实现方式中,处理器110以及加速器112中的一些或全部可整体或部分地被设置在单个半导体封装内,该半导体封装例如芯片上系统(SoC)。
图2描绘了根据本文中所描述的至少一个实施例的说明性系统200,在该系统200中,任务管理电路140自主地将第二任务分摊成多个新的子任务2121-212n(统称为“新的子任务212x”),以使得在第一任务210的输出与对新的子任务212的输入之间存在1∶1对应关系。通过将第二任务212分摊成多个新的子任务212x,任务管理电路通过优化对处理带宽的使用通过使任务并行性最大化改进了在系统200上执行的应用的功能,由此通过降低操作等待时间而提供更高的系统响应性。通过优化任务并行性,系统资源被节省并且可用的计算带宽被释放而无需附加硬件。
图2中所描绘的系统200包括两个说明性任务:第一任务“A”210和第二任务“B”212。依赖性边214示出了第二任务212接收来自第一任务210的输出所按照的关系。如图2中所描绘,第一任务210从位置“A”读取前500个值,并且将这前500个值写入到位置“B”。第二任务212从位置“B”读取前1000个值(即,值1-500和501-1000),并且将这前1000个值写入到位置“C”。来自第二任务210的输出(即,从位置“A”读取并被写入到位置“B”的这前500个值)被用作对第二任务212的输入。
在操作中,任务管理器电路140检测到或以其他方式判定在由第一任务210提供的输出(即,将值1-500写入到位置“B”)与由第二任务212使用的输入(即,从位置“B”读取值1-500)之间存在1∶1对应关系。响应于检测到来自第一任务210的输出中的部分与对第二任务212的输入之间的1∶1对应关系,任务管理器电路140进一步确定第二任务212可被分割、分摊或分配成两个新的子任务2121和2122
新的子任务2121接收与第二任务212输入具有1∶1对应关系的来自第一任务210的输出。任务管理器电路140可使用一个或多个逻辑结构216和/或一个或多个关系指示符(例如,依赖性边214)来分组、指示或以其他方式指定新的子任务2121与第一任务210之间的关系。
任务管理器电路140可将新的子任务2121和第一任务210分配或以其他方式指派给单个处理器110/处理器核114或加速器112,以有利地避免将因在处理器110和/或加速器112之间传送或以其他方式传输输出中的一些或全部而导致的附加等待时间引入到系统200。任务管理器电路140可将新的子任务2122分配或以其他方式指派到不同的处理器114和/或加速器112,以有益地与新的子任务2121并行地(即,与其同期或同时)执行新的子任务2122
图3和下列讨论提供了对根据本文中所描述的至少一个实施例的形成说明性系统300的组件简要的、总体的描述,这些组件包括基于处理器的设备302,该基于处理器的设备302包含能够提供任务管理器电路140的一个或多个逻辑设备、逻辑系统、逻辑元件和/或电路310,该任务管理器电路140用于在一个或多个处理器110/核114和/或一个或多个加速器112之间分摊任务,以通过增加任务并行性并减少可归因于一个或多个处理器110/核114以及一个或多个加速器112之间的数据传输的系统等待时间来改进系统性能。
至少一些实施例或实现方式可包括机器可读或机器可执行指令集,诸如,由电路310、一个或多个处理器110/核114、和/或一个或多个硬件加速器112执行的编程应用模块、对象或宏。至少一些实施例或实现方式可包括以硬连线的电路和组件、半导体电路、逻辑系统、逻辑元件、逻辑设备、逻辑模块、逻辑系统/子系统、微处理器、控制器、或者提供基于处理器的设备302中所包括的各种组件、系统、子系统或模块的类似设备形式实现的电路。
相关领域的技术人员将会领会,所图示的实施例以及其他实施例可利用其他基于电路的设备配置来实施,这些基于电路的设备配置包括便携式电子设备或手持式电子设备,例如,智能电话、便携式计算机、可穿戴计算机、基于微处理器的或可编程的消费电子产品、个人计算机(“PC”)、网络PC、小型计算机、大型计算机等等。实施例可以在分布式计算环境中实施,在分布式计算环境中,任务或模块由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
基于处理器的设备302可包括任何数量的电路310,电路310中的每个电路可包括各种电子和/或半导体组件,这些电子和/或半导体组件至少部分地被设置在可穿戴计算机、便携式计算设备、个人数字助理、个人计算机、刀片服务器、工作站、机架式刀片服务器、或者能够执行机器可读指令的其他类似的当前的或未来的基于处理器的设备和/或系统中。一个或多个电路310可经由一个或多个串行或并行导体、路径或总线306与基于处理器的设备302内的各种组件互连、电耦合和/或可通信地耦合至这些组件。如图3中所描绘,一个或多个电路310中的全部或部分可被分摊或分配,以提供、形成或以其他方式产生任务管理器电路140中的全部或部分。
如图3中所描绘,诸如系统存储器120之类的系统组件可经由总线306可通信地耦合至一个或多个电路310。基于处理器的设备302在本文中有时可能以单数形式被引用,但是这并不旨在将实施例限制于单个系统,因为在某些实施例中,将存在多于一个基于处理器的设备302、联网的基于处理器的设备302、客户端/服务器基于处理器的设备302或者所包括的其他联网的系统、电路或设备。
一个或多个电路310可包括任何数量、类型的导体、绝缘体、电气器件和/或半导体组件,或者其任何组合。有时,一个或多个电路310可全部或部分地以半导体器件的形式实现,该半导体器件诸如,二极管、晶体管、电感器、电容器和电阻器。此类实现方式可包括但不限于任何当前或未来开发的单核或多核处理器或微处理器,诸如:一个或多个片上系统(SOC);一个或多个中央处理单元(CPU);一个或多个数字信号处理器(DSP);一个或多个图形处理单元(GPU);一个或多个专用集成电路(ASIC)、一个或多个现场可编程门阵列(FPGA),等等。除非另有描述,否则图3中所示的各框的构造和操作是常规设计的构造和操作。作为结果,此类框不需要在本文中进一步详细描述,因为相关领域的技术人员将会理解这些框。使组件中的至少一些组件互连的总线306可采用任何已知的串行或并行总线结构或架构。
系统存储器120可包括以任何数量、容量和/或配置的只读存储器(“ROM”)326和随机存取存储器(“RAM”)326。ROM 326的部分可包含基本输入/输出系统(“BIOS”)330。BIOS330可向基于处理器的设备302提供基本功能。例如,在一些实现方式中,通过使一个或多个电路310加载一个或多个机器可读指令集,该机器可读指令集使得一个或多个电路310中的全部或部分提供任务控制器电路140并且起到任务管理器电路140的作用。
基于处理器的设备302可包括一个或多个可通信地耦合的非瞬态数据存储设备334。一个或多个数据存储设备334可包括任何数量的任何当前或未来开发的非瞬态存储设备和/或存储器和/或任何当前或未来开发的非瞬态存储设备和/或存储器的任何组合。此类非瞬态数据存储设备334的非限制性示例可包括但不限于:一个或多个磁存储设备、一个或多个光存储设备、一个或多个固态电磁存储设备、一个或多个电阻存储设备、一个或多个分子存储设备、一个或多个量子存储设备或其各种组合。在一些实现方式中,数据存储设备334可被设置成远离于基于处理器的设备302。在一些实现方式中,数据存储设备334可包括一个或多个可热插拔或可移除数据存储设备。
一个或多个接口和/或控制器(未在图3中示出)可将一个或多个存储设备334可通信地耦合至总线306。一个或多个存储设备334可包含机器可读指令集、数据结构、程序模块以及对任务管理器电路140有用的其他数据。例如,一个或多个存储设备334可包括指示新的子任务或现存的子任务的最大任务尺寸和/或最小任务尺寸的信息和/或数据。
基于处理器的设备302可包括任何数量的能够检测内部、外部和/或环境状况和/或事件的传感器380或者这些传感器380的组合。在一些实现方式中,传感器380可包括任何数量的下列各项和/或下列各项中的一项或多项的组合:音频输入传感器382(例如,一个或多个话筒或类似物);图像传感器384(例如,一个或多个电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)图像传感器、环境光级传感器、或类似的传感器);红外照明器/红外图像采集传感器386;一个或多个热传感器338(例如,热电偶、电阻热设备、非接触式热传感器或类似的传感器)。在至少一些实现方式中,此类传感器380能以规则的、不规则的、周期性的或非周期性的间隔在连续或间歇的基础上自主地收集信息和/或数据。
在一些实现方式中,任务管理器电路140可接收由一个或多个传感器380提供的传感器数据,并且可于在处理器110/核114、和/或加速器112之间分配任务和/或子任务时使用此类数据。例如,任务管理器电路140可至少部分地基于处理器110/核114和/或加速器112的所感测到的温度或类似的热参数而在处理器110/核114和/或加速器112之间分配任务和/或子任务。
机器可读指令集和/或应用338可整体或部分地被存储或以其他方式被保留在存储设备334中或者整体或部分地被存储或以其他方式被保留在系统存储器120中。可从一个或多个存储设备334传输此类指令集,并将这些指令集整体或部分地存储在系统存储器120中以供一个或多个电路310执行。机器可读指令集338可包括提供本文中所描述的语义标记功能和能力的指令和/或逻辑。例如,一个或多个应用338可使得电路310提供如上文图1和图2中所描述的任务管理器电路140。
基于处理器的设备302可包括一个或多个可通信地耦合的物理输入设备350,诸如,一个或多个文本输入设备352(例如,键盘)、一个或多个指点设备354(例如,鼠标、轨迹球、触摸屏)和/或一个或多个音频输入设备356。此类物理输入设备350可被用来例如将命令(例如,确认、选择、认定以及类似的命令)以及信息(例如,确认以及类似的信息)例如提供、输入或以其他方式供应到基于处理器的设备302。基于处理器的302可包括一个或多个可通信地耦合的物理输出设备360,诸如,一个或多个视觉输出设备362(例如,显示设备)、一个或多个触觉输出设备364(例如,触觉反馈或类似的触觉输出设备)、一个或多个音频输出设备366、或者其组合。
基于处理器的设备302可包括用于提供与一个或多个附加的基于处理器的设备的通信能力的一个或多个网络接口370。在一些实现方式中,一个或多个网络接口370可包括设置在基于处理器的设备302(诸如,机架式刀片服务器)的一个或多个外部边缘中、上或附近的一个或多个触点(land)。在一些实现方式中,一个或多个网络接口370可包括一个或多个无线接口,诸如一个或多个兼容IEEE 802.11的接口。在一些实现方式中,一个或多个网络接口370可包括一个或多个有线接口,诸如一个或多个兼容IEEE 802.3(“以太网”)的接口。
为方便起见,网络接口370、一个或多个电路310、系统存储器324、物理输入设备350和物理输出设备360被图示为经由总线306彼此通信地耦合,由此提供上述组件之间的连接性。在替代实施例中,上述组件能以与图3中所图示不同的方式通信地耦合。例如,上述组件中的一个或多个组件可直接耦合至其他组件,或者可经由一个或多个中间组件(未示出)彼此耦合。在一些实施例中,总线306可被省略,并且使用合适的有线或无线连接使组件彼此直接耦合。
图4提供了根据本文中所描述的至少一个实施例的用于将任务分摊成子任务以使得一个子任务的输入/输出维持与另一任务的输入/输出的1∶1对应关系的说明性方法400的高级流程图。任务管理器电路140将一个或多个第一(例如,现有)任务150的输出与一个或多个第二(例如,新的或现有)任务152的输入进行比较,以检测第一任务150的任务输出是否表示对第二任务152的任务输入的子集或超集中的至少一者(即,具有与对第二任务152的任务输入中的全部或部分的1∶1对应关系)。在第一任务150的输出表示第二任务152的输入的超集(即,第一任务150的输出变元至少包括第二任务152的所有输入变元)的情况下,任务管理器电路140可将第一任务150分摊或以其他方式分割成多个子任务1501-150n,这些子任务中的至少一个子任务包括与第二任务152的输入具有1∶1对应关系的输出。在第一任务150的输出表示第二任务152的输入的子集(即,第一任务150的输出变元至少包括第二任务152的输入变元中的部分)的情况下,任务管理器电路140可将第二任务152分摊或以其他方式分割成多个子任务1521-152n,这些子任务中的至少一个子任务包括与第一任务150的输出具有1∶1对应关系的输入。方法400开始于402。
在404处,任务管理器电路140读取与第二任务152相关联的变元中的一些或全部。在至少一些实现方式中,与第二任务152相关联的变元可包括对第二任务152的输入中的一些或全部。在一些实现方式中,任务管理器140可将与第二任务152相关联的变元中的一些或全部作为数组124存储在系统存储器120中。在一些实现方式中,数组124可包括一个或多个主轴125以及一个或多个次轴126。
在406处,任务管理器电路140将第二任务输入变元(在图4中被缩写为“2TIA”)与第一任务输出变元(在图4中被缩写为“1TOA”)进行比较,以检测在第二任务输入变元中的全部或部分与一个或多个第一任务输出变元之间是否存在1∶1对应关系。
在408处,如果任务管理器电路140判定第一任务输出变元包括或表示第二任务输入变元的超集(例如,对第二任务152的输入表示第一任务150的输出的子集),则方法400进行至410,否则,该方法400进行至412。
在410处,任务管理器电路140将第一任务150分摊、拆分或分割成多个新的子任务1501-150n。任务管理器电路140对第一任务150进行分摊,以使得新的子任务150x中的一个的输出具有与对第二任务152的输入的1∶1对应关系。在一些实现方式中,任务管理器电路140将新的子任务150x和第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将新的子任务150x和第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的新的子任务150x的输出传输到在第二处理器110/核114或加速器112上执行的第二任务152而引入的等待时间。在任务管理器电路140在410处将第一任务150分摊、拆分或分割成多个新的子任务1501-150n之后,方法在416处结束。
在412处,如果任务管理器电路140判定第一任务变元包括或表示第二任务变元的子集(例如,第一任务150的输出是或者表示对第二任务152的输入的子集),则方法400进行至414,否则,该方法400在416处结束。
在414处,任务管理器电路140将第二任务152分摊、拆分或分割成多个新的子任务1521-152n。任务管理器电路140对第二任务152进行分摊,以使得新的子任务152x中的一个的输入变元具有与来自第一任务150的输出变元的1∶1对应关系。在一些实现方式中,任务管理器电路140将新的子任务152x和第一任务150指派给公共设备,诸如,公共处理器110/核114或加速器112。将新的子任务152x和第一任务150指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的第一任务150的输出传输到在第二处理器110/核114或加速器112上执行的新的子任务152x而引入的等待时间。在任务管理器电路140在414处将第二任务152分摊、拆分或分割成多个新的子任务1521-152n之后,方法在416处结束。
图5提供了根据本文中所描述的至少一个实施例的用于将任务分摊成子任务以使得一个子任务的输入/输出保持与另一任务的输入/输出的1∶1对应关系或1∶1的关系的说明性方法500的高级流程图。任务管理器140将一个或多个第一任务150的输出与第一或多个第二任务152的输入进行比较,以检测第一任务输出变元是否包括第二任务输入变元的子集或超集(即,第一任务输出变元与第二任务输入变元中的全部或部分具有1∶1对应关系)。
在第一任务150的输出变元包括或形成第二任务152的输入变元的超集的情况下,任务管理器电路140可提出将第一任务150分摊或分割成多个新的子任务1501-150n,这些新的子任务中的至少一个包括与第二任务152的输入变元具有1∶1对应关系的输出变元。在一些实现方式中,任务管理器电路可判定多个新的子任务1501-150n中的一些或全部的尺寸是否大于所定义的阈值。如果多个新的子任务1501-150n中的一些或全部的尺寸大于所定义的阈值,则任务管理器电路140可将第一任务150分摊成所提出的多个新的子任务1501-150n。如果多个新的子任务1501-150n中的一些或全部的尺寸小于所定义的阈值,则任务管理器电路140可拒绝对第一任务150的分摊或分割。
在第一任务150的输出变元包括或形成第二任务152的输入变元的子集的情况下,任务管理器电路140可提出将第二任务152分摊或分割成多个新的子任务1521-152n,这些新的子任务中的至少一个包括与第一任务150的输出变元具有1∶1对应关系的输入变元。在一些实现方式中,任务管理器电路可判定多个新的子任务1521-152n中的一些或全部的尺寸是否大于所定义的阈值。如果多个新的子任务1521-152n中的一些或全部的尺寸大于所定义的阈值,则任务管理器电路140可将第二任务152分摊成所提出的多个新的子任务1521-152n。如果多个新的子任务1521-152n中的一些或全部的尺寸小于所定义的阈值,则任务管理器电路140可拒绝对第二任务152的分摊或分割。方法500开始于502。
在504处,任务管理器电路140读取与第二任务152相关联的输入变元中的一些或全部。在一些实现方式中,任务管理器140可将与第二任务152相关联的输入变元中的一些或全部作为数组124存储在系统存储器120中。在一些实现方式中,数组124可包括一个或多个主轴125以及一个或多个次轴126。
在506处,任务管理器电路140将第二任务输入变元与一个或多个第一任务输出变元进行比较,以检测在第二任务输入变元中的全部或部分与一个或多个第一任务输出变元之间是否存在1∶1对应关系。
在508处,如果任务管理器电路140判定第一任务变元形成、表示或包括第二任务输入变元的超集(例如,对第二任务152的输入变元形成、表示或包括第一任务150的输出变元的子集),则方法500进行至510,否则,该方法500进行至524。
在510处,任务管理器电路140提出将第一任务150分摊、拆分或分割成多个新的子任务1501-150n。任务管理器电路140提出对第一任务150的分摊、拆分或分割,以使得与新的子任务150x中的一个相关联的输出变元提供同与第二任务152相关联的输入变元的1∶1对应关系。
在512处,任务管理器电路140判定新的子任务150x的尺寸是否大于或等于所定义的阈值。可基于所测量的或理论上的处理器110/核114或加速器112性能来依经验地确定该阈值(例如,所定义的阈值可被确立为最小尺寸,系统性能的改进在此之下被最小化或者在此之下定位并检取现有子任务所要求的时间超过所定义数量的处理器或加速器时钟周期或时间)。在一些实现方式中,所定义的阈值可以是由物理参数和/或对相应处理器110/核114或加速器112的配置所确定的固定值。在一些实现方式中,所定义的阈值可以是由任务管理器电路140基于一个或多个操作参数所确定的可变值,这些操作参数诸如,存储器利用率、处理器/核利用率、加速器利用率、或其组合。
如果任务管理器电路140判定新的子任务150x的尺寸大于或等于所定义的阈值,则方法500在514处继续。如果任务管理器电路140判定新的子任务150x的尺寸小于所定义的阈值,则方法500在518处继续。
在514处,响应于判定新的子任务1501-150n中的一些或全部的尺寸大于或等于所定义的阈值,任务管理器电路140对第一任务150进行分摊、拆分或分割,以形成在510处所提出的新的子任务1501-150n
在516处,任务管理器电路140将新的子任务150x和第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将新的子任务150x和第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的新的子任务150x的输出变元传输到在第二处理器110/核114或加速器112上执行的第二任务152而引入的等待时间。方法500结束于522。
在518处,响应于判定新的子任务1501-150n中的一些或全部的尺寸小于所定义的阈值,任务管理器电路140拒绝在510处所提出的将第一任务150分摊、拆分或分割成新的子任务1501-150n,并且允许第一任务150保持完整或不被分割。
在520处,任务管理器电路140将不被分割的第一任务150和第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将不被分割的第一任务150和第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的不被分割的任务150的输出变元传输到在第二处理器110/核114或加速器112上执行的第二任务152而引入的等待时间。方法500结束于522。
在524处,如果任务管理器电路140判定第一任务输出变元形成或以其他方式包括第二任务输入变元的子集(例如,第二任务152的输入变元形成第一任务150的输出变元的超集),则方法500进行至526,否则,该方法500在538处结束。
在526处,任务管理器电路140提出将第二任务152分摊、拆分或分割成多个新的子任务1521-152n。任务管理器电路140提出对第二任务152的分摊、拆分或分割,以使得与新的子任务152x相关联的输入变元共享同与第一任务150相关联的输出变元的1∶1对应关系。
在528处,任务管理器电路140判定新的子任务152x的尺寸是否大于或等于所定义的阈值。可基于所测量的或理论上的处理器110/核114或加速器112性能来依经验地确定该阈值(例如,所定义的阈值可被确立为最小尺寸,系统性能的改进在此之下被最小化或者在此之下定位并检取现有子任务所要求的时间超过所定义数量的处理器或加速器时钟周期或时间)。在一些实现方式中,所定义的阈值可以是由物理参数和/或对相应处理器110/核114或加速器112的配置所确定的固定值。在一些实现方式中,所定义的阈值可以是由任务管理器电路140基于一个或多个操作参数所确定的可变值,这些操作参数诸如,存储器利用率、处理器/核利用率、加速器利用率、或其组合。
如果任务管理器电路140判定新的子任务152x的尺寸大于或等于所定义的阈值,则方法500在530处继续。如果任务管理器电路140判定新的子任务152x的尺寸小于所定义的阈值,则方法500在534处继续。
在530处,响应于判定新的子任务152x的尺寸大于或等于所定义的阈值,任务管理器电路140将新的任务152分摊、拆分或分割成526处所提出的新的子任务1521-152n
在532处,任务管理器电路140将第一任务150和新的子任务152x指派给公共设备,诸如,公共处理器110/核114或加速器112。将第一任务150和新的子任务152x指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的与第一任务150相关联的输出变元传输到新的子任务152x在其上执行的第二处理器110/核114或加速器112而引入的等待时间。在532之后,该方法500在538处结束。
在534处,响应于判定新的子任务152x的尺寸小于所定义的阈值,任务管理器电路140拒绝在526处所提出的将第二任务152分摊、拆分或分割成新的子任务1521-152n,并且允许第二任务152保持不被分割。
在536处,任务管理器电路140将第一任务150和不被分割的第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将第一任务150和不被分割的第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的与第一任务150相关联的输出变元传输到不被分割的第二任务152在其上执行的第二处理器110/核114或加速器112而引入的等待时间。在536之后,该方法500在538处结束。
图6A提供了根据本文中所描述的至少一个实施例的用于将任务分摊成多个新的子任务以使得与新的子任务中的一个相关联的输入/输出变元维持或形成同与另一任务相关联的输入/输出变元的1∶1对应关系的说明性方法600的高级流程图。图6B提供了根据本文中所描述的至少一个实施例的图6A中所描绘的说明性方法600的继续,该方法600包括:将任务分摊成多个新的子任务以使得与新的子任务中的一个相关联的输入/输出变元维持或形成同与另一任务相关联的输入/输出变元的1∶1对应关系。任务管理器140将与一个或多个第一任务150相关联的输出变元同与第一或多个第二任务152相关联的输入变元进行比较,以检测与第一任务相关联的输出变元是否包括与第二任务相关联的输入变元的子集或超集(即,与第二任务相关联的输入变元中的全部或部分具有1∶1对应关系)。
在与第一任务150相关联的输出变元包括或形成与第二任务152相关联的输入变元的超集的情况下,任务管理器电路140可提出将第一任务150分摊或分割成多个新的子任务1501-150n,这些新的子任务中的至少一个包括同与第二任务152相关联的输入变元具有1∶1对应关系的输出变元。在一些实现方式中,任务管理器电路可判定多个新的子任务1501-150n中的一些或全部的尺寸是否超过所定义的阈值。如果多个新的子任务1501-150n中的一些或全部的尺寸超过所定义的阈值,则任务管理器电路可判定第一任务150是否沿主轴125可分摊、可拆分或可分割以形成新的子任务1501-150n。如果任务管理器140判定第一任务150是沿主轴125可分摊、可拆分或可分割的并且新的子任务1501-150n中的一些或全部的尺寸满足或超过所定义的阈值,则任务管理器电路140可将第一任务150分摊成所提出的多个新的子任务1501-150n。如果多个新的子任务1501-150n中的一些或全部的尺寸小于所定义的阈值,或者如果第一任务150沿主轴125不可分割来形成新的子任务1501-150n,则任务管理器电路140可拒绝对第一任务150的分摊或分割,由此运行第一任务150保持不被分割。
在与第一任务150相关联的输出变元包括与第二任务152相关联的输入变元的子集的情况下,任务管理器电路140可将第二任务152分摊或以其他方式分割成多个新的子任务1521-152n,这些新的子任务(152x)中的至少一个包括与第一任务150的输出变元具有1∶1对应关系的输入变元。在一些实现方式中,任务管理器电路可判定新的子任务152x的尺寸是否超过所定义的阈值。如果新的子任务152x的尺寸超过所定义的阈值,则任务管理器电路140可判定第二任务152是否沿主轴125可分摊、可拆分或可分割以提供或以其他方式形成现有子任务1521-152n。如果任务管理器140判定第二任务152是沿主轴125可分摊、可拆分或可分割的并且新的子任务152x的尺寸超过所定义的阈值,则任务管理器电路140可将第二任务152分摊成所提出的多个新的子任务1521-152n。如果新的子任务152x的尺寸小于所定义的阈值,或者如果第二任务152沿主轴125不是可分割以形成多个新的子任务1521-152n的,则任务管理器电路140可拒绝对第二任务152的分摊或分割。方法600开始于602。
在604处,任务管理器电路140读取与第二任务152相关联的变元中的一些或全部。在至少一些实现方式中,与第二任务152相关联的变元可包括与第二任务152相关联的输入变元中的一些或全部。在一些实现方式中,任务管理器140可将与第二任务152相关联的输入变元中的一些或全部作为数组124存储在系统存储器120中。在一些实现方式中,数组124可包括一个或多个主轴125以及一个或多个次轴126。
在606处,任务管理器电路140将第二任务输入变元与一个或多个第一任务输出变元进行比较,以检测或判定在第二任务输入变元中的全部或部分与一个或多个第一任务输出变元之间是否存在1∶1对应关系。
在608处,如果任务管理器电路140判定第一任务输出变元包括或形成第二任务输入变元的超集(例如,与第二任务152相关联的输入变元形成与第一任务150相关联的输出变元的子集),则方法600进行至610,否则,该方法600进行至626。
在610处,任务管理器电路140提出将第一任务150分摊、拆分或分割成多个新的子任务1501-150n。任务管理器电路140提出对第一任务150的分摊、拆分或分割,以使得与新的子任务(150x)中的一个相关联的输出变元形成或以其他方式提供同与第二任务152相关联的输入变元的1∶1对应关系。
在612处,任务管理器电路140判定新的子任务150x的尺寸是否满足或超过所定义的阈值。可基于所测量的或理论上的处理器110/核114或加速器112性能来依经验地确定该阈值(例如,所定义的阈值可被建立为最小尺寸,系统性能的改进在此之下被最小化或者在此之下定位并检取现有子任务所要求的时间超过所定义数量的处理器或加速器时钟周期或时间)。在一些实现方式中,所定义的阈值可以是由物理参数和/或对相应处理器110/核114或加速器112的配置所确定的固定值。在一些实现方式中,所定义的阈值可以是由任务管理器电路140基于一个或多个操作参数所确定的可变值,这些操作参数诸如,存储器利用率、处理器/核利用率、加速器利用率、或其组合。
如果在612处任务管理器电路140判定新的子任务150x的尺寸满足或超过所定义的阈值,则方法600在614处继续。如果在612处任务管理器电路140判定新的子任务150x的尺寸小于所定义的阈值,则方法600在620处继续。
在614处,任务管理器电路140判定与第一任务150相关联的输出变元是否沿主轴125可分摊、可拆分或可分割以形成610处所提出的新的子任务1501-150n。如果任务管理器电路140判定与第一任务150相关联的输出变元沿主轴125可分摊、可拆分或可分割以形成610处所提出的新的子任务1501-150n,则方法600在616处继续。如果任务管理器电路140判定与第一任务150相关联的输出变元不是沿主轴125可分割以形成610处所提出的新的子任务1501-150n的,则方法600在620处继续。
在616处,响应于任务管理器电路140判定现有子任务150x的尺寸满足或超过所定义的阈值,并且与第一任务150相关联的输出变元沿主轴125可分摊、可拆分或可分割以提供在610处所提出的新的子任务1501-150n,则任务管理器电路140可将第一任务150分摊、拆分或分割成在610处所提出的多个新的子任务1501-150n
在618处,任务管理器电路140将新的子任务150x和第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将新的子任务150x和第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的新的子任务150x的输出变元传输到第二任务152在其上执行的第二处理器110/核114或加速器112而引入的等待时间。在618之后,该方法600在624处结束。
在620处,响应于任务管理器电路140判定现有子任务150x的尺寸小于所定义的阈值或者(或并且)与第一任务150相关联的输出变元不是沿主轴125可分摊、可拆分或可分割以提供在610处所提出的新的子任务1501-150n的,则任务管理器电路140可拒绝对第一任务150的分摊或分割,由此允许第一任务150保持不被分割。
在622处,任务管理器电路140将不被分割的第一任务150和第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将不被分割第一任务150和第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的与不被分割的第一任务150相关联的输出变元传输到第二任务152在其上执行的第二处理器110/核114或加速器112而引入的等待时间。在622之后,该方法600在624处结束。
在626处,如果任务管理器电路140判定第一任务输出变元包括或形成第二任务输入变元的子集(例如,与第二任务152相关联的输入变元形成与第一任务150相关联的输出变元的超集),则方法600进行至628,否则,该方法600在642处结束。
在628处,任务管理器电路140提出将第二任务152分摊、拆分或分割成多个新的子任务1521-152n。任务管理器电路140提出对第二任务152的分摊、拆分或分割,以使得与至少一个新的子任务(152x)相关联的输入变元共享或形成同与至少一个第一任务150相关联的输出变元的1∶1对应关系。
在630处,任务管理器电路140判定新的子任务152x的尺寸是否满足或超过所定义的阈值。可基于所测量的或理论上的处理器110/核114或加速器112性能来依经验地确定该阈值(例如,所定义的阈值可被确立为最小尺寸,系统性能的改进在此之下被最小化或者在此之下定位并检取现有子任务所要求的时间超过所定义数量的处理器或加速器时钟周期或时间)。在一些实现方式中,所定义的阈值可以是由物理参数和/或对相应处理器110/核114或加速器112的配置所确定的固定值。在一些实现方式中,所定义的阈值可以是由任务管理器电路140基于一个或多个操作参数所确定的可变值,这些操作参数诸如,存储器利用率、处理器/核利用率、加速器利用率、或其组合。
如果任务管理器电路140判定新的子任务152x的尺寸满足或超过所定义的阈值,则方法600在632处继续。如果任务管理器电路140判定新的子任务152x的尺寸小于所定义的阈值,则方法600在638处继续。
在632处,任务管理器电路140判定与第二任务152相关联的输入变元是否沿主轴125可分摊、可拆分或可分割以形成628处所提出的新的子任务1521-152n。如果任务管理器电路140判定与第二任务152相关联的输入变元沿主轴125可分摊、可拆分或可分割以形成628处所提出的新的子任务1521-152n中的至少一些,则方法600在634处继续。如果任务管理器电路140判定与第二任务152相关联的输入变元不是沿主轴125可分割以形成628处所提出的新的子任务1521-152n中的至少一些的,则方法600在638处继续。
在634处,响应于判定新的子任务152x的尺寸满足或超过所定义的阈值,任务管理器电路140将第二任务152分摊、拆分或分割成628处所提出的新的子任务1521-152n
在636处,任务管理器电路140将新的子任务152x和第一任务150指派给公共设备,诸如,公共处理器110/核114或加速器112。将第一任务150和新的子任务152x指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的与第一任务150相关联的输出变元传输到新的子任务152x在其上执行的第二处理器110/核114或加速器112而引入的等待时间。在636之后,该方法600在642处结束。
在638处,响应于判定新的子任务152x的尺寸小于所定义的阈值或者与第二任务152相关联的输入变元不是沿主轴125可分摊、可拆分或可分割以提供628处所提出的新的子任务1521-152n的,任务管理器电路140拒绝将第二任务152分摊、拆分或分割成新的子任务1521-152n,并且允许第二任务保持不被分割。
在640处,任务管理器电路140将第一任务150和不被分割的第二任务152指派给公共设备,诸如,公共处理器110/核114或加速器112。将第一任务150和不被分割的第二任务152指派给公共设备有益地消除了因将来自第一处理器110/核114或加速器112的与第一任务150相关联的输出变元传输到不被分割的第二任务152在其上执行的第二处理器110/核114或加速器112而引入的等待时间。在640之后,该方法600在642处结束。
另外,已参考以上附图和所附示例进一步描述了针对实施例的操作。附图中的一些可包括逻辑流程。虽然本文中所呈现的此类附图可包括特定的逻辑流程,但可以领会,该逻辑流程仅仅提供可以如何实现本文中所描述的一般功能的示例。进一步地,除非另外指示,否则不一定必须按照所呈现的次序来执行给定的逻辑流程。实施例不限于此上下文。
本文中已描述了各种特征、方面和实施例。如本领域技术人员将理解,这些特征、方面和实施例易于彼此组合及进行变型和修改。本公开应当因此被认为包含此类组合、变型和修改。因此,本发明的宽度和范围不应由上述示例性实施例中的任何一个来限制,而应当仅根据所附权利要求及其等效方案来限定。
本文中已采用的术语和表达被用作描述性而非限制性的术语,并且在使用此类术语和表达时,不旨在排除所示出的和所描述的特征(或其部分)的任何等效内容,而且应当认识到,在权利要求书的范围之内各种修改都是可能的。相应地,权利要求书旨在涵盖所有此类等效内容。本文中已描述了各种特征、方面和实施例。如本领域技术人员将理解,这些特征、方面和实施例易于彼此组合及进行变型和修改。本公开应当因此被认为包含此类组合、变型和修改。
贯穿说明书对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,短语在“在一个实施例中”或“在实施例中”在贯穿该说明书各处的出现不一定全部指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
根据示例1,提供了一种系统,该系统包括:多个可通信地耦合的处理器;系统存储器,可通信地耦合至该多个可通信地耦合的处理器;以及任务管理器电路,在多个可通信地耦合的处理器之间动态地分配任务,该任务管理器电路用于:将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较;判定与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元中的至少一些之间存在1∶1对应关系;以及响应于判定与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元具有1∶1对应关系,而:将该第一任务分摊成多个新的第一任务子任务,以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系。
示例2可包括如示例1所述的要素,并且任务管理器电路可进一步:响应于判定与第一任务相关联的多个输出变元具有同与第二任务相关联的多个输入变元中的至少一些的1∶1对应关系:将第二任务分摊成多个新的第二任务子任务,以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系。
示例3可包括如示例2所述的要素,并且任务管理器电路可进一步:响应于将第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系:判定与该新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例4可包括如示例3所述的要素,并且任务管理器电路可进一步响应于判定与新的第一任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例5可包括如示例3所述的要素,并且任务管理器电路可进一步响应于判定与新的第一任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第一任务相关联的多个输出变元是否在系统存储器中沿主轴可分。
示例6可包括如示例5所述的要素,并且任务管理器电路可进一步响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴可分而将新的第一任务子任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例7可包括如示例6所述的要素,并且任务管理器电路可进一步响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例8可包括如示例2所述的要素,并且任务管理器电路可进一步响应于将第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系而判定与该新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例9可包括如示例8所述的要素,并且任务管理器电路可进一步响应于判定与新的第二任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例10可包括如示例8所述的要素,并且任务管理器电路可进一步响应于判定与新的第二任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第二任务相关联的多个输入变元是否在系统存储器中沿主轴可分。
示例11可包括如示例10所述的要素,并且任务管理器电路可进一步响应于判定与第二任务相关联的多个输入变元在系统存储器中沿主轴可分而将第一任务和新的第二任务子任务的执行调度在多个处理器中的公共处理器上。
示例12可包括如示例10所述的要素,并且任务管理器电路可进一步响应于判定与第二任务相关联的输入变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
根据示例13,提供了一种在多个可通信地耦合的处理器之间动态地分配任务的方法。该方法可包括:由任务管理器将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较;由该任务管理器判定在与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元中的至少一些之间是否存在1∶1对应关系;以及响应于判定与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元具有1∶1对应关系:由任务管理器将第一任务分摊成多个新的第一任务子任务,以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系。
示例14可包括如示例13所述的要素,并且该方法可附加地包括:响应于判定与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元中的至少一些具有1∶1对应关系,而由任务管理器将第二任务分摊成多个新的第二任务子任务,以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系。
示例15可包括如示例14所述的要素,并且该方法可附加地包括:响应于将第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系,而由任务管理器判定与该新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例16可包括如示例15所述的要素,并且该方法可附加地包括:响应于判定与新的第一任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例17可包括如示例15所述的要素,并且该方法可附加地包括:响应于判定与新的第一任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第一任务相关联的多个输出变元是否在系统存储器中沿主轴可分。
示例18可包括如示例17所述的要素,并且该方法可附加地包括:响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴是否可分而将新的第一任务子任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例19可包括如示例17所述的要素,并且该方法可附加地包括:响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴是否不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例20可包括如示例14所述的要素,并且该方法可附加地包括:响应于由任务管理器将第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系而判定与该新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例21可包括如示例20所述的要素,并且该方法可附加地包括:响应于判定与新的第二任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例22可包括如示例20所述的要素,并且该方法可附加地包括:响应于判定与新的第二任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第二任务相关联的多个输入变元是否在系统存储器中沿主轴可分。
示例23可包括如示例22所述的要素,并且该方法可附加地包括:响应于判定与第二任务相关联的多个输入变元在系统存储器中沿主轴可分而将第一任务和新的第二任务子任务的执行调度在多个处理器中的公共处理器上。
示例24可包括如示例22所述的要素,并且该方法可附加地包括:响应于判定与第二任务相关联的多个输入变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
根据示例25,提供了一种设备,该设备包括任务管理器电路,该任务管理器电路在多个可通信地耦合的处理器之间动态地分配任务。该任务管理器电路可:将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较;判定在与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元中的至少一些之间是否存在1∶1对应关系;以及响应于判定与第一任务相关联的多个输出变元中的至少一些具有同与第二任务相关联的多个输入变元的1∶1对应关系而将第一任务分摊成多个新的第一任务子任务,以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系;以及响应于判定与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元中的至少一些具有1∶1对应关系,而将第二任务分摊成多个新的第二任务子任务,以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系。
示例26可包括如示例25所述的要素,并且任务管理器电路可进一步响应于将第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系,而判定与该新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例27可包括如示例26所述的要素,并且任务管理器电路可进一步响应于判定与新的第一任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例28可包括如示例26所述的要素,并且任务管理器电路可进一步响应于判定与新的第一任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第一任务相关联的多个输出变元是否在系统存储器中沿主轴可分。
示例29可包括如示例28所述的要素,并且任务管理器电路可进一步响应于与第一任务相关联的多个输出变元在系统存储器中沿主轴可分而将新的第一任务子任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例30可包括如示例28所述的要素,并且任务管理器电路可进一步响应于与第一任务相关联的多个输出变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例31可包括如示例25所述的要素,并且任务管理器电路可进一步响应于将第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系而判定与该新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例32可包括如示例31所述的要素,并且任务管理器电路可进一步响应于判定与新的第二任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例33可包括如示例32所述的要素,并且任务管理器电路可进一步响应于判定与新的第二任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第二任务相关联的多个输入变元是否在系统存储器中沿主轴可分。
示例34可包括如示例33所述的要素,并且任务管理器电路可进一步响应于与第二任务相关联的多个输入变元在系统存储器中沿主轴可分而将第一任务和新的第二任务子任务的执行调度在多个处理器中的公共处理器上。
示例35可包括如示例34所述的要素,并且任务管理器电路可进一步响应于判定与第二任务相关联的输入变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
根据示例36,提供了一种在多个可通信地耦合的处理器之间动态地分配任务的系统。该系统可包括:用于将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较的装置;用于判定在与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元中的至少一些之间是否存在1∶1对应关系的装置;以及响应于判定与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元具有1∶1对应关系而用于将第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系的装置。
示例37可包括如示例36所述的要素,并且该系统可附加地包括:响应于判定与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元中的至少一些具有1∶1对应关系而用于将第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系的装置。
示例38可包括如示例37所述的要素,并且该系统可附加地包括:响应于将第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系而用于判定与该新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值的装置。
示例39可包括如示例38所述的要素,并且该系统可附加地包括:响应于判定与新的第一任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而用于将第一任务和第二任务的执行调度在多个处理器中的公共处理器上的装置。
示例40可包括如示例38所述的要素,并且该系统可附加地包括:响应于判定与新的第一任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而用于判定与第一任务相关联的多个输出变元是否在系统存储器中沿主轴可分的装置。
示例41可包括如示例40所述的要素,并且该系统可附加地包括:响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴是否可分而用于将新的第一任务子任务和第二任务的执行调度在多个处理器中的公共处理器上的装置。
示例42可包括如示例40所述的要素,并且该系统可附加地包括:响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴是否不可分而用于将第一任务和第二任务的执行调度在多个处理器中的公共处理器上的装置。
示例43可包括如示例37所述的要素,并且该系统可附加地包括:响应于由任务管理器将第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系而用于判定与该新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值的装置。
示例44可包括如示例43所述的要素,并且该系统可附加地包括:响应于判定与新的第二任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而用于将第一任务和第二任务的执行调度在多个处理器中的公共处理器上的装置。
示例45可包括如示例43所述的要素,并且该系统可附加地包括:响应于判定与新的第二任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而用于判定与第二任务相关联的多个输入变元是否在系统存储器中沿主轴可分的装置。
示例46可包括如示例45所述的要素,并且该系统可附加地包括:响应于判定与第二任务相关联的多个输入变元在系统存储器中沿主轴可分而用于将第一任务和新的第二任务子任务的执行调度在多个处理器中的公共处理器上的装置。
示例47可包括如示例43所述的要素,并且该系统可附加地包括:响应于判定与第二任务相关联的多个输入变元在系统存储器中沿主轴不可分而用于将第一任务和第二任务的执行调度在多个处理器中的公共处理器上的装置。
根据示例48,提供了一种非瞬态计算机可读介质,包括指令,这些指令在由电路执行时将该电路变换成专用的任务管理器电路。该任务管理器电路可:将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较;判定在与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元中的至少一些之间是否存在1∶1对应关系;以及响应于判定与第一任务相关联的多个输出变元中的至少一些同与第二任务相关联的多个输入变元具有1∶1对应关系而将第一任务分摊成多个新的第一任务子任务,以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系。
示例49可包括如示例48所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与第一任务相关联的多个输出变元具有同与第二任务相关联的多个输入变元中的至少一些的1∶1对应关系:将第二任务分摊成多个新的第二任务子任务,以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系。
示例50可包括如示例48所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于将第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与第二任务相关联的多个输入变元中的每个输入变元具有1∶1对应关系,判定与该新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例51可包括如示例50所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与新的第一任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例52可包括如示例50所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与新的第一任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第一任务相关联的多个输出变元是否在系统存储器中沿主轴可分。
示例53可包括如示例52所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴可分而将新的第一任务子任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例54可包括如示例52所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与第一任务相关联的多个输出变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例55可包括如示例49所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于将第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与第一任务相关联的多个输出变元中的每个输出变元具有1∶1对应关系而判定与该新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
示例56可包括如示例55所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与新的第二任务子任务相关联的至少一个参数并非大于或等于至少一个所定义的阈值而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
示例57可包括如示例55所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与新的第二任务子任务相关联的至少一个参数大于或等于至少一个所定义的阈值而判定与第二任务相关联的多个输入变元是否在系统存储器中沿主轴可分。
示例58可包括如示例57所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与第二任务相关联的多个输入变元在系统存储器中沿主轴可分而将第一任务和新的第二任务子任务的执行调度在多个处理器中的公共处理器上。
示例59可包括如示例55所述的要素,其中,指令可进一步使得任务管理器电路用于:响应于判定与第二任务相关联的输入变元在系统存储器中沿主轴不可分而将第一任务和第二任务的执行调度在多个处理器中的公共处理器上。
根据示例60,提供了一种用于在多个可通信地耦合的处理器之间动态地分配任务的系统,该系统被布置成用于执行如示例13到24中任一项所述的方法。
根据示例61,提供了一种芯片组,该芯片组被布置成用于执行如示例13到24中任一项所述方法。
根据示例62,提供了一种非瞬态机器可读介质,包括多条指令,该多条指令响应于在计算设备上被执行而使得该计算设备执行如示例13到24中任一项所述的方法。
根据示例63,提供了一种被配置成用于在多个可通信地耦合的处理器之间动态地分配任务的设备,该设备被布置成用于执行如示例13到24中任一项所述的方法。
本文中已采用的术语和表达被用作描述性而非限制性的术语,并且在使用此类术语和表达时,不旨在排除所示出的和所描述的特征(或其部分)的任何等效内容,而且应当认识到,在权利要求书的范围之内各种修改都是可能的。相应地,权利要求书旨在涵盖所有此类等效内容。

Claims (25)

1.一种系统,包括:
多个能通信地耦合的处理器;
系统存储器,能通信地耦合至所述多个能通信地耦合的处理器;以及
任务管理器电路,在所述多个能通信地耦合的处理器之间分配任务,所述任务管理器电路用于:
将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较;
判定与所述第一任务相关联的所述多个输出变元中的至少一些同与所述第二任务相关联的所述多个输入变元中的至少一些之间是否存在1∶1对应关系;以及
响应于判定与所述第一任务相关联的所述多个输出变元中的至少一些同与所述第二任务相关联的所述多个输入变元具有1∶1对应关系:
将所述第一任务分摊成多个新的第一任务子任务,以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与所述第二任务相关联的所述多个输入变元中的每个输入变元具有1∶1对应关系。
2.如权利要求1所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述第一任务相关联的所述多个输出变元同与所述第二任务相关联的所述多个输入变元中的至少一些具有1∶1对应关系:
将所述第二任务分摊成多个新的第二任务子任务,以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与所述第一任务相关联的所述多个输出变元中的每个输出变元具有1∶1对应关系。
3.如权利要求2所述的系统,所述任务管理器电路进一步用于:
响应于将所述第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与所述第二任务相关联的所述多个输入变元中的每个输入变元具有1∶1对应关系:
判定与所述新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
4.如权利要求3所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述新的第一任务子任务相关联的所述至少一个参数并非大于或等于所述至少一个所定义的阈值:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
5.如权利要求3所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述新的第一任务子任务相关联的所述至少一个参数大于或等于所述至少一个所定义的阈值:
判定与所述第一任务相关联的所述多个输出变元是否在系统存储器中沿主轴能分。
6.如权利要求5所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述第一任务相关联的所述多个输出变元在系统存储器中沿主轴能分:
将所述新的第一任务子任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
7.如权利要求5所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述第一任务相关联的所述多个输出变元在系统存储器中沿主轴不能分:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
8.如权利要求2所述的系统,所述任务管理器电路进一步用于:
响应于将所述第二任务分摊成所述多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与所述第一任务相关联的所述多个输出变元中的每个输出变元具有1∶1对应关系:
判定与所述新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
9.如权利要求8所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述新的第二任务子任务相关联的所述至少一个参数并非大于或等于所述至少一个所定义的阈值:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
10.如权利要求8所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述新的第二任务子任务相关联的所述至少一个参数大于或等于至少一个所定义的阈值:
判定与所述第二任务相关联的所述多个输入变元是否在系统存储器中沿主轴能分。
11.如权利要求10所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述第二任务相关联的所述多个输入变元在系统存储器中沿所述主轴能分:
将所述第一任务和所述新的第二任务子任务的执行调度在所述多个处理器中的公共处理器上。
12.如权利要求10所述的系统,所述任务管理器电路进一步用于:
响应于判定与所述第二任务相关联的输入变元在系统存储器中沿所述主轴不能分:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
13.一种在多个能通信地耦合的处理器之间动态地分配任务的方法,所述方法包括:
由任务管理器将与第一任务相关联的多个输出变元同与第二任务相关联的多个输入变元进行比较;
由所述任务管理器判定与所述第一任务相关联的所述多个输出变元中的至少一些同与所述第二任务相关联的所述多个输入变元中的至少一些之间是否存在1:1对应关系;以及
响应于判定与所述第一任务相关联的所述多个输出变元中的至少一些同与所述第二任务相关联的所述多个输入变元具有1∶1对应关系:
由所述任务管理器将所述第一任务分摊成多个新的第一任务子任务,以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与所述第二任务相关联的所述多个输入变元中的每个输入变元具有1∶1对应关系。
14.如权利要求13所述的方法,进一步包括:
响应于判定与所述第一任务相关联的所述多个输出变元同与所述第二任务相关联的所述多个输入变元中的至少一些具有1∶1对应关系:
由所述任务管理器将所述第二任务分摊成多个新的第二任务子任务,以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与所述第一任务相关联的所述多个输出变元中的每个输出变元具有1∶1对应关系。
15.如权利要求14所述的方法,进一步包括:
响应于将所述第一任务分摊成多个新的第一任务子任务以使得与新的第一任务子任务相关联的输出变元中的每个输出变元同与所述第二任务相关联的所述多个输入变元中的每个输入变元具有1∶1对应关系:
由所述任务管理器判定与所述新的第一任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
16.如权利要求15所述的方法,进一步包括:
响应于判定与所述新的第一任务子任务相关联的所述至少一个参数并非大于或等于所述至少一个所定义的阈值:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
17.如权利要求15所述的方法,进一步包括:
响应于判定与所述新的第一任务子任务相关联的所述至少一个参数大于或等于所述至少一个所定义的阈值:
判定与所述第一任务相关联的所述多个输出变元是否在系统存储器中沿主轴能分。
18.如权利要求17所述的方法,进一步包括:
响应于判定与所述第一任务相关联的所述多个输出变元在系统存储器中沿主轴是否能分:
将所述新的第一任务子任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
19.如权利要求17所述的方法,进一步包括:
响应于判定与所述第一任务相关联的所述多个输出变元在系统存储器中沿主轴不能分:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
20.如权利要求14所述的方法,进一步包括:
响应于由所述任务管理器将所述第二任务分摊成多个新的第二任务子任务以使得与新的第二任务子任务相关联的输入变元中的每个输入变元同与所述第一任务相关联的所述多个输出变元中的每个输出变元具有1∶1对应关系,而:
判定与所述新的第二任务子任务相关联的至少一个参数是否大于或等于至少一个所定义的阈值。
21.如权利要求20所述的方法,进一步包括:
响应于判定与所述新的第二任务子任务相关联的所述至少一个参数并非大于或等于至少一个所定义的阈值:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
22.如权利要求20所述的方法,进一步包括:
响应于判定与所述新的第二任务子任务相关联的所述至少一个参数大于或等于至少一个所定义的阈值:
判定与所述第二任务相关联的所述多个输入变元是否在系统存储器中沿主轴能分。
23.如权利要求22所述的方法,进一步包括:
响应于判定与所述第二任务相关联的所述多个输入变元在系统存储器中沿主轴能分:
将所述第一任务和所述新的第二任务子任务的执行调度在所述多个处理器中的公共处理器上。
24.如权利要求22所述的方法,进一步包括:
响应于判定与所述第二任务相关联的所述多个输入变元在系统存储器中沿主轴不能分:
将所述第一任务和所述第二任务的执行调度在所述多个处理器中的公共处理器上。
25.一种非瞬态机器可读介质,包括多条指令,所述多条指令响应于在计算设备上被执行而使得所述计算设备执行如权利要求13至24中任一项所述的方法。
CN201780071470.9A 2016-12-19 2017-11-17 用于动态运行时任务管理的方法、系统、设备、装置和介质 Active CN110300959B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/383,738 2016-12-19
US15/383,738 US10073715B2 (en) 2016-12-19 2016-12-19 Dynamic runtime task management
PCT/US2017/062395 WO2018118303A1 (en) 2016-12-19 2017-11-17 Dynamic runtime task management

Publications (2)

Publication Number Publication Date
CN110300959A true CN110300959A (zh) 2019-10-01
CN110300959B CN110300959B (zh) 2023-07-18

Family

ID=62556289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780071470.9A Active CN110300959B (zh) 2016-12-19 2017-11-17 用于动态运行时任务管理的方法、系统、设备、装置和介质

Country Status (4)

Country Link
US (1) US10073715B2 (zh)
CN (1) CN110300959B (zh)
DE (1) DE112017006367T5 (zh)
WO (1) WO2018118303A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3662474B1 (en) * 2017-07-30 2023-02-22 NeuroBlade Ltd. A memory-based distributed processor architecture
US11074106B2 (en) * 2019-07-01 2021-07-27 Sap Se Sorting tasks with dependencies and resource sharing
CN113821311A (zh) * 2020-06-19 2021-12-21 华为技术有限公司 任务执行方法及存储设备
US20220226994A1 (en) * 2020-07-20 2022-07-21 Georgia Tech Research Corporation Heterogeneous graph attention networks for scalable multi-robot scheduling
US11803416B1 (en) * 2020-12-16 2023-10-31 Wells Fargo Bank, N.A. Selection and management of devices for performing tasks within a distributed computing system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029092A (en) * 1996-11-21 2000-02-22 Intellinet, Inc. System and method for providing modular control and for managing energy consumption
CN103534656A (zh) * 2011-03-31 2014-01-22 阿尔斯通技术有限公司 用于管理过程自动化控制的方法及关联系统
CN103765384A (zh) * 2011-09-02 2014-04-30 飞思卡尔半导体公司 数据处理系统和在数据处理系统中进行任务调度的方法
US20140351818A1 (en) * 2013-05-23 2014-11-27 Ellison Information Manufacturing Inc. Method and system for input driven process flow management
WO2015115852A1 (en) * 2014-01-29 2015-08-06 Samsung Electronics Co., Ltd. Task scheduling method and apparatus

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2638453C (en) 2006-03-14 2010-11-09 Transgaming Technologies Inc. General purpose software parallel task engine
WO2010055719A1 (ja) 2008-11-14 2010-05-20 日本電気株式会社 スケジュール決定装置、並列実行装置、スケジュール決定方法、及びプログラム
US8973010B2 (en) 2010-05-28 2015-03-03 Varian Medical Systems International, AG Scheduling image recognition tasks based on task dependency and phase
IN2013MU02879A (zh) 2013-09-05 2015-07-03 Tata Consultancy Services Ltd

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029092A (en) * 1996-11-21 2000-02-22 Intellinet, Inc. System and method for providing modular control and for managing energy consumption
CN103534656A (zh) * 2011-03-31 2014-01-22 阿尔斯通技术有限公司 用于管理过程自动化控制的方法及关联系统
CN103765384A (zh) * 2011-09-02 2014-04-30 飞思卡尔半导体公司 数据处理系统和在数据处理系统中进行任务调度的方法
US20140351818A1 (en) * 2013-05-23 2014-11-27 Ellison Information Manufacturing Inc. Method and system for input driven process flow management
WO2015115852A1 (en) * 2014-01-29 2015-08-06 Samsung Electronics Co., Ltd. Task scheduling method and apparatus

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TASSADAQ HUSSAIN: ""AMC: Advanced Multi-accelerator Controller"", 《PARALLEL COMPUTING》 *
李成华等: ""MapReduce:新型的分布式并行计算编程模型"", 《计算机工程与科学》 *

Also Published As

Publication number Publication date
DE112017006367T5 (de) 2019-09-05
WO2018118303A1 (en) 2018-06-28
US20180173563A1 (en) 2018-06-21
CN110300959B (zh) 2023-07-18
US10073715B2 (en) 2018-09-11

Similar Documents

Publication Publication Date Title
CN110300959A (zh) 动态运行时任务管理
Wang et al. Firefly algorithm with neighborhood attraction
Lo’ai et al. Mobile cloud computing model and big data analysis for healthcare applications
CN107209548A (zh) 在多核处理器中执行功率管理
CN105359057B (zh) 设置计算机参数使得电源工作在基于电源的功率效率峰值的范围内
Pena et al. The internet of things: The role of reconfigurable platforms
CN102999385B (zh) 计算设备中多处理器协同处理方法
CN106293914B (zh) 一种任务调度的方法及终端
CN107209545A (zh) 在多核处理器中执行功率管理
CN105049218B (zh) PhiCloud云计费方法及系统
CN105988859A (zh) 虚拟机部署
CN106415498A (zh) 虚拟机功率管理
CN106201707A (zh) 处理器资源分配方法及装置
CN108958881A (zh) 数据处理方法、装置及计算机可读存储介质
CN111159093B (zh) 异构智能计算系统
CN111506434B (zh) 一种任务处理方法、装置及计算机可读存储介质
CN110389873A (zh) 一种判定服务器资源使用情况的方法和装置
Liang et al. An energy-aware resource deployment algorithm for cloud data centers based on dynamic hybrid machine learning
CN107145216A (zh) 一种调度方法
Obukhova et al. Diagnostics of power consumption of a mobile device multi-core processor with detail of each core utilization
Wang et al. Energy drain of the object detection processing pipeline for mobile devices: Analysis and implications
CN108965404A (zh) 云网健康服务系统及方法
CN110457124A (zh) 针对业务线程的处理方法及其装置、电子设备和介质
CN109597912A (zh) 用于处理图片的方法
Marin et al. Reaching for the clouds: contextually enhancing smartphones for energy efficiency

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