CN108431775A - 用于高效并行计算的简化的基于任务的运行时的方法 - Google Patents
用于高效并行计算的简化的基于任务的运行时的方法 Download PDFInfo
- Publication number
- CN108431775A CN108431775A CN201680044001.3A CN201680044001A CN108431775A CN 108431775 A CN108431775 A CN 108431775A CN 201680044001 A CN201680044001 A CN 201680044001A CN 108431775 A CN108431775 A CN 108431775A
- Authority
- CN
- China
- Prior art keywords
- kernel
- simple task
- task
- processor
- pointer
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
一些方面包括用于将对轻量级内核的调度和执行实现为由线程直接地执行的简单任务,而无需建立任务结构的计算设备、系统和方法。计算设备可以确定任务队列中的任务指针是否是针对轻量级内核的简单任务指针。计算设备可以调度针对轻量级内核的第一简单任务用于由线程来执行。计算设备可以从简单任务表的条目中取回针对轻量级内核的内核指针。简单任务表中的条目可以与简单任务指针相关联。计算设备可以将轻量级内核作为简单任务来直接地执行。
Description
相关申请
本申请基于35 U.S.C.§119(e),要求享受2015年7月30日提交的、标题为“MethodFor Simplified Task-based Runtime For Efficient Parallel Computing”的美国临时申请第62/198,830号的优先权的利益,故以引用方式将其全部内容并入本文。
背景技术
任务并行化是一种跨越多个处理器来并行化计算代码的并行化形式。充当并行计算环境中的基本可调度单元的计算任务,体现具有或者不具有某些输入和输出的计算过程(下文称为“内核”)。基于任务的并行编程运行时允许程序员以任务的形式来表达算法,以及使用调度器跨越多个处理器来分配任务,以及并实现维护功能,例如,同步和负载平衡。随着基于任务的运行时系统的成熟和提供更多的功能,任务抽象变得越来越复杂,其对于任务创建、管理和销毁强加巨大的开销。例如,基于任务的运行时系统在确定任务是否属于异构设备执行路径、任务引用和取消引用以跟踪任务的生命周期,以及从调度器请求独占所有权方面,在设置任务时会产生开销。
由于创建、分派和管理任务的开销与实际计算相当,因此传统的基于任务的运行时系统向轻量级内核增加了大量的开销。由于与任务管理相关联的不可避免的开销,因此性能和能源效率二者都受损。完备的基于任务的运行时系统适用于具有复杂依赖性和同步要求的重量级内核,因为这些限制导致较低频率地发生并行化。
发明内容
各个实施例的方法和装置提供了用于调度和执行计算设备中的轻量级内核的电路和方法。各个实施例可以包括:确定任务队列中的第一任务指针是否是针对轻量级内核的简单任务指针;响应于确定第一任务指针是简单任务指针,调度针对轻量级内核的第一简单任务用于由第一线程来执行;从简单任务表的条目中取回针对所述轻量级内核的内核指针,其中所述条目与所述简单任务指针相关联;以及直接地执行所述轻量级内核作为所述第一简单任务。
一些实施例还可以包括:完成对第一简单任务的执行;以及更新简单任务表中的条目的内核迭代计数器的数据。
一些实施例还可以包括:确定所述轻量级内核的内核迭代是否可分割;以及响应于确定所述轻量级内核的内核迭代是可分割的,将所述轻量级内核的所述内核迭代划分成迭代部分。在这样的实施例中,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行可以包括:利用轻量级内核分配第一简单任务具有至少一个迭代部分;完成对第一简单任务的执行可以包括:完成与分配给第一简单任务的所述至少一个迭代部分的迭代次数相等的第一简单任务的执行次数;以及更新所述简单任务表中的条目的内核迭代计数器的数据可以包括:更新所述内核迭代计数器的数据,以反映分配给第一简单任务的所述至少一个迭代部分的迭代次数的完成。
一些实施例还可以包括:根据所述内核迭代计数器的数据,确定第一简单任务的所有迭代是否完成;以及响应于确定第一简单任务的所有迭代完成,清除所述简单任务表中的条目。
一些实施例还可以包括:识别对于执行所述轻量级内核的限制。在这样的实施例中,所述限制可以包括以下各项中的一项:用于执行所述轻量级内核的指定线程、对于执行所述轻量级内核的延时要求、以及执行所述第一线程的处理器与存储所述轻量级内核的存储器的接近度,其中所述指定线程包括主线程、关键线程和非关键线程。在这样的实施例中,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行可以包括:基于对于执行所述轻量级内核的限制,来选择所述第一线程。
一些实施例还可以包括:确定所述任务队列中的第二任务指针是否是针对所述轻量级内核的简单任务指针;响应于确定所述第二任务指针是简单任务指针,调度针对所述轻量级内核的第二简单任务用于由第二线程来执行;从所述简单任务表的所述条目中取回针对所述轻量级内核的所述内核指针,其中所述条目与所述简单任务指针相关联;以及直接地执行所述轻量级内核作为所述第二简单任务。
一些实施例还可以包括:将第一简单任务的第一输出与第二简单任务的第二输出进行组合。
一些实施例还可以包括:确定请求的过程是否包括所述轻量级内核;响应于确定请求的过程包括所述轻量级内核,确定所述简单任务表是否已满;响应于确定所述简单任务表未满,在所述简单任务表中创建针对所述轻量级内核的条目;将与所述条目相关联的所述简单任务指针添加到所述任务队列;以及响应于确定所述简单任务表已满,将与所述轻量级内核相关联的普通任务指针添加到所述任务队列。
各个实施例可以包括一种包括处理器的计算设备,其中该处理器被配置有处理器可执行指令,以执行上文所描述的实施例方法中的一个或多个的操作。
各个实施例可以包括具有用于执行上文所描述的实施例方法中的一个或多个方法的功能的单元的计算设备。
各个实施例可以包括其上存储有处理器可执行指令的非暂时性处理器可读存储介质,其中所述处理器可执行指令被配置为使计算设备的处理器执行上文所描述的实施例方法中的一个或多个方法的操作。
附图说明
被并入本文以及构成本说明书一部分的附图,示出了本发明的示例性方面,以及连同上文给出的概括描述以及下文给出的具体实施方式一起来解释本发明的特征。
图1是示出适合于实现各个实施例的计算设备的组件块图。
图2是示出适合于实现各个实施例的示例性多核处理器的组件块图。
图3是示出适合于实现各个实施例的示例性片上系统(SoC)的组件块图。
图4是根据各个实施例的示例性任务队列的示图。
图5是根据各个实施例的示例性简单任务表的示图。
图6是根据各个实施例示出运行时简单任务调度和执行的过程流程图。
图7是示出用于对简单任务进行排队的实施例方法的过程流程图。
图8是示出用于调度简单任务的实施例方法的过程流程图。
图9是示出用于执行简单任务的实施例方法的过程流程图。
图10是示出适合于与各个实施例一起使用的示例性移动计算设备的组件块图。
图11是示出适合于与各个实施例一起使用的示例性移动计算设备的组件块图。
图12是示出适合于与各个实施例一起使用的示例性服务器的组件块图。
具体实施方式
现在参照附图来详细地描述各个方面。只要有可能,将贯穿附图使用相同的附图标记来指代相同或者类似的组件。对于特定示例和实现方式的引用是出于说明性的目的,而不旨在限制本发明或者权利要求的保护范围。
本文可互换地使用术语“计算设备”和“移动计算设备”来指代以下各项中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、智能本、超级本、掌上型计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、无线游戏控制器、以及包括存储器和多核可编程处理器的类似的个人电子设备。虽然各个方面对于诸如智能电话之类的移动计算设备(其中移动计算设备具有有限的存储器和电池资源)特别有用,但这些方面通常也可用于实现多个存储器设备和有限的功率预算的任何电子设备,其中在该情况下,减少处理器的功耗可以延长移动计算设备的电池工作时间。
本文使用术语“片上系统”(SoC)来指代一组互连的电子电路,其通常(但不排他地)包括硬件内核、存储器和通信接口。硬件内核可以包括各种各样的不同类型的处理器,例如通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。此外,硬件内核还可以体现其它硬件和硬件组合,例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、其它可编程逻辑器件、分离门逻辑、晶体管逻辑、性能监测硬件、看门狗硬件和时间基准。可以对集成电路进行配置使得集成电路的组件位于单片的半导体材料(例如,硅)上。
被配置为在现代计算设备上执行的许多应用需要高度可并行化的、轻量级的计算过程(在下文中称为“内核”),其依赖性和同步要求都易于满足。例如,一些应用包括执行背靠背循环,其中每个迭代执行非常少的计算工作。在传统的基于任务的运行时系统中创建、分派和管理任务的开销,向并行化的这样的轻量级内核增加了大量的开销,这是因为开销与实际计算相当,以及并行化可能以很高的速率发生。
各个实施例包括简单任务管理方法,其绕开运行时中的普通任务管理阶段,以及减少与普通任务管理相关联的开销。可以通过运行时管理的简单任务表来实现简化的任务管理。该简单任务表的每个条目都可以存储指向轻量级内核的指针。简单的任务可以通过指向简单任务表中的条目的简单任务指针来表示。这种机制可以简化运行时调度器的工作,而不会影响现有的调度逻辑。调度器可以从任务队列中取回任务指针,就像针对任何普通任务一样。任务指针可以是投射到普通任务的普通任务指针,以及调度器可以使用普通过程来调度普通任务。任务指针可以是简单任务指针,其投射到针对轻量级内核的内核指针的简单任务表中的条目。对于简单任务指针而言,调度器可以将轻量级内核分配给线程,用于由处理器或处理器内核作为简单任务来直接地执行。简单任务可以允许调度器调度任务用于由线程来执行,就好像简单任务是普通任务一样,但为了执行简单任务,线程可以直接执行轻量级内核,而无需实例化任务结构、管理对任务的执行以及分派任务结构。
图1示出了适合于与各个实施例一起使用的系统,其包括与远程计算设备50相通信的计算设备10。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储内存接口20的SoC 12。该计算设备还可以包括诸如有线或无线调制解调器之类的通信组件22、存储内存24、用于建立到无线网络30的无线连接32的天线26、和/或用于将有线连接44连接到互联网40的网络接口28。处理器14可以包括各种各样的硬件内核中的任何一者以及多个处理器内核。SoC 12可以包括一个或多个处理器14。计算设备10可以包括一个以上的SoC 12,从而增加处理器14和处理器内核的数量。计算设备10还可以包括与SoC 12不相关联的一个或多个处理器14。各个处理器14可以是如下文参照图2所描述的多核处理器。处理器14均可以被配置用于特定目的,其可以与计算设备10的其它处理器14相同或者不同。可以将相同或不同配置的处理器14和处理器内核中的一者或多者组合在一起。一组处理器14或处理器内核可以称为多处理器簇。
SoC 12的存储器16可以是被配置用于存储由处理器14进行存取的数据和处理器可执行代码的易失性或者非易失性存储器。计算设备10和/或SoC 12可以包括被配置用于各种目的的一个或多个存储器16。在各个实施例中,一个或多个存储器16可以包括诸如随机存取存储器(RAM)或主存储器或者高速缓存的易失性存储器。这些存储器16可以被配置为临时地保持有限数量的数据和/或处理器可执行代码指令,其是从非易失性存储器请求的、基于各种因素预期未来存取而从非易失性存储器加载到存储器16的、和/或处理器14产生的中间处理数据和/或处理器可执行代码指令、以及临时地存储用于未来快速存取而无需存储在非易失性存储器中的数据和/或处理器可执行代码指令。
存储器16可以被配置为至少临时地存储从另一个存储器设备(例如,另一个存储器16或存储内存24)加载到存储器16的处理器可执行代码,用于由处理器14中的一个或多个处理器进行存取。可以响应于处理器14对于某个功能的执行,来对用于加载到存储器16的处理器可执行代码进行加载。响应于对功能的执行来将处理器可执行代码加载到存储器16,可能起因于不成功的对存储器16的内存存取请求,或者错过了对存储器16的内存存取请求,这是由于所请求的处理器可执行代码未位于存储器16中。响应于错过了,可以进行对另一个存储器设备的内存存取请求,以将所请求的处理器可执行代码从另一个存储器设备加载到存储器设备16。响应于对功能的执行,将处理器可执行代码加载到存储器16,可以起因于对另一个存储器设备的内存存取请求,以及可以将处理器可执行代码加载到存储器16中用于稍后的存取。
通信接口18、通信组件22、天线26和/或网络接口28可以一致地工作,以使计算设备10能够经由无线连接32通过无线网络30进行通信,和/或通过有线网络44与远程计算设备50进行通信。无线网络30可以使用各种各样的无线通信技术来实现,例如包括用于无线通信的射频频谱,以向计算设备10提供到互联网40的连接,其可以通过互联网40来与远程计算设备50交换数据。
存储内存接口20和存储内存24可以一致地工作,以允许计算设备10将数据和处理器可执行代码存储在非易失性存储介质上。可以非常类似于存储器16的各个实施例,对存储内存24进行配置,其中存储内存24可以存储用于由处理器14中的一个或多个处理器进行存取的数据和/或处理器可执行代码。即使在计算设备10的电源被关闭之后,存储内存24(其是非易失性的)也可以保持该信息。当电源被再次打开以及计算设备10重新启动时,存储内存24上存储的信息可用于计算设备10。存储内存接口20可以控制对存储内存24的存取,以及允许处理器14从存储内存24读取数据以及向存储内存24写入数据。
可以对计算设备10的组件中的一些组件或全部组件进行不同地排列和/或组合,同时仍然为必要的功能服务。此外,计算设备10并不限于这些组件中的每一个组件中的一者,以及在计算设备10的各个配置中可以包括每个组件的多个实例。
图2示出了适合于实现各个实施例的多核处理器14。参见图1,多核处理器14可以具有多个同构或者异构的处理器内核200、201、202、203。处理器内核200、201、202、203可以是同构的,其在于:单个处理器14的处理器内核200、201、202、203可以被配置用于相同目的,以及具有相同或类似的性能特性。例如,处理器14可以是通用处理器,以及处理器内核200、201、202、203可以是同构的通用处理器内核。替代地,处理器14可以是图形处理单元或者数字信号处理器,以及处理器内核200、201、202、203可以分别是同构的图形处理器内核或者数字信号处理器内核。为了便于引用起见,本文可以互换地使用术语“处理器”和“处理器内核”。
处理器内核200、201、202、203可以是异构的,其在于:单个处理器14的处理器内核200、201、202、203可以被配置用于不同的目的,和/或具有不同的性能特性。这样的异构处理器内核的例子可以包括称为“big.LITTLE”架构的架构,在该架构中,可以将慢速、低功率处理器内核与更强大和高能耗的处理器内核相耦合。这样的异构处理器内核的异质性可以包括不同的指令集架构、流水线(pipeline)、工作频率等等。
在图2所示出的例子中,多核处理器14包括四个处理器内核200、201、202、203(即,处理器内核0、处理器内核1、处理器内核2和处理器内核3)。为了便于解释起见,本文的例子可以指代图2中所示出的四个处理器内核200、201、202、203。但是,提供图2中所示出和本文所描述的四个处理器内核200、201、202、203只是作为例子,以及不意味着将各个方面限制于四核处理器系统。与本文所示出和描述的四个处理器内核200、201、202、203相比,计算设备10、SoC 12或多核处理器14可以各自地或者组合地包括较少或者较多的内核。
此外,多核处理器14还可以包括处理器高速缓冲存储器控制器204和处理器高速缓冲存储器206。处理器高速缓冲存储器206可以类似地被配置为存储器16(参考图1)。处理器高速缓冲存储器控制器204和处理器高速缓冲存储器206可以一致地工作,以允许处理器内核200、201、202、203存取在易失性存储介质上的有限数量的数据和/或处理器可执行代码,以及临时地将有限数量的数据和/或处理器可执行代码保持在易失性存储介质上。处理器高速缓冲存储器控制器204可以控制对处理器高速缓冲存储器206的存取,以及允许处理器内核200、201、202、203从处理器高速缓冲存储器206读取信息和向处理器高速缓冲存储器206写入信息。处理器内核200、201、202、203可以共享处理器高速缓冲存储器206,和/或各个处理器内核200、201、202、203可以与专用处理器高速缓冲存储器206相关联。为了便于说明起见,使用了单配对的处理器高速缓冲存储器控制器204和处理器高速缓冲存储器206,以及并不是旨在限制可以在多核处理器14上包括的处理器高速缓冲存储器控制器204和处理器高速缓冲存储器206的数量。
图3示出了适合于实现各个实施例的示例性SoC 12。参见图1、2和图3,SoC 12可以包括处理器14、SoC高速缓冲存储器控制器300、SoC高速缓冲存储器302、主存储器控制器304、主存储器306和其它组件(例如,上文所描述的SoC 12的组件)。SoC 12还可以包括或者通信地连接到存储内存控制器308和存储内存24。SoC 12的组件和连接到SoC 12的组件可以经由通信总线310来彼此之间连接。SoC高速缓冲存储器302、主存储器306和存储内存24中的每一者可以被配置为保存存储内容(例如,数据和/或处理器可执行代码)。可以将存储内容存储在SoC高速缓冲存储器302、主存储器306和存储内存24的物理地址所标识的特定位置中。
在一个方面,可以使用虚拟地址来进行对存储器24、302、306的存储器存取请求,其中可以将虚拟地址转换成相应存储器24、302、306的物理地址,以便取回存储器存取请求的所请求的存储内容。数据和/或处理器可执行代码中的任何一者的存储位置可以随时间改变。可以在映射数据和/或处理器可执行代码的位置的数据结构中,更新与数据和/或处理器可执行代码相关联的物理地址,用于由处理器14进行存取。
SoC高速缓冲存储器302可以被配置为临时地存储数据和/或处理器可执行代码,用于与存取主存储器306或存储内存24可实现的相比进行更快速地存取。SoC高速缓冲存储器302可以专用于由单个处理器14(例如,CPU 14a、GPU 14b或APU 14c)使用,或者在多个处理器14(例如,CPU 14a、GPU 14b和APU 14c)和/或SoC 12的子系统(没有示出)之间共享。SoC高速缓冲存储器302可以类似地被配置为存储器16(参见图1)和处理器高速缓冲存储器206(参见图2)。SoC高速缓冲存储器控制器300可以管理由各个处理器14a-14c和SoC 12的子系统(没有示出)对SoC高速缓冲存储器302的存取。SoC高速缓冲存储器控制器300还可以管理从SoC高速缓冲存储器控制器300向主存储器306和存储内存24的存取的存储器存取请求,用于取回由处理器14a-14c可以从SoC高速缓冲存储器302请求的存储内容,但是在SoC高速缓冲存储器302中未找到会导致高速缓存错过。
主存储器306可以被配置为临时地存储数据和/或处理器可执行代码,用于与当存取存储内存24时相比进行更快速的存取。主存储器306可用于由一个或多个SoC 12的处理器14a-14c和/或SoC 12的子系统(没有示出)进行存取。主存储器控制器304可以管理由各个处理器14a-14c以及SoC 12的子系统(没有示出)和计算设备对主存储器306的存取。主存储器控制器304还可以管理由主存储器控制器304对存储内存24的存取的存储器存取请求,用于取回由处理器14a-14c或者SoC高速缓冲存储器控制器300可以从主存储器306请求的存储内容,但是在主存储器306中未找到会导致主存储器错过。
存储内存24可以被配置为提供对数据和/或处理器可执行代码的持久存储,用于当计算设备没有加电时保持。与SoC高速缓冲存储器302和主存储器306相比,存储内存24可以具有存储更多的数据和/或处理器可执行代码的容量,以及用于存储包括那些在最近的未来不会被处理器14a-14c或SoC 12的子系统(没有示出)使用或者预测使用的数据和/或处理器可执行代码。存储内存24可用于由一个或多个SoC 12的处理器14a-14c和/或SoC 12的子系统(没有示出)进行存取。存储内存控制器308可以管理由各个处理器14a-14c以及SoC 12的子系统(没有示出)和计算设备对存储内存24的存取。存储内存控制器308还可以管理从SoC高速缓冲存储器控制器300和主存储器控制器304对存储内存24的存取的存储器存取请求,用于取回处理器14a-14c可以从SoC高速缓冲存储器302或者主存储器306请求的存储内容,但是在SoC高速缓冲存储器302中未找到会导致高速缓冲存储器错过或者主存储器错过。
可以对SoC 12的组件中的一些组件或全部组件进行不同地排列和/或组合,同时仍然为必需的功能服务。此外,SoC 12可以不限于组件中的每个组件中的每个组件之一,以及在SoC 12的各种配置中可以包括每个组件的多个实例。SoC 12的各种实施例配置可以包括诸如CPU 14a、GPU 14b、APU 14c、主存储器控制器304和主存储器306之类的组件,它们与SoC 12分离但经由通信总线310连接到SoC 12。各种实施例配置可以包括任何单个处理器14或者处理器14的组合,包括处理器14的同质或者异构组合。类似地,计算设备10(图1)可以包括任何SoC 12或者SoC 12的组合,包括SoC 12的同质或者异构组合。
图4示出了根据各个实施例的任务队列400的例子。参见图1-4,任务队列400可以包括任务指针的集合和组织,用于向调度器指示被调度用于由处理器执行的各个过程的任务。可以在各种形式的存储器16、24、206、306或者由处理器14运行的调度器可存取的专用硬件(例如,寄存器)中,实现任务队列400。在各个实施例中,可以在找到处理器和SoC的群组的计算设备10上实现一个或多个调度器和任务队列400。任务队列400可以包括被配置为存储各种任务指针(其包括普通任务指针和简单任务指针)的槽402、404、406、408、410。可以对简单任务指针进行配置,使得它们投射到针对轻量级内核的数据条目,如参照图5所进一步描述的。可以对普通任务指针进行配置,使得它们投射到存储器16、24、206、306中的针对不同于轻量级内核的任何内核的位置。在各个实施例中,简单任务指针和普通任务指针可以投射到与其它类型的任务指针的值不重叠的值。因此,调度器可以通过任务指针的投射值,来识别任务指针是简单任务指针还是普通任务指针,如参照图5所进一步描述的。
在图4所示出的例子中,任务队列槽404包含普通任务指针(普通任务指针1),以及任务队列槽402、406、408和410包含简单任务指针(槽402包含简单任务指针1,槽406和408包含简单任务指针3,以及槽410包含简单任务指针2)。与所示出的例子中的五个槽402-410相比,任务队列400可以包括更多或者更少的任意数量的槽。
在各个实施例中,可以以先进先出(FIFO)方式来管理任务队列400。因此,调度器可以读取具有最早任务指针的最上部槽(在该例子中,槽402),可以去除最上部槽,或者可以对旧的任务指针进行删除或重写,使得剩余的任务指针在任务队列400中向上移位到它们相应的下一个槽。可以实现其它任务队列管理策略,例如,直到其相关联的任务被调度为止都不删除或者替换任务指针的策略,以及如果任务不能被调度,则对任务队列400进行打乱,使得不能被执行的任务指针移动到任务队列400中的另一个槽402-410,或者调度器临时地跳到任务队列400中的另一个槽402-410。任务队列管理策略还可以是基于优先级的,其中可以通过包括任务的危急程度(其可以是基于任务冲突和依赖性)的各种因素来确定优先级。可以向任务队列中的每个任务分配优先级(其影响下一个要读取的槽),或者优先级可能影响在任务队列中对任务进行排序的顺序。
图5根据各个实施例,示出了简单任务表500的例子。简单任务表500可以包括存储在各种形式的存储器16、24、206、306中的数据集合和组织。图5中所示出并在本文所描述的简单任务表500的表格格式是用于存储和组织数据的格式的例子,以及关于用于使用其它数据结构来存储和组织数据的其它实施例而言,其并不是限制性的。
在图5所示出的例子中,简单任务表500可以针对用于轻量级内核的任务或简单任务的每一个条目或行508、510、512、516,组织和维护例如列502、504、506中的内核标识符(ID)、内核指针和内核迭代计数器之间的关系。内核标识符列502可以包括:被配置为向调度器指示针对简单任务表500中的简单任务的条目508-516。调度器可以使用条目508-516的内核标识符,来帮助识别轻量级内核是否将被调度用于执行、哪个轻量级内核要被调度为执行、以及通过引导调度器到相关联的条目508-516来识别轻量级内核是否已完成执行。简单任务指针可以投射到其最大值可以是内核表中的条目的数量的整数值,以及普通任务指针可以投射到十六进制指针值(其将与简单任务的整数值不重叠)。基于投射到不同指针的不同值,调度器可以识别任务指针是简单任务指针还是普通任务指针。在图5所示出的例子中,投射到简单任务指针的值可以是简单任务表500中的内核标识符(例如,其可以是整数值),以及普通任务指针可以投射到物理或虚拟存储器地址(例如,其可以是十六进制值)。基于投射到任务指针的值,调度器可以确定任务指针是用于简单任务的简单任务指针,还是用于普通任务的普通任务指针。
一旦调度器识别出与内核标识符相关联的条目508-516,调度器就可以针对条目508-516,从内核指针列504中读取内核指针,以及从内核迭代计数器列506中读取内核迭代计数器。可以将内核指针向调度器提供用于取回要实现为简单任务的轻量级内核的物理或虚拟存储器地址。内核迭代计数器可以向调度器提供要针对简单任务来执行的内核执行迭代的总数。
在图5的例子中,内核迭代计数器列506包括示出为整数值的内核迭代计数器值,其表示要针对简单任务来执行的内核执行迭代的总数。在各个实施例中,内核迭代计数器列506内核迭代计数器值可以包括各种符号表示的字符串,其中该字符串中的不同位置表示该轻量级内核的不同特性。例如,字符串中的不同位置可以表示要针对简单任务来执行的内核执行迭代的总数、要针对简单任务来执行的内核执行迭代的总数的除数(例如,常数值或者取决于线程可用性的值)、针对简单任务执行的内核执行迭代的总数,以及对于执行轻量级内核的限制。在各个实施例中,对于执行轻量级内核的限制可以包括:指定用于执行轻量级内核的线程(包括主线程、关键线程、非关键线程)、对于执行轻量级内核的延时要求、执行线程的处理器与存储轻量级内核的存储器的接近度。针对轻量级内核在执行的简单任务可以在对轻量级内核执行之前和之后,读取和更新内核迭代计数器值。
在各个实施例中,简单任务表500可以是全局可存取的集中式简单任务表500,也可以是全局或本地可存取的分布式简单任务表500。分布式简单任务表500可以位于轻量级内核的执行设备附近,例如,在被指定为执行轻量级内核的处理器14的存储器16、24、206、306上。例如,GPU 14b可以在其自己的存储器16、24、206、306中使用单独的简单任务表500来处理专门的计算任务。
在各个实施例中,简单任务表500可以提供用于简单任务的简单同步功能。例如,为了执行背靠背循环(back-to-back loop),多个简单任务可以执行相同的轻量级内核。可以向多个简单任务分配多个迭代来完成,以及一旦所有的简单任务完成它们分配的迭代,就可以完成对循环的执行。通过响应于简单任务完成对其分配的迭代的执行,更新内核迭代计数器中的数据,可以经由简单任务表500中的簿记,来实现针对循环的分叉(fork-join)同步模式。
图5中所示出的例子包括简单任务表500中的N个条目508-516。在各个实施例中,可以将N的值加盖于不同的数字。当简单任务表500中有N个条目508-516时,简单任务表500可以是满的,以及不能向简单任务表添加另外的条目,直到基于完成与现有条目508-516相关联的轻量级内核的总迭代次数的执行,而使现有条目508-516无效或者移除为止。结果,因为没有空间可用,轻量级内核可能不会被输入到简单任务表500中,以及这些未被输入的轻量级内核可以作为普通任务来执行。
图6是根据各个实施例的运行时简单任务调度和执行的处理流程的示图。调度器600和线程602可以由任何处理器或者计算设备中的处理器14的组合来执行。在一些实施例中,可以在专用硬件中实现调度器600。为了便于引用起见,执行调度器模块的处理器以及专用调度器硬件通常称为调度器600。此外,可以将任务队列400、简单任务表500和轻量级内核604存储在计算设备的存储器16、24、206、306的任意组合上。在各个实施例中,任务队列400、简单任务表500和轻量级内核604可以存储在与执行调度器600和线程602的处理器14的组合相紧邻的存储器16、24、206、306的任意组合上,以便减少用于执行轻量级内核604的延时和资源要求。在各个实施例中,可以将多个调度器600、线程602、任务队列400、简单任务表500和轻量级内核604实现在计算设备上。
在图6所示出的示例性实施例中,调度器600可以存取任务队列400,以读取任务队列606的槽和取回简单任务指针608。沿着简单任务指针的指引,调度器600可以存取简单任务表500以读取由简单任务指针指定的条目,以及取回条目612的数据,其可以包括内核指针和内核迭代计数器值。调度器600可以识别可用的线程602用于执行简单任务,以及将用于执行简单任务614的指令传送给线程602,其可以包括用于将轻量级内核614作为简单任务(而不是普通任务)来执行的指令、内核指针、以及要针对简单任务来执行的内核执行迭代的次数。当选择用于执行轻量级内核的线程时,调度器600可以考虑对于轻量级内核的执行设置的限制,其可以在内核交互计数器数据中指示。线程602可以使用来自于所接收的指令的信息来存取存储器,以读取由内核指针指定的存储器位置616,以及从存储器位置618取回轻量级内核604。线程602可以直接将轻量级内核作为简单任务620来执行。线程602可以存取简单任务表500以更新针对执行的简单任务622的条目,其可以包括更新内核迭代计数器值的数据或者使条目无效或删除条目。
图7示出了用于对简单任务进行排队的实施例方法700。可以使用在通用硬件(例如,处理器或处理器内核)中、在专用硬件中执行的软件、或者在处理器和专用硬件中执行的软件的组合,在计算设备中执行方法700。
在方块702中,计算设备可以接收对执行过程的请求。该请求可以包括来自于操作系统或者在计算设备上执行的程序的调用,或者是根据在计算设备上触发的硬件信号来解释的。
在确定块704中,计算设备可以确定过程的计算过程是否是可以执行为简单任务的轻量级内核。在各个实施例中,可以将是轻量级内核的过程的元素预编程为可识别作为轻量级内核,以及可以向计算设备通知被请求用于执行的过程的轻量级内核。在各个实施例中,可以对计算设备进行预编程,以将计算过程的类型识别为轻量级内核,以及计算设备可以检查被请求用于执行的过程的元素,以确定这些元素中的任何一个元素是否是指示轻量级内核的类型。
响应于确定被请求用于执行的过程不包含可以执行为简单任务的轻量级内核(即,确定块704=“否”),在方块718中,计算设备可以向任务队列增加普通任务指针供内核来执行。
响应于确定被请求用于执行的过程包含可以执行为简单任务的轻量级内核(即,确定块704=“是”),在确定块706中,计算设备可以确定在简单任务表中是否存在针对轻量级内核的条目。在简单任务表中检查针对轻量级内核的条目可以包括:将投射到简单任务表中的内核指针的存储器位置与轻量级内核的存储器位置进行比较。
响应于确定在简单任务表中存在针对轻量级内核的条目(即,确定块706=“是”),在确定块708中,计算设备可以确定现有的条目是否适合于请求的对轻量级内核的执行。在各个实施例中,基于对通过内核迭代计数器中表示的相关联的数据所指示的轻量级内核的执行的各种特性,对轻量级内核的一些执行可以与对轻量级内核的其它执行不同。计算设备可以使用这些特性来执行在与针对轻量级内核的匹配内核指针相关联的内核迭代计数器表示的轻量级内核,以确定针对轻量级内核的条目是否适合于投射到针对所请求的对轻量级内核的执行的简单任务指针。
响应于确定现有的条目适合于请求的对轻量级内核的执行(即,确定块708=“是”),在方块710中,计算设备可以更新简单任务表中的针对轻量级内核的现有条目。更新现有条目可以包括:更新用于执行通过在内核迭代计数器中表示的相关联数据所指示的轻量级内核的特性数据,例如如果轻量级内核的执行的迭代的话的次数。
响应于确定在简单任务表中不存在用于针对轻量级内核的条目(即,确定块706=“否”),或者响应于确定条目不适合于对轻量级内核的执行(即,确定块708=“否”),在确定块714中,计算设备可以确定简单任务表是否已满。简单任务表可以具有能够保存N个条目的有限大小。计算设备可以将现有条目的数量与简单任务表的容量进行比较,以确定是否可以向简单任务表添加另外的条目。
响应于确定简单任务表已满(即,确定块714=“是”),在方块718中,计算设备可以向针对轻量级内核的任务队列增加普通任务指针。
响应于确定简单任务表未满(即,确定块714=“否”),在方块716中,计算设备可以在简单任务表中,为轻量级内核创建条目。计算设备可以创建具有唯一内核标识符的新条目,其指示用于执行的轻量级内核为简单任务、以及条目在简单任务表中的位置、指向针对轻量级内核的物理或虚拟存储器位置的内核指针、以及指定用于执行轻量级内核的特性的内核迭代计数器数据。
在方块712中,计算设备可以向针对轻量级内核的简单任务表中针对现有条目的任务队列增加在方块710中更新或者在方块716中创建的简单任务指针。简单任务指针可以投射到针对现有条目的内核标识符。
图8示出了用于调度简单任务的实施例方法800。可以使用在通用硬件(例如,处理器或处理器内核)中、在专用硬件中执行的软件、或者在处理器和专用硬件中执行的软件的组合,在计算设备中执行方法800。
在方块802中,计算设备可以从任务队列中取回指针。取回的指针可以通过任务队列管理策略来指示,其中任务队列管理策略可以包括先进先出任务队列管理策略、基于可用性的任务队列管理策略、基于优先级的任务队列管理策略或者如本文所论述的这些任务队列管理策略的组合。
在确定块804中,计算设备可以确定所取回的指针是否是简单任务指针。简单任务指针和普通任务指针可以投射到与其它类型的任务指针的值不重叠的值,从而提供一种用于通过它们的投射值来识别任务指针是简单任务指针还是普通任务指针的方式。在各个实施例中,投射到简单任务指针的值可以是简单任务表中的内核标识符(例如,其可以是整数值),以及普通任务指针可以是投射到物理或虚拟存储器地址(例如,其可以是十六进制值)。基于投射到任务指针的值,计算设备可以确定任务指针是针对简单任务的简单任务指针,还是针对普通任务的普通任务指针。
响应于确定所取回的指针不是简单任务指针(即,确定块804=“否”),在方块818中,计算设备可以创建普通任务,以及将该普通任务分配给执行的线程。
响应于确定所取回的指针是简单任务指针(即,确定块804=“是”),在方块806中,计算设备可以从简单任务表中取回与简单任务指针相关联的条目。如本文所描述的,简单任务指针可以投射到简单任务表中的条目的内核标识符,因此计算设备可以取回简单任务表中具有与投射到所取回的简单任务指针的值相匹配的内核标识符的条目。取回条目还可以包括:取回内核指针和条目的内核迭代计数器的数据。
在方块808中,计算设备可以识别对于执行与简单任务指针相关联的条目的轻量级内核的任何限制。如上所述,关于对轻量级内核的执行的限制可以被包括在总内核迭代的数据中。计算设备可以针对限制的符号表示,检查总内核迭代的数据中的指定位置。限制可以包括:指定对于执行轻量级内核的线程(其包括主线程、关键线程和非关键线程)、对于执行轻量级内核的延时要求、执行线程的处理器与存储轻量级内核的存储器的接近度。
在方块810中,计算设备可以识别用于将轻量级内核执行为简单任务、直接地执行轻量级内核而无需创建普通任务的可用线程。识别可用线程可以考虑可用线程是否满足对于执行轻量级内核的任何限制。
在确定块812中,计算设备可以确定要执行为简单任务的内核迭代是否是可分割的。如上所述,其包括要针对简单任务执行的内核执行迭代的总数,以及可以将要针对简单任务执行的内核执行迭代的总数的除数包括在总内核迭代的数据中。计算设备可以针对内核执行迭代的总数以及内核执行迭代的总数的除数来检查总内核迭代的数据中的指定位置,以确定内核迭代是否是可分割的,以及如何将用于分配给可用线程的内核迭代进行划分。
响应于确定要执行为简单任务的内核迭代是可分割的(即,确定块812=“是”),在方块814中,计算设备可以将用于执行为简单任务的总迭代划分成内核迭代部分。在各个实施例中,内核迭代部分可以是使得他们对称地或不对称地跨越可用线程来扩展内核迭代。在各个实施例中,内核迭代部分可以是使得它们对在大于、等于或小于可用线程的数量的许多内核迭代部分中的所有的总迭代做出解释(account for)。
响应于确定要执行为简单任务的内核迭代是不可分割的(即,确定块812=“否”),或者在将用于执行为简单任务的总迭代划分成内核迭代部分之后,在方块816中,计算设备可以将要执行为简单任务的内核迭代部分的一些或全部分配给一个或多个可用的线程。对用于执行的内核迭代部分的分配可以考虑可用的线程是否满足用于执行轻量级内核的任何限制。
图9示出了用于执行简单任务的实施例方法900。可以使用在通用硬件(例如,处理器或处理器内核)中、在专用硬件中执行的软件、或者在处理器和专用硬件中执行的软件的组合,在计算设备中执行方法900。
在方块902中,计算设备可以取回轻量级内核。计算设备可以使用与简单任务指针相关联的条目的内核指针,以从投射到内核指针的存储器位置取回轻量级内核。
在方块904中,计算设备可以将轻量级内核作为简单任务进行执行。计算设备可以使用所取回的轻量级内核,通过直接执行轻量级内核而不必首先创建普通任务的构造,来响应简单任务对线程的分配,从而避免不得不在执行期间管理普通任务的冲突和依赖性,并在完成时分派普通任务。因此,虽然可以像任务(特别地使用简单的任务)一样调度对轻量级内核的执行,但是将轻量级内核作为简单的任务来执行,避免了用于调度和执行普通任务所需要的资源消耗中的开销。
在方块906中,计算设备可以针对内核迭代部分的执行,更新本地迭代计数器。更新本地迭代计数器可以包括:递增、递减或使用算法来指示执行的内核迭代的数量或者在内核迭代部分中的执行后留下的内核迭代的数量。
在确定块908中,计算设备可以确定内核迭代部分是否完成。在各个实施例中,计算设备可以将本地迭代计数器中的简单任务中的已执行迭代的数量与内核迭代部分的迭代数量进行比较,或者可以检查本地迭代计数器是否等于给定的值(例如,零)。响应于确定内核迭代部分没有完成(即,确定块908=“否”),在方块904中,计算设备可以将该轻量级内核作为简单任务进行执行,以及在方块906中,针对内核迭代部分的执行来更新本地迭代计数器,如上所述。
响应于确定内核迭代部分完成了(即,确定块908=“是”),在方块910中,计算设备可以更新用于简单任务表中的该简单任务的条目的总迭代计数。在各个实施例中,更新总迭代计数器可以包括:将完成的内核迭代部分的迭代次数增加到在总迭代计数器的数据中表示的完成的内核迭代次数,或者在总迭代计数器的数据中,从待完成的内核迭代次数中减去完成的内核迭代部分的迭代次数。在各个实施例中,已完成或者待完成的内核迭代的数量可以通过内核迭代的数量、内核迭代部分的数量或者表示内核迭代或内核迭代部分的符号值来表示。
在确定块912中,计算设备可以确定是否有任何内核迭代部分仍然要执行。可以将未执行的内核迭代部分分配给特定的线程或者分配给一组线程。响应于确定有内核迭代部分仍然要执行(即,确定块912=“是”),在方块904中,计算设备可以将轻量级内核作为简单任务进行执行,如上所述。
响应于确定没有内核迭代部分仍然要执行(即,确定块912=“否”),在确定块914中,计算设备可以确定针对内核迭代部分的简单任务输出是否独立于针对另一内核迭代部分的另一简单任务输出。用此方式,计算设备可以管理轻量级内核执行的简单同步。例如,计算设备可以实现分叉连接范例,使得导致单个输出的轻量级内核执行可以并行地执行,以及它们的输出可以在执行完成之后连接在一起。
响应于确定针对内核迭代部分的简单任务输出不是独立于针对另一内核迭代部分的另一简单任务输出(即,确定块914=“否”),在方块916中,计算设备可以对依赖的简单任务输出进行组合。
响应于确定针对内核迭代部分的简单任务输出独立于针对另一内核迭代部分的另一简单任务输出(即,确定块914=“是”),或者在方块916中对依赖的简单任务输出进行组合之后,在方块918中,计算设备可以输出所组合的简单任务输出。在方块920中,计算设备可以从简单任务表中无效或者清除与取回到的轻量级内核相关联的简单任务的条目。
可以在各种各样的计算系统中实现各个方面(其包括但不限于上文参照图1-9所论述的方面),其中该计算系统可以包括在图10中示出的适合于与各个方面一起使用的示例性移动计算设备。移动计算设备1000可以包括耦合到触摸屏控制器1004和内部存储器1006的处理器1002。处理器1002可以是被设计用于通用或特定处理任务的一个或多个多核集成电路。内部存储器1006可以是易失性存储器或非易失性存储器,以及还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。可以利用的存储器类型的例子,包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1004和处理器1002还可以耦合到触摸屏面板1012,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感应触摸屏等等。另外,计算设备1000的显示器并不需要具有触摸屏能力。
移动计算设备1000可以具有用于发送和接收通信的一个或多个无线信号收发机1008(例如,Peanut、蓝牙、Zigbee(紫蜂)、Wi-Fi、RF无线电单元等等)和天线1010,它们彼此之间相耦合和/或耦合到处理器1002。收发机1008和天线1010可以与上文所提及的电路一起来使用,以实现各种无线传输协议栈和接口。移动计算设备1000可以包括蜂窝网络无线调制解调器芯片1016,所述蜂窝网络无线调制解调器芯片1016经由蜂窝网络来实现通信并耦合到处理器。
移动计算设备1000可以包括耦合到处理器1002的外围设备连接接口1018。外围设备连接接口1018可以被单独地配置为接受一种类型的连接,或者可以被配置为接受各种类型的物理和通信连接、共同或专有连接(例如,USB、火线、Thunderbolt(雷电)或PCIe)。外围设备连接接口1018还可以耦合到类似配置的外围设备连接端口(没有示出)。
移动计算设备1000还可以包括用于提供音频输出的扬声器1014。移动计算设备1000还可以包括由塑料、金属、或材料的组合所构成的壳体1020,用于包含本文所论述的组件中的所有组件或者一些组件。移动计算设备1000可以包括耦合到处理器1002的电源1022,例如一次性电池或可充电电池。可充电电池还可以耦合到外围设备连接端口,以从移动计算设备1000之外的源接收充电电流。移动计算设备1000还可以包括用于接收用户输入的物理按键1024。移动计算设备1000还可以包括用于打开和关闭移动计算设备1000的电源按键1026。
各个方面(其包括但不限于上文参照图1-9所论述的方面)可以实现在可以包括多种各样的移动计算设备(例如,图11中所示出的膝上型计算机1100)的各种各样的计算系统中。很多膝上型计算机包括触摸板触摸接口1117,所述触摸板触摸接口1117充当计算机的指向设备,以及因此可以接收拖动、滚动和轻弹手势(其类似于上文所描述的在装备有触摸屏显示器的计算设备上所实现的那些手势)。通常,膝上型计算机1100包括耦合到易失性存储器1112和大容量非易失性存储器(例如,闪存的硬盘驱动器1113)的处理器1111。另外,计算机1100可以具有用于发送和接收电磁辐射的一个或多个天线1108,这些天线1108可以连接到无线数据链路和/或耦合到处理器1111的蜂窝电话收发机1116。计算机1100还可以包括耦合到处理器1111的软盘驱动器1114和压缩光盘(CD)驱动器1115。在笔记本配置中,计算机壳体包括全部都耦合到处理器1111的触摸板1117、键盘1118和显示器1119。计算设备的其它配置可以包括(例如,经由通用串行总线(USB)输入)耦合到处理器的计算机鼠标或者跟踪球,如公众所知道的,这些组件还可以结合各个方面来使用。
各个方面(其包括但不限于上文参照图1-9所论述的方面)可以实现在多种多样的计算系统中,其可以包括各种各样的商业可用的服务器中的任何一种,用于对服务器高速缓冲存储器中的数据进行压缩。图12示出了示例性服务器1200。通常,这样的服务器1200包括耦合到易失性存储器1202和大容量非易失性存储器(例如,磁盘驱动器1204)的一个或多个多核处理器部件1201。如图12中所示,可以通过将多核处理器部件1201插入到组装的架子中,来添加到服务器1200中。服务器1200还可以包括耦合到处理器1201的软盘驱动器、压缩光盘(CD)或者DVD光盘驱动器1206。服务器1200还可以包括耦合到多核处理器部件1201的网络接入端口1203,用于与网络1205(例如,耦合到其它广播系统计算机和服务器的局域网、互联网、公众交换电话网、和/或蜂窝数据网络(如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它类型的蜂窝数据网络))建立网络接口连接。
用于在可编程处理器上运行以执行本文的各个方面的操作的计算机程序代码或“程序代码”,可以利用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者利用各种其它编程语言来编写。如本申请中所使用的计算机可读存储介质上所存储的程序代码或程序,可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
将很多计算设备操作系统内核组织到用户空间(非特权代码运行的空间)和内核空间(特权代码运行的空间)。这种分隔在Android(安卓)和其它通用公共许可证(GPL)环境中具有特别的重要性,其中在这些环境中,作为内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可以不是GPL许可的。应当理解的是,这里所论述的各种软件组件/模块可以实现在内核空间中,也可以实现在用户空间中,除非另外明确指出。
提供上述的方法描述和过程流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个方面的操作。如本领域普通技术人员将理解的,可以以任何顺序来执行上述的方面中的操作顺序。诸如“其后”、“然后”、“接着”等等之类的词语,并不旨在限制操作的顺序;这些词语仅仅只是用于引导读者遍历方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“一(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。
结合各个方面描述的各种说明性的逻辑块、模块、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上文对各种说明性的组件、块、模块、电路和操作均围绕其功能进行了总体描述。至于这样的功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是这样实现决策不应解释为引起背离本发明的保护范围。
利用被设计为执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,可以用来实现或执行结合本文所公开的方面描述的用于实现各种说明性的逻辑、逻辑块、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它这样的配置。替代地,一些操作或方法可以由特定于给定的功能的电路来执行。
在一个或多个方面,本文所述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储成非暂时性计算机可读介质或者非暂时性处理器可读介质上的一个或多个指令或代码。本文所公开的方法或算法的操作,可以体现在处理器可执行软件模块中,所述处理器可执行软件模块可以位于非暂时性计算机可读存储介质或处理器可读存储介质上。非暂时性计算机可读或处理器可读存储介质可以是计算机或处理器能够存取的任何存储介质。举例而言,但非做出限制,这样的非暂时性计算机可读介质或者处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非暂时性计算机可读介质和处理器可读介质的保护范围之内。另外,方法或算法的操作可以作为一个代码和/或指令集或者其任意组合或集合,位于非暂时性处理器可读介质和/或计算机可读介质上,其中该非暂时性处理器可读介质和/或计算机可读介质可以整合到计算机程序产品中。
为使本领域任何普通技术人员能够实现或者使用本发明,上文围绕所公开的方面进行了描述。对于本领域普通技术人员来说,对这些方面的各种修改将是显而易见的,以及本文定义的总体原理可以在不脱离本发明的精神或保护范围的情况下应用于其它方面。因此,本发明并不旨在限于本文所示出的方面,而是与所附权利要求书和本文公开的原理和新颖性特征的最广范围相一致。
Claims (30)
1.一种调度和执行计算设备中的轻量级内核的方法,包括:
确定任务队列中的第一任务指针是否是针对轻量级内核的简单任务指针;
响应于确定所述第一任务指针是简单任务指针,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行;
从简单任务表的条目中取回针对所述轻量级内核的内核指针,其中,所述条目与所述简单任务指针相关联;以及
直接地执行所述轻量级内核作为所述第一简单任务。
2.根据权利要求1所述的方法,还包括:
完成对所述第一简单任务的执行;以及
更新所述简单任务表中的所述条目的内核迭代计数器的数据。
3.根据权利要求2所述的方法,还包括:
确定所述轻量级内核的内核迭代是否可分割;以及
响应于确定所述轻量级内核的所述内核迭代是可分割的,将所述轻量级内核的所述内核迭代划分成迭代部分,
其中:
调度针对所述轻量级内核的第一简单任务用于由第一线程来执行包括:分配所述第一简单任务具有至少一个迭代部分;
完成对所述第一简单任务的执行包括:完成与分配给所述第一简单任务的所述至少一个迭代部分的迭代次数相等的对所述第一简单任务的执行次数;以及
更新所述简单任务表中的所述条目的内核迭代计数器的数据包括:更新所述内核迭代计数器的所述数据,以反映分配给所述第一简单任务的所述至少一个迭代部分的所述迭代次数的完成。
4.根据权利要求2所述的方法,还包括:
根据所述内核迭代计数器的所述数据,确定所述第一简单任务的所有迭代是否完成;以及
响应于确定所述第一简单任务的所有迭代完成,清除所述简单任务表中的所述条目。
5.根据权利要求1所述的方法,还包括:
识别对于执行所述轻量级内核的限制,其中,所述限制包括以下各项中的一项:用于执行所述轻量级内核的指定线程、对于执行所述轻量级内核的延时要求、以及执行所述第一线程的处理器与存储所述轻量级内核的存储器的接近度,其中所述指定线程包括主线程、关键线程和非关键线程,其中,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行包括:基于对于执行所述轻量级内核的所述限制,来选择所述第一线程。
6.根据权利要求1所述的方法,还包括:
确定所述任务队列中的第二任务指针是否是针对所述轻量级内核的所述简单任务指针;
响应于确定所述第二任务指针是所述简单任务指针,调度针对所述轻量级内核的第二简单任务用于由第二线程来执行;
从所述简单任务表的所述条目中取回针对所述轻量级内核的所述内核指针,其中,所述条目与所述简单任务指针相关联;以及
直接地执行所述轻量级内核作为所述第二简单任务。
7.根据权利要求6所述的方法,还包括:
将所述第一简单任务的第一输出与所述第二简单任务的第二输出进行组合。
8.根据权利要求1所述的方法,还包括:
确定请求的过程是否包括所述轻量级内核;
响应于确定所述请求的过程包括所述轻量级内核,确定所述简单任务表是否已满;
响应于确定所述简单任务表未满,在所述简单任务表中创建针对所述轻量级内核的条目;
将与所述条目相关联的所述简单任务指针添加到所述任务队列;以及
响应于确定所述简单任务表已满,将与所述轻量级内核相关联的普通任务指针添加到所述任务队列。
9.一种计算设备,包括:
第一处理器,其被配置有处理器可执行指令以执行包括以下各项的操作:
确定任务队列中的第一任务指针是否是针对轻量级内核的简单任务指针;
响应于确定所述第一任务指针是简单任务指针,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行;
从简单任务表的条目中取回针对所述轻量级内核的内核指针,其中,所述条目与所述简单任务指针相关联;以及
直接地执行所述轻量级内核作为所述第一简单任务。
10.根据权利要求9所述的计算设备,其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:
完成对所述第一简单任务的执行;以及
更新所述简单任务表中的所述条目的内核迭代计数器的数据。
11.根据权利要求10所述的计算设备,其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:
确定所述轻量级内核的内核迭代是否可分割;以及
响应于确定所述轻量级内核的所述内核迭代是可分割的,将所述轻量级内核的所述内核迭代划分成迭代部分,
其中,所述第一处理器被配置有处理器可执行指令以执行操作,使得:
调度针对所述轻量级内核的第一简单任务用于由第一线程来执行包括:分配所述第一简单任务具有至少一个迭代部分;
完成对所述第一简单任务的执行包括:完成与分配给所述第一简单任务的所述至少一个迭代部分的迭代次数相等的对所述第一简单任务的执行次数;以及
更新所述简单任务表中的所述条目的内核迭代计数器的数据包括:更新所述内核迭代计数器的所述数据,以反映分配给所述第一简单任务的所述至少一个迭代部分的所述迭代次数的完成。
12.根据权利要求10所述的计算设备,其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:
根据所述内核迭代计数器的所述数据,确定所述第一简单任务的所有迭代是否完成;以及
响应于确定所述第一简单任务的所有迭代完成,清除所述简单任务表中的所述条目。
13.根据权利要求9所述的计算设备,还包括:
通信地连接到所述第一处理器的存储器;以及
通信地连接到所述第一处理器的第二处理器,
其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:识别对于执行所述轻量级内核的限制,其中,所述限制包括以下各项中的一项:用于执行所述轻量级内核的指定线程、对于执行所述轻量级内核的延时要求、以及执行所述第一线程的处理器与存储所述轻量级内核的所述存储器的接近度,其中所述指定线程包括主线程、关键线程和非关键线程,以及
其中,所述第一处理器被配置有处理器可执行指令以执行操作,使得调度针对所述轻量级内核的第一简单任务用于由第一线程来执行包括:基于对于执行所述轻量级内核的所述限制,来选择所述第一线程。
14.根据权利要求9所述的计算设备,其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:
确定所述任务队列中的第二任务指针是否是针对所述轻量级内核的所述简单任务指针;
响应于确定所述第二任务指针是所述简单任务指针,调度针对所述轻量级内核的第二简单任务用于由第二线程来执行;
从所述简单任务表的所述条目中取回针对所述轻量级内核的所述内核指针,其中,所述条目与所述简单任务指针相关联;以及
直接地执行所述轻量级内核作为所述第二简单任务。
15.根据权利要求14所述的计算设备,其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:
将所述第一简单任务的第一输出与所述第二简单任务的第二输出进行组合。
16.根据权利要求9所述的计算设备,其中,所述第一处理器被配置有处理器可执行指令以执行还包括以下各项的操作:
确定请求的过程是否包括所述轻量级内核;
响应于确定所述请求的过程包括所述轻量级内核,确定所述简单任务表是否已满;
响应于确定所述简单任务表未满,在所述简单任务表中创建针对所述轻量级内核的条目;
将与所述条目相关联的所述简单任务指针添加到所述任务队列;以及
响应于确定所述简单任务表已满,将与所述轻量级内核相关联的普通任务指针添加到所述任务队列。
17.一种计算设备,包括:
用于确定任务队列中的第一任务指针是否是针对轻量级内核的简单任务指针的单元;
用于响应于确定所述第一任务指针是简单任务指针,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行的单元;
用于从简单任务表的条目中取回针对所述轻量级内核的内核指针的单元,其中,所述条目与所述简单任务指针相关联;以及
用于直接地执行所述轻量级内核作为所述第一简单任务的单元。
18.根据权利要求17所述的计算设备,还包括:
用于完成对所述第一简单任务的执行的单元;以及
用于更新所述简单任务表中的所述条目的内核迭代计数器的数据的单元。
19.根据权利要求18所述的计算设备,还包括:
用于确定所述轻量级内核的内核迭代是否可分割的单元;以及
用于响应于确定所述轻量级内核的所述内核迭代是可分割的,将所述轻量级内核的所述内核迭代划分成迭代部分的单元,
其中:
用于调度针对所述轻量级内核的第一简单任务用于由第一线程来执行的单元包括:用于分配所述第一简单任务具有至少一个迭代部分的单元;
用于完成对所述第一简单任务的执行的单元包括:用于完成与分配给所述第一简单任务的所述至少一个迭代部分的迭代次数相等的对所述第一简单任务的执行次数的单元;以及
用于更新所述简单任务表中的所述条目的内核迭代计数器的数据的单元包括:用于更新所述内核迭代计数器的所述数据,以反映分配给所述第一简单任务的所述至少一个迭代部分的所述迭代次数的完成的单元。
20.根据权利要求18所述的计算设备,还包括:
用于根据所述内核迭代计数器的数据,确定所述第一简单任务的所有迭代是否完成的单元;以及
用于响应于确定所述第一简单任务的所有迭代完成,清除所述简单任务表中的所述条目的单元。
21.根据权利要求17所述的计算设备,还包括:
用于识别对于执行所述轻量级内核的限制的单元,其中,所述限制包括以下各项中的一项:用于执行所述轻量级内核的指定线程、对于执行所述轻量级内核的延时要求、以及执行所述第一线程的处理器与存储所述轻量级内核的存储器的接近度,其中所述指定线程包括主线程、关键线程和非关键线程,
其中,用于调度针对所述轻量级内核的第一简单任务用于由第一线程来执行的单元包括:用于基于对于执行所述轻量级内核的所述限制,来选择所述第一线程的单元。
22.根据权利要求17所述的计算设备,还包括:
用于确定所述任务队列中的第二任务指针是否是针对所述轻量级内核的所述简单任务指针的单元;
用于响应于确定所述第二任务指针是所述简单任务指针,调度针对所述轻量级内核的第二简单任务用于由第二线程来执行的单元;
用于从所述简单任务表的所述条目中取回针对所述轻量级内核的所述内核指针的单元,其中,所述条目与所述简单任务指针相关联;
用于直接地执行所述轻量级内核作为所述第二简单任务的单元;以及
用于将所述第一简单任务的第一输出与所述第二简单任务的第二输出进行组合的单元。
23.根据权利要求17所述的计算设备,还包括:
用于确定请求的过程是否包括所述轻量级内核的单元;
用于响应于确定所述请求的过程包括所述轻量级内核,确定所述简单任务表是否已满的单元;
用于响应于确定所述简单任务表未满,在所述简单任务表中创建针对所述轻量级内核的条目的单元;
用于将与所述条目相关联的所述简单任务指针添加到所述任务队列的单元;以及
用于响应于确定所述简单任务表已满,将与所述轻量级内核相关联的普通任务指针添加到所述任务队列的单元。
24.一种其上存储有处理器可执行指令的非暂时性处理器可读存储介质,其中所述处理器可执行指令被配置为使计算设备的第一处理器执行包括以下各项的操作:
确定任务队列中的第一任务指针是否是针对轻量级内核的简单任务指针;
响应于确定所述第一任务指针是简单任务指针,调度针对所述轻量级内核的第一简单任务用于由第一线程来执行;
从简单任务表的条目中取回针对所述轻量级内核的内核指针,其中,所述条目与所述简单任务指针相关联;以及
直接地执行所述轻量级内核作为所述第一简单任务。
25.根据权利要求24所述的非暂时性处理器可读存储介质,其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行还包括以下各项的操作:
完成对所述第一简单任务的执行;以及
更新所述简单任务表中的所述条目的内核迭代计数器的数据。
26.根据权利要求25所述的非暂时性处理器可读存储介质,其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行还包括以下各项的操作:
确定所述轻量级内核的内核迭代是否可分割;以及
响应于确定所述轻量级内核的所述内核迭代是可分割的,将所述轻量级内核的所述内核迭代划分成迭代部分,
其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行操作,使得:
调度针对所述轻量级内核的第一简单任务用于由第一线程来执行包括:分配所述第一简单任务具有至少一个迭代部分;
完成对所述第一简单任务的执行包括:完成与分配给所述第一简单任务的所述至少一个迭代部分的迭代次数相等的对所述第一简单任务的执行次数;以及
更新所述简单任务表中的所述条目的内核迭代计数器的数据包括:更新所述内核迭代计数器的所述数据,以反映分配给所述第一简单任务的所述至少一个迭代部分的所述迭代次数的完成。
27.根据权利要求25所述的非暂时性处理器可读存储介质,其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行还包括以下各项的操作:
根据所述内核迭代计数器的所述数据,确定所述第一简单任务的所有迭代是否完成;以及
响应于确定所述第一简单任务的所有迭代完成,清除所述简单任务表中的所述条目。
28.根据权利要求24所述的非暂时性处理器可读存储介质,其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行还包括以下各项的操作:识别对于执行所述轻量级内核的限制,以及
其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行操作,使得:
所述限制包括以下各项中的一项:用于执行所述轻量级内核的指定线程、对于执行所述轻量级内核的延时要求、以及执行所述第一线程的第二处理器与存储所述轻量级内核的存储器的接近度,其中所述指定线程包括主线程、关键线程和非关键线程;以及
调度针对所述轻量级内核的第一简单任务用于由第一线程来执行包括:基于对于执行所述轻量级内核的所述限制,来选择所述第一线程。
29.根据权利要求24所述的非暂时性处理器可读存储介质,其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行还包括以下各项的操作:
确定所述任务队列中的第二任务指针是否是针对所述轻量级内核的所述简单任务指针;
响应于确定所述第二任务指针是所述简单任务指针,调度针对所述轻量级内核的第二简单任务用于由第二线程来执行;
从所述简单任务表的所述条目中取回针对所述轻量级内核的所述内核指针,其中,所述条目与所述简单任务指针相关联;
直接地执行所述轻量级内核作为所述第二简单任务;以及
将所述第一简单任务的第一输出与所述第二简单任务的第二输出进行组合。
30.根据权利要求24所述的非暂时性处理器可读存储介质,其中,所述存储的处理器可执行指令被配置为使所述第一处理器执行还包括以下各项的操作:
确定请求的过程是否包括所述轻量级内核;
响应于确定所述请求的过程包括所述轻量级内核,确定所述简单任务表是否已满;
响应于确定所述简单任务表未满,在所述简单任务表中创建针对所述轻量级内核的条目;
将与所述条目相关联的所述简单任务指针添加到所述任务队列;以及
响应于确定所述简单任务表已满,将与所述轻量级内核相关联的普通任务指针添加到所述任务队列。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562198830P | 2015-07-30 | 2015-07-30 | |
US62/198,830 | 2015-07-30 | ||
US14/992,268 US10169105B2 (en) | 2015-07-30 | 2016-01-11 | Method for simplified task-based runtime for efficient parallel computing |
US14/992,268 | 2016-01-11 | ||
PCT/US2016/038925 WO2017019212A1 (en) | 2015-07-30 | 2016-06-23 | Method for simplified task-based runtime for efficient parallel computing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108431775A true CN108431775A (zh) | 2018-08-21 |
Family
ID=57882620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680044001.3A Pending CN108431775A (zh) | 2015-07-30 | 2016-06-23 | 用于高效并行计算的简化的基于任务的运行时的方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10169105B2 (zh) |
EP (2) | EP3859523A1 (zh) |
JP (1) | JP2018528515A (zh) |
KR (1) | KR20180034440A (zh) |
CN (1) | CN108431775A (zh) |
BR (1) | BR112018001728A2 (zh) |
CA (1) | CA2989166A1 (zh) |
TW (1) | TWI726899B (zh) |
WO (1) | WO2017019212A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968404A (zh) * | 2018-09-30 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种设备数据处理方法及装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10312459B2 (en) * | 2016-01-27 | 2019-06-04 | Nichem Fine Technology Co., Ltd. | Compound and organic electronic device using the same |
CN107562535A (zh) * | 2017-08-02 | 2018-01-09 | 广东睿江云计算股份有限公司 | 一种基于任务调度的负载均衡方法、系统 |
GB2569270B (en) * | 2017-10-20 | 2020-02-19 | Graphcore Ltd | Parallel computing |
CN108364162B (zh) * | 2018-01-31 | 2020-11-27 | 深圳市融壹买信息科技有限公司 | 一种任务界面管理方法、系统及终端设备 |
US10387214B1 (en) * | 2018-03-30 | 2019-08-20 | Sas Institute Inc. | Managing data processing in a distributed computing environment |
US11803391B2 (en) | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
US11989583B2 (en) * | 2021-03-31 | 2024-05-21 | Arm Limited | Circuitry and method |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0403229A1 (en) * | 1989-06-13 | 1990-12-19 | Digital Equipment Corporation | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
CN1842769A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 用于在多线程微处理器中对并行指令流进行初始化的指令 |
US20080059677A1 (en) * | 2006-08-31 | 2008-03-06 | Charles Jens Archer | Fast interrupt disabling and processing in a parallel computing environment |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
CN102937889A (zh) * | 2011-04-07 | 2013-02-20 | 威盛电子股份有限公司 | 控制寄存器对应于异质指令集架构处理器 |
CN103019810A (zh) * | 2011-09-19 | 2013-04-03 | 辉达公司 | 具有不同执行优先级的计算任务的调度和管理 |
CN103294536A (zh) * | 2012-01-31 | 2013-09-11 | 辉达公司 | 控制用于处理任务的工作分布 |
US20130268942A1 (en) * | 2012-04-09 | 2013-10-10 | Jerome F. Duluk, Jr. | Methods and apparatus for auto-throttling encapsulated compute tasks |
JP5453825B2 (ja) * | 2009-02-05 | 2014-03-26 | 日本電気株式会社 | プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法 |
US20140337389A1 (en) * | 2013-05-08 | 2014-11-13 | Nvidia Corporation | System, method, and computer program product for scheduling tasks associated with continuation thread blocks |
CN104699460A (zh) * | 2013-12-04 | 2015-06-10 | 美国亚德诺半导体公司 | 线程偏差计数器 |
CN105378684A (zh) * | 2013-07-16 | 2016-03-02 | 苹果公司 | 用于处理器的基于访问映射-图案匹配的预取单元 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007509387A (ja) | 2003-09-30 | 2007-04-12 | ジャルナ エスアー | オペレーティングシステム |
US8611851B2 (en) * | 2010-02-19 | 2013-12-17 | Alcatel Lucent | Accounting request processing in a communication network |
US8918799B2 (en) | 2012-03-30 | 2014-12-23 | International Business Machines Corporation | Method to utilize cores in different operating system partitions |
US8789046B2 (en) | 2012-03-30 | 2014-07-22 | International Business Machines Corporation | Method to embed a light-weight kernel in a full-weight kernel to provide a heterogeneous execution environment |
-
2016
- 2016-01-11 US US14/992,268 patent/US10169105B2/en active Active
- 2016-06-23 CA CA2989166A patent/CA2989166A1/en not_active Abandoned
- 2016-06-23 KR KR1020187002512A patent/KR20180034440A/ko unknown
- 2016-06-23 EP EP21165660.8A patent/EP3859523A1/en not_active Withdrawn
- 2016-06-23 WO PCT/US2016/038925 patent/WO2017019212A1/en active Search and Examination
- 2016-06-23 EP EP16734136.1A patent/EP3329370A1/en not_active Ceased
- 2016-06-23 BR BR112018001728A patent/BR112018001728A2/pt not_active IP Right Cessation
- 2016-06-23 JP JP2018503781A patent/JP2018528515A/ja not_active Ceased
- 2016-06-23 CN CN201680044001.3A patent/CN108431775A/zh active Pending
- 2016-07-26 TW TW105123620A patent/TWI726899B/zh active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0403229A1 (en) * | 1989-06-13 | 1990-12-19 | Digital Equipment Corporation | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
US5293620A (en) * | 1989-06-13 | 1994-03-08 | Digital Equipment Corporation | Method apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
CN1842769A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 用于在多线程微处理器中对并行指令流进行初始化的指令 |
US20080059677A1 (en) * | 2006-08-31 | 2008-03-06 | Charles Jens Archer | Fast interrupt disabling and processing in a parallel computing environment |
JP5453825B2 (ja) * | 2009-02-05 | 2014-03-26 | 日本電気株式会社 | プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法 |
CN102937889A (zh) * | 2011-04-07 | 2013-02-20 | 威盛电子股份有限公司 | 控制寄存器对应于异质指令集架构处理器 |
CN103019810A (zh) * | 2011-09-19 | 2013-04-03 | 辉达公司 | 具有不同执行优先级的计算任务的调度和管理 |
CN103294536A (zh) * | 2012-01-31 | 2013-09-11 | 辉达公司 | 控制用于处理任务的工作分布 |
US20130268942A1 (en) * | 2012-04-09 | 2013-10-10 | Jerome F. Duluk, Jr. | Methods and apparatus for auto-throttling encapsulated compute tasks |
US20140337389A1 (en) * | 2013-05-08 | 2014-11-13 | Nvidia Corporation | System, method, and computer program product for scheduling tasks associated with continuation thread blocks |
CN105378684A (zh) * | 2013-07-16 | 2016-03-02 | 苹果公司 | 用于处理器的基于访问映射-图案匹配的预取单元 |
CN104699460A (zh) * | 2013-12-04 | 2015-06-10 | 美国亚德诺半导体公司 | 线程偏差计数器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968404A (zh) * | 2018-09-30 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种设备数据处理方法及装置 |
CN110968404B (zh) * | 2018-09-30 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 一种设备数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2018528515A (ja) | 2018-09-27 |
TWI726899B (zh) | 2021-05-11 |
US10169105B2 (en) | 2019-01-01 |
EP3859523A1 (en) | 2021-08-04 |
EP3329370A1 (en) | 2018-06-06 |
BR112018001728A2 (pt) | 2018-09-18 |
CA2989166A1 (en) | 2017-02-02 |
WO2017019212A1 (en) | 2017-02-02 |
US20170031728A1 (en) | 2017-02-02 |
TW201717004A (zh) | 2017-05-16 |
KR20180034440A (ko) | 2018-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108431775A (zh) | 用于高效并行计算的简化的基于任务的运行时的方法 | |
CN107636625A (zh) | 用于共享系统高速缓存的虚拟化控制的方法和装置 | |
CN104850777B (zh) | 使用认证的清单来实现对多处理器平台的外部确认 | |
CN106104488B (zh) | 用于支持任务间通信的基于硬件的原子操作 | |
US8683175B2 (en) | Seamless interface for multi-threaded core accelerators | |
CN106557367A (zh) | 用于为计算资源提供粒度化服务质量的装置、方法和设备 | |
US11635961B2 (en) | Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file | |
CN106537361B (zh) | 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 | |
CN107810478A (zh) | 具有连续块的并行执行的基于块的架构 | |
CN108701040A (zh) | 用户级别线程暂停的方法、设备、和指令 | |
CN107209688A (zh) | 用于加速任务控制流的方法和系统 | |
CN108139946A (zh) | 用于在冲突存在时进行有效任务调度的方法 | |
CN110249302A (zh) | 在处理器核上同时执行多个程序 | |
CN108139931A (zh) | 通过重映射同步来加速任务子图 | |
CN107506328A (zh) | 无序执行存储器请求 | |
US9959121B2 (en) | Bypassing a higher level register file in a processor having a multi-level register file and a set of bypass registers | |
US20140122842A1 (en) | Efficient usage of a register file mapper mapping structure | |
CN107924327A (zh) | 用于多线程处理的系统和方法 | |
CN108885586A (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
CN108369517A (zh) | 聚合分散指令 | |
CN109791510A (zh) | 在异构计算中管理数据流 | |
CN106415485B (zh) | 用于动态语言中的内联高速缓存的硬件加速 | |
CN107223239A (zh) | 用于改善牺牲(Victim)高速缓存模式的处理调度 | |
US9740504B2 (en) | Hardware acceleration for inline caches in dynamic languages | |
CN105320494B (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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20220830 |
|
AD01 | Patent right deemed abandoned |