CN102004630A - 多核/线程工作组计算调度器 - Google Patents
多核/线程工作组计算调度器 Download PDFInfo
- Publication number
- CN102004630A CN102004630A CN2010102686794A CN201010268679A CN102004630A CN 102004630 A CN102004630 A CN 102004630A CN 2010102686794 A CN2010102686794 A CN 2010102686794A CN 201010268679 A CN201010268679 A CN 201010268679A CN 102004630 A CN102004630 A CN 102004630A
- Authority
- CN
- China
- Prior art keywords
- order
- counter
- working group
- performance element
- command queue
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Abstract
本发明涉及一种多核/线程工作组计算调度器。执行单元处理一个或多个命令队列中的命令。一旦可在队列上提供命令,参与执行命令的每个单元自动将命令的剩余工作组计数器递减工作组保留大小并处理工作组范围内相应数目的工作组。处理了范围内的所有工作组之后,执行单元递增已处理工作组计数器。将已处理工作组计数器递增到待执行工作组计数器中存储的值的单元发出命令完成信号。每个访问命令的执行单元还标记所看到工作组计数器。一旦已处理工作组计数器等于待执行工作组计数器并且所看到工作组计数器等于执行单元数,可删除或覆盖所述命令队列上的命令。
Description
技术领域
要求保护的主题一般地涉及计算资源的分配,更具体地说,涉及用于调度多核处理系统中的数据和任务并行负载的技术。
背景技术
计算系统的调度可涉及针对数据并行或任务并行或这两者的某种组合构建的作业。数据并行作业或数据并行负载是其中可由多个单元(例如但不限于处理器或处理核心)并行操作数据的计算。此类处理的一个示例由操纵视频数据的图形处理单元(GPU)执行,在操纵视频数据中,将位图分成区域并且可以同时操作每个区域。任务并行负载是其中多个执行单元针对一组数据并行地独立地执行不同任务的计算。此类任务的一个示例是过滤数据,其中一组数据通过一个过滤器并且结果通过第二过滤器。
发明内容
提供了多种技术,包括:生成第一命令队列以便排队到计算设备的命令;将命令发布到所述第一命令队列,其中所述命令包括多个工作组;将数据结构与所述命令关联,所述数据结构标识了所述多个工作组、与所述命令对应的保留大小、存储工作组的数目的计数器以及存储待处理工作组的数目的计数器;由多个执行单元中的每个执行单元保留所述多个工作组的不同N维范围,其中所述N维范围对应于所述保留大小;由所述多个执行单元中的每个执行单元处理对应的N维范围;将所述存储待处理工作组的数目的计数器递减每个执行单元已处理的工作组的数目;重复保留、处理和递减步骤,直到所述存储待处理工作组的数目的计数器小于或等于值“0”;以及当所述存储待处理工作组的数目的计数器小于或等于值“0”时,发出信号以指示所述命令完成。
本概要并非旨在全面地说明要求保护的主题,而是旨在简单地概述与其相关的某些功能。通过参考下图以及详细的说明,要求保护的主题的其他系统、方法、功能、特性以及优点对于本领域的技术人员而言将是显而易见的或将变得显而易见。
附图说明
当结合附图阅读下面对所披露的实施例的详细说明时,可以更好地理解要求保护的主题,这些附图是:
图1是可以实现要求保护的主题的计算系统体系结构的一个示例;
图2是图1中首先介绍的中央处理单元的示例的方块图;
图3是根据要求保护的主题的可用于实现命令队列的命令描述符存储器对象的示例;
图4是示出主机、命令队列、多个处理核心以及它们之间的关系的示例的方块图;
图5是示出计数器块、N维范围(NDR)命令、任务、处理核心以及它们之间的关系的示例的方块图;
图6是示出主机控制过程的示例的流程图;
图7是示出可用于实现要求保护的主题的执行命令过程的示例的流程图;以及
图8是示出实现要求保护的主题的一个方面的命令完成过程的示例的流程图。
具体实施方式
提供了多种技术,其中执行命令包含有效地执行和平衡命令(包括数据或任务并行处理要求)的工作负载所需的信息。每个命令都包括与要执行的命令内的工作组总数、待计算工作组数目、已处理工作组数目、一次处理的工作组数目(保留大小)、要在命令中处理的执行线程数目以及已看到命令的执行线程数目对应的信息。
执行单元处理一个或多个命令队列中的命令。执行单元可以是任何执行命令的计算设备,包括但不限于处理核心、线程或跨网络的计算系统。每个执行单元管理所分配队列内的当前位置。一旦可在队列上提供命令,参与执行命令的每个单元自动将命令的剩余工作组计数器递减工作组保留大小并保留工作组范围内相应数目的工作组以便处理。一旦执行单元执行了所请求的工作组,该单元将尝试保留更多工作组。此操作将继续,直到已处理所有工作组。处理了所有工作组之后,每个执行单元递增已处理工作组计数器。例如,如果特定执行单元一次处理十(10)个工作组,处理了三(3)次,然后确定已处理所有工作组,则该执行单元将已处理工作组计数器递增三十(30)。将已处理工作组计数器递增到待执行工作组计数器中存储的值的单元将发出命令完成信号。
每个访问命令的执行单元还标记已看到工作组计数器。一旦已处理工作组计数器等于带执行工作组计数器并且已看到工作组计数器等于执行单元数目,便可删除或覆盖命令队列上的命令。
本领域的技术人员将理解,本发明的各个方面可以体现为系统、方法或计算机程序产品。因此,本发明的各个方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或同时包含在此被统称为“电路”、“模块”或“系统”的硬件和软件方面的实施例的形式。此外,本发明的各个方面可以采取在一个或多个内合计算机可读程序代码的计算机可读介质中体现的计算机程序产品的形式。
根据要求保护的主题的一个实施例涉及用于有效地排队数据并行和任务并行作业的程序化方法。此处所用的术语“程序化方法”被定义为目前执行的一个或多个过程步骤;或者备选地被定义为在未来某个时刻执行的一个或多个过程步骤。术语“程序化方法”预计了三种备选形式。第一,程序化方法包括目前执行的过程步骤。第二,程序化方法包括承载计算机指令的计算机可读介质,所述计算机指令在被计算机执行时,将执行一个或多个过程步骤。最后,程序化方法包括通过软件、硬件、固件或它们的任意组合进行编程以执行一个或多个过程步骤的计算机系统。将理解,术语“程序化方法”不应被构想为同时具有一个以上的备选形式,而是应被构想为一种备选形式,其中在任意给定时刻都只存在多个备选形式中的一个。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以例如是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备,或者是上述各项的任意适当组合。计算机可读存储介质的更具体的实例(非穷举列表)包括以下各项:具有一条或多条连线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述各项的任意适当组合。在本文档的上下文中,计算机可读存储介质可以是任何可以包含或存储由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形介质。
计算机可读信号介质可以例如包括位于基带中或作为载波一部分的其中包含计算机可读程序代码的传播数据信号。此类传播信号可以采取各种形式中的任意形式,包括但不限于电磁、光或它们的任意适当组合。计算机可读信号介质可以是计算机可读存储介质以外的任何计算机可读介质,并且可以传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序。
计算机可读介质上承载的程序代码可以使用任意适当的介质进行传输,所述介质包括但不限于无线、有线、光缆、射频等或上述各项的任意适当组合。
用于执行本发明的各个方面的操作的计算机程序代码可以通过一种或多种编程语言的任意组合进行编写,所述编程语言包括诸如Java、Smaltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言之类的传统过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立式软件包执行、部分地在用户计算机上和部分地在远程计算机上执行,或完全地在远程计算机或服务器上执行。在后一种情况下,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任意类型的网络与用户计算机相连,也可以与外部计算机连接(例如,使用因特网服务提供商通过因特网连接)。
下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各个方面进行了描述。应该理解,所述流程图和/或方块图中的每个方块,以及所述流程图和/或方块图中的方块的组合可以通过计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生成机器,从而使所述指令在通过所述计算机或其他可编程数据处理装置的处理器执行时,能够创建用于实现所述流程图和/或方块图中的一个或多个方块中指定的功能/操作的装置。
这些计算机程序指令还可以存储在可引导计算机、其他可编程数据处理装置或其他设备按照特定方式运行的计算机可读介质中,以便存储在所述计算机可读介质中的指令生成包括用于实现所述流程图和/或方块图中的一个或多个方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可以加载到计算机、其他可编程数据处理装置或其他设备上以使一系列操作步骤在所述计算机、其他可编程装置或其他设备上执行以生成计算机实现的过程,以便在所述计算机或其他可编程装置上执行的指令提供用于实现所述流程图和/或方块图中的一个或多个方块中指定的功能/操作的过程。
如发明者在此认识到的,诸如Cell宽带引擎体系结构(CBEA)之类的体系结构旨在提供灵活性,但是也存在缺点,因为调度模型并未内置于硬件中。对于作为软件功能提供的调度而言,为了与硬件调度器竞争,性能是非常重要的问题。
转到附图,图1是可以实现要求保护的主题的计算系统体系结构100的一个示例。客户机系统102包括中央处理单元(CPU)104。CPU 104可以包括多个处理器(未示出),每个处理器可以包括多个处理核心(参考图2)。计算领域中的技术人员应该理解CPU 104可能具有的许多不同的配置。
客户机系统102和处理器104与监视器106、键盘108以及鼠标110相连,这些元件共同促进与计算系统100以及客户机系统102的人工交互。客户机系统102还包括与CPU 104相连的数据存储组件112,数据存储组件112可以结合到CPU 104中,即作为内部设备,也可以借助各种公共可用的连接设备(诸如但不限于通用串行总线(USB)端口(未示出))从外部与CPU 104相连。数据存储装置112被示为存储操作系统114,操作系统114控制客户机系统112、实现要求保护的主题的命令排队系统(CQS)116的实例的操作。下面将结合图2-8更详细地说明与CQS 116关联的功能。
客户机系统102和CPU 104与局域网(LAN)102相连,局域网(LAN)102还与服务器计算机122相连。尽管在该示例中,CPU 104和服务器122通过LAN 102可通信地相连,但是它们还可以通过诸如但不限于因特网(未示出)之类的任意数量的通信介质相连。此外,应指出的是,存在许多可实现要求保护的主题的可能计算系统配置,其中计算系统100仅是一个简单的示例。
图2是图1中首先介绍的CPU 104的配置示例的方块图。CPU 104包括处理器130,处理器130包括N个执行单元,所述N个执行单元在此示例中为处理核心,即,核心0131、核心1132,依此类推直到核心N 133。处理器130的确切处理核心数并不重要,无论数量为何,要求保护的主题都可等同地工作。应指出的是,除了可能是附加处理器的处理器130之外,为了简单起见,仅示出一个处理器。说明书通篇使用核心131-133作为根据要求保护的主题调度的执行单元的示例。如上所述,执行单元可以是任何执行命令的设备,其中包括但不限于处理核心、CPU、线程,甚至完整的计算系统。
处理器130与数据总线140可通信地相连,数据总线140在核心131-133和存储器控制器142以及输入/输出(I/O)控制器146之间提供通信路径。存储器控制器142负责控制客户机系统102(图1)的存储设备144(图1),例如数据存储装置112。I/O控制器负责控制诸如监视器106(图1)、键盘108(图1)和鼠标110(图1)之类的I/O设备148。本领域的技术人员应理解,图2是典型CPU的非常简单的图示,典型CPU将包括许多其他为了简单而未示出的组件。
图3是根据要求保护的主题的可用于实现命令队列的命令描述符存储器对象(CDMO)的示例。CDMO 150包括:标题部分152,此部分仅示出对象200的名称,即“CommandDescriptorObject”;属性部分154,此部分包含与CDMO 150关联的存储器元素或属性;以及方法部分156,此部分包括可以与CDMO 150结合执行的功能或方法。应指出的是,所述属性和方法仅用于例示。可使用其他和/或不同属性和方法来实现要求保护的主题。
属性部分154包括“cdoID(命令描述符对象ID)”属性158、“workGroup(工作组)”属性160、“atomicWGRemaning(剩余原子工作组)”属性162、“atomicWGProcessed(已处理原子工作组)”属性164、“reservationSize(保留大小)”属性166、“executionUnits(执行单元)”属性168和“atomicUnitsSeen(所见原子单元)”属性170。
CdoID属性158是包含对CDMO 150的特定实例的引用的CDObjectID类型的变量。对象150的每个实例针对属性158都具有唯一的值,从而允许唯一地标识每个实例。WorkGroup属性160是存储CDMO150的特定实例所引用的相应命令中要计算的工作组总数的整数类型的变量。
AtomicWGRemaning属性162是存储待处理工作组的数目的整数类型的变量。在相应命令上开始处理之前,属性162存储的值等于属性160的值。一旦在相应命令上开始处理,属性162的值就等于尚待分配给核心进行处理的工作组数目。一旦处理完成,属性162的值便被设为小于或等于“0”。如下面结合图7更详细地说明的,递减属性162以使属性值小于或等于“0”的执行单元知道剩余的工作组是要针对相应命令处理的最后工作组,因此,可能需要处理不包含工作组的不完整集合。
AtomicWGProcessed属性164是存储相应命令的已完成处理的工作组数目的整数类型变量。在相应命令上开始处理之前,属性164存储的值等于“0”或NULL。一旦处理完成,属性164的值便等于属性160的值,指示已完成处理每个原始分配的工作组。还使用属性164,以便递增属性164的执行单元发出已完成所有工作组的信号。应指出的是,在一个备选实施例中,可以颠倒与属性162和164关联的功能,以便可以使用属性164发出需要继续处理工作组的信号以及使用162确定已完成所有工作组。
ReservationSize属性166是存储一次应向每个核心分配的工作组的数目的整数类型变量。当然,当命令接近完成时,待处理工作组的数目可能小于属性166的值。ExecutionUnits属性168是存储预期看到(即,请求工作组以便处理)特定命令的执行单元数目的整数类型变量。AtomicUnitsSeen属性170是存储已看到命令(或者是因为特定线程已处理与命令关联的工作组,或者是因为当线程做好处理准备时已分配所有工作组)的执行线程的数目的整数类型变量。
CDMO 150的方法部分156包括两种示例性功能或方法。为了简单起见,仅示出两种方法。编程领域中的技术人员应该理解,诸如对象150之类的对象通常将包括许多其他方法,其中包括但不限于constructor(构造器)、destructor(取消构造器)以及设置和获取特定属性的值的方法。
例如,将在“确定集合大小”方块312和“存在剩余工作组?”方块316期间调用“getValues”方法172,将在下面结合图7更详细地说明这两个方块。调用方法172来检索CDMO 150的实例中存储的属性的值。在该示例中,使用一个参数:“valueStructure”调用方法172,此参数是包括属性154的存储空间的CDOValueStructure类型的变量。
例如,在“递增已完成工作组数”方块322调用“updateCDO”方法174,将在下面结合图7更详细地说明此方块。调用方法174以更新相应组件的属性158、160、162、164、166、168和170。在该示例中,使用如上所述的一个参数:“valueStructure”调用方法174,此参数是包括属性154的存储空间的CDOValueStructure类型的变量。
应该理解,CDMO 150只是可用于实现要求保护的主题的存储器对象的一个示例。可以使用具有更少、更多和/或不同属性和方法的其他存储器对象。此外,除了使用对象150外,还可以使用许多其他方法实现要求保护的主题的功能和数据存储。例如,可以借助计算机程序结合关系数据库来实现要求保护的主题。
图4是示出主机202、命令队列204、核心-0210、核心-1211、核心-2212、核心-3213的示例以及它们之间的各种关系示例的方块图。应指出的是,命令队列204是循环的。主机202可以是任何将命令发布到队列的命令执行设备(多个),所述设备包括但不限于客户机系统102(图1)、服务器122(图1)、处理核心、执行线程等。核心210-213可以是诸如核心130-133(图2)之类的与主机202关联的处理核心。如果假设主机202为客户机系统102,则可将命令队列204存储在与CPU 104(图1和2)关联的数据存储装置112(图1)或易失性存储器(未示出)上。
命令队列204被示为包含若干队列元素(QE),具体而言是QE_1 221、QE_2 222、QE_3 223、QE_4 224、QE_5 225、QE_6 226、QE_7 227和QE_8 228。与QE 221-228关联的阴影表示各种可能的状态,其中QE 221和222表示已完成的命令,QE 223-225表示当前不需要处理但是所有执行单元无法看到的命令。QE 226-228表示命令队列204中的空的或可用的队列空位。命令队列204内的空间229只是表示当前未处理,但是由于核心_2 212已经过它们,因此可以被假设为已完成的其他QE。在这种情况下,核心210、211和213尚未看到由空间229表示的QE。尽管相对于与空间229关联的QE完成了处理,但是在被核心210、211和213“看到”之前,无法使用新命令覆盖所述QE。这防止了核心210、211和213尝试访问已被覆盖并且因此存储预期不同信息的QE。
在该示例中,主机202指向下一可用队列元素空位QE_6 226。核心-0210和核心-1 211被示为指向QE_3 223或正在执行与QE_3 223关联的命令,核心-2 222被示为执行与QE_5 225关联的命令,以及核心-3 213被示为执行与QE_4 224关联的命令。下面将结合图5-8更详细地说明各种指针的含义以及命令队列204中存储的命令的执行。
应指出的是,NDR是包括多维工作组/工作项的命令。NDR(尽管与特定命令关联)可以全部包含在诸如QE 221-228之类的单个QE内,但这不是必须的。QE包含命令,所述命令可以是但不限于NDR、任务或队列大小调整指示。所披露的技术还提供将具有多个工作组的单个命令置于多个QE中,使得命令在多个处理组之间交织(参阅图5)。图4的图示可被视为只包括一个处理组的简化示例。
图5是从不同于图4的命令队列204的角度示出命令队列230的示例的方块图。具体而言,命令队列230被示为分成N维范围(NDR)命令和任务命令。换言之,被指定为包括多个工作组的命令被分成一个或多个N维范围。一个特定命令被分为两个NDR:NDR_A1 231和NDR_A2 232。NDR_A1 231和NDR_A2 232都表示单个命令,因此共享计数器块CB_1241。一个命令在命令队列230中具有两个表项,以允许在队列230中处理组之间交织命令。在图5中,由核心131-133表示的处理组处理奇数表项,处理组250处理偶数表项。这种职责划分有助于减轻对共享任务计数器块的竞争。在该示例中,将单个命令分为两个表项NDR_A1 231和NDR_A2232使得两个处理组都能执行该命令。另一命令也被分为两个NDR:NDR_B1 236和NDR_B2 237。此外,任务命令可以被视为包含一(1)个工作组的NDR。
还示出了与相应命令关联的单个任务,即,任务_A 233、任务_B 234和任务_C 235。每个任务233-235都与相应的QE关联。采用计数器块(CB,具体地说,CB_1 241、CB_2 242、CB_3 243、CB_4 244和CB_5 245)来跟踪命令的执行,其中每个块对应于相关的NDR。在该示例中,CB_1 241跟踪与NDR 231和232关联的命令的执行,CB_5 245跟踪与NDR 236和237关联的命令的执行。
图5中还包括处理核心131-133(图2)以及与处理组250关联的其他核心,从核心_N+1 134到核心_2N 135。处理组250可以是CPU 104(图1和2)或诸如与CPU 104可通信地耦合的服务器122(图2)之类的其他计算设备中的其他处理器。尽管示出了两(2)个处理组,但是处理组的数目不受限制。处理组可以包括处理器核心、线程或甚至跨网络的系统。处理器分组可依赖于诸如性能和/或位置或元素之类的因素。在该示例中,核心_0 131执行NDR_A1 231,核心_N 133执行任务_A 233,以及核心134和135处理NDR_A2 232。下面将结合图6和7更详细地说明与计数器块、NDR、任务和处理核心关联的处理。
图6是示出主机控制过程280的示例的流程图。在该示例中,与过程280关联的逻辑存储在数据存储装置112(图1)上并在CPU 104(图1和2)上与CQS 116(图1)一起执行。处理280从“开始主机流”方块282开始并立即继续到“接收命令”方块284。
在方块284,过程280接收要在命令队列上发布的命令,出于以下示例的目的,所述命令队列为命令队列230。可以从各种源传送命令,所述源包括但不限于该示例中在客户机系统102上执行的OS 114(图1)和任何应用(未示出)及实用程序(未示出)。此外,可以从诸如服务器122之类的远程源传送命令。在“2个空位可用?”方块286,过程280判定命令队列230是否具有至少两(2)个可用空位。为了避免中止命令队列主机(出于此示例的目的,所述命令队列主机为主机202(图4)),每当可用于输入新命令的表项少于两(2)个时,将调整命令队列230的大小。通过预先查看,主机202可以判定命令队列230是否具有足够的空间来容纳新命令而不强制阻止下一次排队。
如果在接收到排队新命令的请求时可用块少于两(2)个,则过程280继续到“创建新队列”方块288,将在此创建新的更大的队列(未示出)。如果命令队列230上至少有两个位置可用,则可以使用其中一个位置排队在方块284接收的命令,留下一个空间以防阻止下一接收的命令。
在“添加大小调整命令”方块290,插入大小调整命令和执行单元访问新队列所需的信息作为当前队列中的最后剩余位置。通过此方式,命令队列过程(参阅过程200,图7)可以收到通知并采取必要的步骤来使用新队列(参阅310,图7)。为了在下面的说明中保持连续性,新队列仍被称为命令队列230。一旦发现在方块290插入了大小调整命令,或者如果在方块286,过程280判定至少有两(2)个队列位置可用,则过程280继续到“将命令添加到队列”方块292。在方块292,在方块284接收的命令被添加为新队列中的第一表项(通过方块290)或被插入当前命令队列230(通过方块286)。在“递增指针”方块294,过程300将指针从主机202递增到下一可用QE。
最后,通过异步中断298停止过程280,所述中断将控制传递到“结束主机控制”方块299,在此方块,过程280完成。通常,在OS 114(图1)或过程280为其一部分的CQS 116自身停止时生成中断298。在名义操作期间,过程280连续遍历方块284、286、288、290、292和294,在收到命令时处理所述命令。
图7是示出可用于实现要求保护的主题的执行命令过程300的示例的流程图。在该示例中,与过程300关联的逻辑存储在数据存储装置112(图1)上并在CPU 104(图1和2)上与CQS 116(图1)一起执行。
过程300从“开始执行命令”方块302开始并立即继续到“等待工作”方块304。在方块304,过程300处于挂起状态,等待CQS 116发出的指示诸如命令队列204(图4)或230(图5)之类的命令队列上具有一个或多个命令的信号。为了进行下面的说明,将使用命令队列230。用于通知诸如核心131-135(图5)之类的执行单元和过程300命令可用的机制可随系统配置和工作负荷而变化。热轮询下一可用命令的状态针对不大量消耗资源轮询的系统提供了较高的效率。例如,SPU单元可以对包含下一要处理的命令的命令队列230的表项执行原子轮询。在轮询消耗宝贵计算周期的CPU上,可以使用条件变量。一旦收到命令位于队列230上的信号,过程300便继续到“取回命令”方块306,在此方块上,从命令队列230中表示下一可用命令的位置检索第一命令。与命令相关的信息(参阅CDMO150,图3)存储在诸如CB 241-245(图5)之类的计数器块中。
在“大小调整命令”方块308,过程300判定在方块306取回的命令是否表示已调整命令队列230的大小(参阅过程280,图6)的指示。如果是,则过程300继续到“处理大小调整”方块310,在此方块,执行处理以使用新的或调整大小后的队列而非旧的队列(参阅图6)。过程300然后返回到方块306,从新的队列取回下一命令并如上文所述继续处理。
如果在方块308期间,过程300判定下一要执行的命令不指示调整大小后的命令队列230,则控制继续到“确定集合大小”方块312,在方块312,过程300确定相应命令的已配置工作组大小(参阅CDMO 150的166,图3)。当然,所述命令可以是任务,所述任务可被视为只有一(1)个工作组并且保留大小为一(1)。在“递减工作组(WG)集合大小”方块314,与在方块306取回的命令的执行关联的每个执行单元递减存储该命令内仍需处理的工作组数目的变量(参阅CDO 150的162,图3)。出于此示例的目的,使用了执行单元131-135(图2和5)。每个执行单元131-135自动执行方块314,以便在另一单元访问和递减变量之前通过一个单元完全更新变量。所递减的值为相应执行单元131-135提供了要由该特定单元执行的特定命令内的NSR范围的基值。通过这种方式,每个执行单元可以在主机介入最少的情况下,控制其执行NDR中的工作组的数目。换言之,在执行单元之间划分命令,以便每个执行单元根据需要请求工作并且完全能够获知何时继续到下一命令。
在“剩余工作组?”方块316,过程300判定是否存在任何待处理的工作组(在当前执行单元已执行操作之后),即作为方块314的操作的结果,变量162的值是否等于或小于0。如果属性等于或小于0并且其绝对值也小于reservationSize 166(图3)的绝对值,则执行单元具有命令的最后要处理的工作组并且可能是不完整集合。在这种情况下,过程300继续到“处理部分工作组”方块320,在此方块,处理在方块314检索的基础范围所标识的剩余工作组。如果属性162等于或小于0并且其绝对值大于或等于reservationSize 166(图3)的绝对值,则执行单元获知已处理所有工作组并继续到方块320,但是不处理工作组。
如果在方块316,属性162被确定为大于0,则过程300继续到“处理工作组项”方块318。在方块318,相应的执行单元131-133负责执行从方块314中确定的NDR的基础范围开始的保留大小的工作组。过程300然后返回到方块314,在此方块,如上文所述继续处理。
在“递增已完成工作组数”方块322,每个执行单元将指示已完成工作组总数的变量(参阅164,图3)自动递增特定执行单元131-135根据在遍历方块314、316、318和320期间在方块306接收的命令而处理的工作组数目。
在“已完成工作组=总数?”方块324,每个执行单元判定完成的工作组数目(参阅164,图3)是否等于命令中的工作组数目(参阅160,图3)。如果等于,则相应的执行单元131-133继续到“发信号通知完成”方块326。在方块326,执行单元131-135发出信号通知CQS 116已处理所有与命令关联的工作组。通过此方式,只有完成命令的执行单元才发出信号通知CQS 116,从而避免重复信号。
除了上述处理,每个操作命令队列230的执行单元131-135还执行“将命令标记为已看到”方块328,在方块328,每个执行单元131-135递增跟踪已看到特定命令的执行单元的数目的变量(参阅170,图3)。要指出的是,执行单元并非一定要实际处理特定命令才能看到该命令,例如,如果分配给特定命令的线程数目(参阅168,图3)超过完成该命令实际所需的单元数目,也能看到该命令。一旦在方块328将命令标记为已看到,每个执行单元133-135就返回到方块304并如上文所述继续处理。
最后,通过异步中断338停止过程300,异步中断338将控制传递到“结束执行命令”方块339,在此方块,过程300完成。通常,在OS 114(图1)或过程300为其一部分的CQS 116自身停止时生成中断338。在名义操作中,过程300连续遍历方块302、304、306、308、310、312、314、316、318、320、322、324、326和328,在收到命令时处理所述命令。
图8是示出实现要求保护的主题的一个方面的命令完成过程350的示例的流程图。在该示例中,与过程350关联的逻辑存储在数据存储装置112(图1)上并在CPU 104(图1和2)上与CQS 116(图1)一起执行。
过程350从“开始命令完成”方块352开始并立即继续到“等待工作”方块354。在方块354,过程350处于暂停状态,等待指示已执行命令的信号(参阅326,图7)。
一旦收到信号,过程350便继续到“过程执行完成?”方块356。在方块356,过程350判定在方块350针对其接收到信号的命令是否表示命令完成。如果否,则过程350继续到“过程大小调整完成?”方块358,在此方块,过程350判定方块354中接收的信号是否表示已完成命令队列230的大小调整的指示。具体而言,判定每个执行单元是否已看到大小调整命令并切换到调整大小后的队列。如上结合图6所述,命令队列230包括命令并可能包括已执行命令队列230的大小调整的指示。如果所有适当执行单元都已看到大小调整命令,则过程350继续到“删除旧队列”方块360,在此方块,删除已被调整大小后的队列替换的队列。
如果过程350在方块356判定收到的信号表示已完成的命令,则控制继续到“发布完成”方块362,在此方块,通知CQS 116相应的执行单元已完成命令。在“将队列表项(QE)标记为完成”方块364,过程350将相应队列表项标记有相应执行单元已完成命令的指示。
一旦在方块326将命令队列230中的相应表项标记为完成,或者已相对于方块358和360完成处理,过程350便返回到方块354等待另一信号并如上文所述继续处理。最后,通过异步中断368停止过程350,异步中断368将控制传递到“结束命令完成”方块369,在此方块,过程350完成。通常,在OS 114(图1)或过程350为其一部分的CQS 116自身停止时生成中断368。在名义操作中,过程350连续遍历方块352、354、356、358、360、362和364,在收到命令时处理所述命令。
此处使用的术语只是为了描述特定的实施例并且并非旨在限制本发明。如此处所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特征、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或增加。
以下的权利要求中的对应结构、材料、操作以及所有装置或步骤加功能元素的等同物,旨在包括任何用于与在权利要求中具体指出的其它元素相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的体系结构、功能和操作。在此方面,流程图或方块图中的每个方块都可表示包括用于实现指定逻辑功能(多个)的一个或多个可执行指令的模块、段或代码部分。还应指出的是,在某些备选实现方式中,方块中注明的功能可以不按照附图中注明的顺序执行。例如,连续示出的两个方块可实际上基本同时执行,或者所述方块有时按照相反的顺序执行,具体取决于所涉及的功能。还应指出的是,方块图和/或流程图中的每个方块以及方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统实现,或者由专用硬件和计算机指令的组合实现。
Claims (15)
1.一种方法,包括:
生成第一命令队列以便排队到计算设备的命令;
将命令发布到所述第一命令队列,其中所述命令包括多个工作组;
将数据结构与所述命令关联,所述数据结构标识了所述多个工作组、与所述命令对应的保留大小、存储工作组的数目的计数器以及存储待处理工作组的数目的计数器;
由多个执行单元中的每个执行单元保留所述多个工作组的不同N维范围,其中所述N维范围对应于所述保留大小;
由所述多个执行单元中的每个执行单元处理对应的N维范围;
将所述存储待处理工作组的数目的计数器递减每个执行单元已处理的工作组的数目;
重复保留、处理和递减步骤,直到所述存储待处理工作组的数目的计数器小于或等于值“0”;以及
当所述存储待处理工作组的数目的计数器小于或等于值“0”时,发出信号以指示所述命令完成。
2.如权利要求1中所述的方法,还包括:
由所述多个执行单元中的一个执行单元检测所述存储待处理工作组的数目的计数器小于或等于值“0”以及检测所述存储待处理工作组的数目的计数器的绝对值小于或等于所述保留大小的绝对值;
其中仅由所述一个执行单元执行发出信号。
3.如权利要求1中所述的方法,其中所述数据结构还包括存储预期看到所述命令的执行单元的数目的计数器以及存储已看到所述命令的执行单元的数目的计数器,所述方法还包括:当所述存储待处理工作组的数目的计数器小于或等于“0”并且所述存储已看到所述命令的执行单元的数目的计数器等于所述存储预期看到所述命令的执行单元的数目的计数器时,从所述第一命令队列释放与所述命令对应的表项。
4.如权利要求1中所述的方法,其中所述多个执行单元中的每个执行单元是任何执行命令的计算设备,其中包括处理核心、处理器、处理线程和完整的计算系统。
5.如权利要求1中所述的方法,还包括:
判定所述命令队列中是否存在两个可用空位来输入入站命令;
如果判定所述命令队列中存在至少两个可用空位来输入所述入站命令,则使所述入站命令进入所述命令队列;以及
如果判定所述第一命令队列中不存在至少两个可用空位来输入所述入站命令,则创建第二命令队列;以及
使用所述第二命令队列替代所述第一命令队列。
6.如权利要求5中所述的方法,所述替代包括:
在所述第一队列中输入队列大小调整指示;
使所述入站命令进入所述第二命令队列;以及
当在执行所述第一队列中的命令的过程中检测到所述队列大小调整指示时,使用所述第二队列替换所述第一队列。
7.如权利要求6中所述的方法,还包括:一旦所述替代完成,则删除所述第一队列。
8.一种装置,包括:
处理器;
与所述处理器相连的物理存储器;
多个执行单元;以及
存储在所述存储器上并在所述处理器上执行的逻辑,所述逻辑用于执行以下操作:
生成第一命令队列以便排队到所述执行单元的命令;
将命令发布到所述第一命令队列,其中所述命令包括多个工作组;
将数据结构与所述命令关联,所述数据结构标识了所述多个工作组、与所述命令对应的保留大小、存储工作组的数目的计数器、存储待处理工作组的数目的计数器,以及存储已处理工作组的数目的计数器;
由所述多个执行单元中的每个执行单元保留所述多个工作组的不同N维范围,其中所述N维范围对应于所述保留大小;
由所述多个执行单元中的每个执行单元处理对应的N维范围;
将所述存储待处理工作组的数目的计数器递减每个执行单元已保留的工作组的数目;
将所述存储已处理工作组的数目的计数器递增每个执行单元已处理的工作组的数目;
重复保留、处理和递减操作,直到所述存储待处理工作组的数目的计数器小于或等于值“0”;以及
当所述存储已处理工作组的数目的计数器等于所述存储工作组的数目的计数器时,发出信号以指示所述命令完成。
9.如权利要求8中所述的装置,所述逻辑还包括用于执行以下操作的逻辑:
由所述多个执行单元中的一个执行单元检测所述存储待处理工作组的数目的计数器小于或等于值“0”以及检测所述存储待处理工作组的数目的计数器的绝对值小于或等于所述保留大小的绝对值;以及
由所述一个执行单元处理任何剩余工作组。
10.如权利要求8中所述的装置,其中所述数据结构还包括存储预期看到所述命令的执行单元的数目的计数器以及存储已看到所述命令的执行单元的数目的计数器,所述逻辑还包括用于执行以下操作的逻辑:当所述存储已处理工作组的数目的计数器等于所述存储工作组的数目的计数器并且所述存储已看到所述命令的执行单元的数目的计数器等于所述存储预期看到所述命令的执行单元的数目的计数器时,从所述第一命令队列释放与所述命令对应的表项。
11.如权利要求8中所述的装置,其中所述多个执行单元中的每个执行单元是任何执行命令的计算设备,其中包括处理核心、处理器、处理线程和完整的计算系统。
12.如权利要求8中所述的装置,所述逻辑还包括用于执行以下操作的逻辑:
判定所述命令队列中是否存在两个可用空位来输入入站命令;
如果判定所述命令队列中存在至少两个可用空位来输入所述入站命令,则使所述入站命令进入所述命令队列;以及
如果判定所述第一命令队列中不存在至少两个可用空位来输入所述入站命令,则创建第二命令队列;以及
使用所述第二命令队列替代所述第一命令队列。
13.如权利要求12中所述的装置,用于替代的逻辑包括用于执行以下操作的逻辑:
在所述第一队列中输入队列大小调整指示;
使所述入站命令进入所述第二命令队列;以及
当在执行所述第一队列中的命令的过程中检测到所述队列大小调整指示时,使用所述第二队列替换所述第一队列。
14.如权利要求13中所述的装置,还包括:一旦所述替代完成,则删除所述第一队列。
15.一种计算机编程产品,包括:物理存储器;存储在所述存储器上以在处理器上执行从而实现权利要求1至7中所述的任一方法的任何步骤的逻辑。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/551,515 | 2009-08-31 | ||
US12/551,515 US8056080B2 (en) | 2009-08-31 | 2009-08-31 | Multi-core/thread work-group computation scheduler |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102004630A true CN102004630A (zh) | 2011-04-06 |
CN102004630B CN102004630B (zh) | 2013-12-11 |
Family
ID=43626760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102686794A Expired - Fee Related CN102004630B (zh) | 2009-08-31 | 2010-08-30 | 多核/线程工作组计算调度器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8056080B2 (zh) |
JP (1) | JP5650952B2 (zh) |
KR (1) | KR20110023832A (zh) |
CN (1) | CN102004630B (zh) |
TW (1) | TW201120754A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103748557A (zh) * | 2011-07-22 | 2014-04-23 | 三星电子株式会社 | 仿真设备及其仿真方法 |
CN104718535A (zh) * | 2012-09-14 | 2015-06-17 | 雅马哈株式会社 | 信号处理系统和计算机程序 |
CN105144103A (zh) * | 2013-03-13 | 2015-12-09 | 微软技术许可有限责任公司 | 持久程序执行 |
CN112204524A (zh) * | 2018-05-24 | 2021-01-08 | 赛灵思公司 | 用于硬件加速的硬件资源的嵌入式调度 |
CN113254367A (zh) * | 2020-02-11 | 2021-08-13 | 合肥杰发科技有限公司 | 一种基于iAP1协议的命令处理方法、电子设备以及存储介质 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103765384A (zh) | 2011-09-02 | 2014-04-30 | 飞思卡尔半导体公司 | 数据处理系统和在数据处理系统中进行任务调度的方法 |
JP5238876B2 (ja) * | 2011-12-27 | 2013-07-17 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
US10007527B2 (en) | 2012-03-05 | 2018-06-26 | Nvidia Corporation | Uniform load processing for parallel thread sub-sets |
US9436504B2 (en) | 2012-05-09 | 2016-09-06 | Nvidia Corporation | Techniques for managing the execution order of multiple nested tasks executing on a parallel processor |
US9626216B2 (en) | 2012-05-09 | 2017-04-18 | Nvidia Corporation | Graphics processing unit sharing between many applications |
US10936591B2 (en) | 2012-05-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | Idempotent command execution |
US9239868B2 (en) | 2012-06-19 | 2016-01-19 | Microsoft Technology Licensing, Llc | Virtual session management and reestablishment |
US9251194B2 (en) | 2012-07-26 | 2016-02-02 | Microsoft Technology Licensing, Llc | Automatic data request recovery after session failure |
US8898109B2 (en) | 2012-07-27 | 2014-11-25 | Microsoft Corporation | Automatic transaction retry after session failure |
US9235464B2 (en) | 2012-10-16 | 2016-01-12 | Microsoft Technology Licensing, Llc | Smart error recovery for database applications |
US9823927B2 (en) | 2012-11-30 | 2017-11-21 | Intel Corporation | Range selection for data parallel programming environments |
CN104008013B (zh) * | 2013-02-26 | 2018-02-09 | 华为技术有限公司 | 一种核资源分配方法、装置及众核系统 |
US8924596B1 (en) | 2013-12-06 | 2014-12-30 | Concurrent Ventures, LLC | System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware |
US9838471B2 (en) * | 2014-02-03 | 2017-12-05 | Cavium, Inc. | Method and an apparatus for work request arbitration in a network processor |
US10310923B1 (en) | 2014-08-28 | 2019-06-04 | Seagate Technology Llc | Probabilistic aging command sorting |
KR102315279B1 (ko) | 2014-11-28 | 2021-10-20 | 삼성전자 주식회사 | 작업 그룹의 크기를 결정하는 장치 및 방법 |
US9678806B2 (en) * | 2015-06-26 | 2017-06-13 | Advanced Micro Devices, Inc. | Method and apparatus for distributing processing core workloads among processing cores |
US10831403B2 (en) | 2017-05-19 | 2020-11-10 | Seagate Technology Llc | Probabalistic command aging and selection |
US10275283B2 (en) * | 2017-07-21 | 2019-04-30 | Red Hat, Inc. | Low latency distributed counters for quotas |
TWI648620B (zh) * | 2017-08-07 | 2019-01-21 | 慧榮科技股份有限公司 | 記憶體裝置以及操作指令錯誤處理方法 |
US10467724B1 (en) | 2018-02-14 | 2019-11-05 | Apple Inc. | Fast determination of workgroup batches from multi-dimensional kernels |
US20200167191A1 (en) * | 2018-11-26 | 2020-05-28 | Advanced Micro Devices, Inc. | Laxity-aware, dynamic priority variation at a processor |
CN110162401A (zh) * | 2019-05-24 | 2019-08-23 | 广州中望龙腾软件股份有限公司 | Dwg文件并行读取方法、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1406172A2 (en) * | 2002-10-01 | 2004-04-07 | Broadcom Corporation | System and method for task arbitration in multi-threaded simulations |
CN1853166A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于多线程的线程管理的方法和装置 |
WO2007038458A1 (en) * | 2005-09-27 | 2007-04-05 | Sony Computer Entertainment Inc. | Cell processor methods and appartus |
CN101206588A (zh) * | 2006-12-15 | 2008-06-25 | 国际商业机器公司 | 用于在多个进程之间分配计算操作的方法和装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03212742A (ja) * | 1990-01-18 | 1991-09-18 | Fujitsu Ltd | 並行処理制御方式 |
US5506999A (en) | 1992-01-22 | 1996-04-09 | The Boeing Company | Event driven blackboard processing system that provides dynamic load balancing and shared data between knowledge source processors |
US6075546A (en) * | 1997-11-10 | 2000-06-13 | Silicon Grahphics, Inc. | Packetized command interface to graphics processor |
SE9901146D0 (sv) * | 1998-11-16 | 1999-03-29 | Ericsson Telefon Ab L M | A processing system and method |
US7376693B2 (en) | 2002-02-08 | 2008-05-20 | Jp Morgan Chase & Company | System architecture for distributed computing and method of using the system |
US7246353B2 (en) | 2002-06-12 | 2007-07-17 | Microsoft Corporation | Method and system for managing the execution of threads and the processing of data |
US20040003019A1 (en) * | 2002-06-28 | 2004-01-01 | Sun Microsystems, Inc., A Delaware Corporation | Process management for real time systems management controller |
US7533382B2 (en) | 2002-10-30 | 2009-05-12 | Stmicroelectronics, Inc. | Hyperprocessor |
JP2004271609A (ja) * | 2003-03-05 | 2004-09-30 | Canon Inc | 表示装置の駆動方法 |
US7385607B2 (en) * | 2004-04-12 | 2008-06-10 | Nvidia Corporation | Scalable shader architecture |
US7542042B1 (en) * | 2004-11-10 | 2009-06-02 | Nvidia Corporation | Subpicture overlay using fragment shader |
US7659898B2 (en) * | 2005-08-08 | 2010-02-09 | Via Technologies, Inc. | Multi-execution resource graphics processor |
US20070030280A1 (en) * | 2005-08-08 | 2007-02-08 | Via Technologies, Inc. | Global spreader and method for a parallel graphics processor |
US7659899B2 (en) * | 2005-08-08 | 2010-02-09 | Via Technologies, Inc. | System and method to manage data processing stages of a logical graphics pipeline |
JP4963018B2 (ja) * | 2005-08-15 | 2012-06-27 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法およびスケジューリング装置 |
JP4959845B2 (ja) * | 2008-02-26 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ワークロード・マネージャにおいてディスパッチャのシェアを計算する方法、コンピュータ・プログラム及びデータ処理システム |
-
2009
- 2009-08-31 US US12/551,515 patent/US8056080B2/en not_active Expired - Fee Related
-
2010
- 2010-08-19 JP JP2010183842A patent/JP5650952B2/ja not_active Expired - Fee Related
- 2010-08-30 KR KR1020100084191A patent/KR20110023832A/ko not_active Application Discontinuation
- 2010-08-30 CN CN2010102686794A patent/CN102004630B/zh not_active Expired - Fee Related
- 2010-08-30 TW TW099129143A patent/TW201120754A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1406172A2 (en) * | 2002-10-01 | 2004-04-07 | Broadcom Corporation | System and method for task arbitration in multi-threaded simulations |
CN1853166A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于多线程的线程管理的方法和装置 |
WO2007038458A1 (en) * | 2005-09-27 | 2007-04-05 | Sony Computer Entertainment Inc. | Cell processor methods and appartus |
CN101206588A (zh) * | 2006-12-15 | 2008-06-25 | 国际商业机器公司 | 用于在多个进程之间分配计算操作的方法和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103748557A (zh) * | 2011-07-22 | 2014-04-23 | 三星电子株式会社 | 仿真设备及其仿真方法 |
CN103748557B (zh) * | 2011-07-22 | 2017-05-31 | 三星电子株式会社 | 仿真设备及其仿真方法 |
US10162913B2 (en) | 2011-07-22 | 2018-12-25 | Samsung Electronics Co., Ltd. | Simulation device and simulation method therefor |
CN104718535A (zh) * | 2012-09-14 | 2015-06-17 | 雅马哈株式会社 | 信号处理系统和计算机程序 |
CN105144103A (zh) * | 2013-03-13 | 2015-12-09 | 微软技术许可有限责任公司 | 持久程序执行 |
CN105144103B (zh) * | 2013-03-13 | 2019-02-26 | 微软技术许可有限责任公司 | 持久程序执行 |
US10303513B2 (en) | 2013-03-13 | 2019-05-28 | Microsoft Technology Licensing, Llc | Durable program execution |
CN112204524A (zh) * | 2018-05-24 | 2021-01-08 | 赛灵思公司 | 用于硬件加速的硬件资源的嵌入式调度 |
CN113254367A (zh) * | 2020-02-11 | 2021-08-13 | 合肥杰发科技有限公司 | 一种基于iAP1协议的命令处理方法、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20110023832A (ko) | 2011-03-08 |
CN102004630B (zh) | 2013-12-11 |
JP2011054161A (ja) | 2011-03-17 |
US8056080B2 (en) | 2011-11-08 |
JP5650952B2 (ja) | 2015-01-07 |
US20110055839A1 (en) | 2011-03-03 |
TW201120754A (en) | 2011-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102004630B (zh) | 多核/线程工作组计算调度器 | |
CN105579959B (zh) | 硬件加速器虚拟化 | |
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
US8689231B2 (en) | System and method for ordering tasks with complex interrelationships | |
CN107526645B (zh) | 一种通信优化方法及系统 | |
US20150150018A1 (en) | Optimization of map-reduce shuffle performance through shuffler i/o pipeline actions and planning | |
US9384053B2 (en) | Task allocation optimization system, task allocation optimization method, and non-transitory computer readable medium storing task allocation optimization program | |
CN103069390A (zh) | 在混合计算环境中重新调度工作量 | |
CN103312763B (zh) | 客户端系统、管理服务器、工作区环境设置方法和工作区环境设置程序 | |
CN106598705A (zh) | 一种异步任务的调度方法、装置、系统以及电子设备 | |
CN103069389A (zh) | 混合计算环境中的高吞吐量计算 | |
US20100107174A1 (en) | Scheduler, processor system, and program generation method | |
CN108228354A (zh) | 调度方法、系统、计算机设备和介质 | |
CN109408489A (zh) | 数据稽核方法及系统 | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
CN110147281A (zh) | 优化雪花算法在金融业务中应用的方法、装置、电子设备 | |
US9038081B2 (en) | Computing job management based on priority and quota | |
CN109492024A (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN107943584A (zh) | 批量交易请求的处理方法及装置 | |
US8370842B2 (en) | Portioning and routing of work in a multiple processor system | |
CN109634853A (zh) | 数据测试方法、系统、电子装置及计算机可读存储介质 | |
US8661293B2 (en) | Test architecture based on intelligent test sequence | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
CN102339223B (zh) | 数字数据处理系统 | |
Yin et al. | A data-aware workflow scheduling algorithm for heterogeneous distributed systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131211 Termination date: 20200830 |