CN112860395B - 用于gpu的多任务调度方法 - Google Patents
用于gpu的多任务调度方法 Download PDFInfo
- Publication number
- CN112860395B CN112860395B CN202110095808.2A CN202110095808A CN112860395B CN 112860395 B CN112860395 B CN 112860395B CN 202110095808 A CN202110095808 A CN 202110095808A CN 112860395 B CN112860395 B CN 112860395B
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- scheduling
- thread bundle
- gpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Power Sources (AREA)
Abstract
本发明公开了一种用于GPU的多任务调度方法,该方法包括:在每个时钟周期到来时,流式多处理器继续调度执行当前线程束;若所述当前线程束无法调度执行,则选择所有任务中可被选择的优先级最高的任务组成任务集合;从所述任务集合中选择被调度执行次数最少的一个任务;调度执行选择的所述一个任务中年龄最老的线程束。本发明的用于GPU的多任务调度方法通过优先调度同一个线程束进行执行,当该线程束阻塞时,根据任务的优先级顺序调度执行具有更高优先级的任务,且针对具有相同优先级的不同任务,调度执行被调度执行次数较少的任务,既能够考虑高优先级任务的调度优先性,又能够考虑同一优先级任务间的调度公平性,且还能够较好地掩盖任务的访存延迟。
Description
技术领域
本发明涉及GPU技术领域,具体涉及一种用于GPU的多任务调度方法。
背景技术
图形处理器(Graphics Processing Unit,GPU)是一种用于做图像和图形相关运算工作的微处理器,GPU因其强大的计算能力在云计算平台和数据中心被广泛应用,为用户提供所需要的计算。与只在GPU上运行一个任务的单任务GPU相比,多任务GPU可以在GPU上同时运行多个任务,能够有效提高资源的利用率。具体地,多任务GPU可以在一个GPU上同时运行计算密集型和存储密集型程序,GPU上的计算资源和存储资源可以同时得到充分的利用。
目前有两种方式可以支持GPU同时运行多个任务,第一种方式为空间多任务(spatial multitasking),第二种方式为同时多任务(simultaneous multitasking)。具体地,GPU上有很多SM处理器(Streaming Multiprocessor,流式多处理器),这些SM处理器可以被分为若干组,在空间多任务方式中,GPU上同时运行的每个任务可以使用其中的一组SM处理器,即多个任务同时运行在不同的SM处理器上;在同时多任务方式中,一个SM处理器上的资源分成若干份,每个任务使用其中的一份资源,即多个任务同时运行在同一个SM上。相比于空间多任务方式,同时多任务以一种更细粒度的方式支持GPU上多任务的实现,具有更好的资源利用率和更高的性能,应用范围更广。
当任务在GPU的SM处理器上运行的时候,每个任务被划分为若干个线程块(threadblock),根据SM处理器上为该任务所分配的硬件资源的大小,一个或几个线程块被调度到SM处理器上执行。其中,每个线程块中包含很多线程(thread),这些线程又能够被组织成线程束(warp),每个线程束包含32个线程,SM处理器中的warp调度器在每一个时钟周期到来时都会在当前SM处理器上的所有线程束中选择一个准备就绪的线程束进行执行。
当前GPU上主流的线程束调度算法有LRR(Loosely Round Robin)调度算法和GTO(Greedy Then Oldest)调度算法。其中,LRR调度算法能够平等对待当前SM处理器上的线程束,在每个时钟周期到来时以一种轮转的方式在所有线程束中依次选择一个线程束进行执行,如果当前线程束因为数据依赖等原因没有准备就绪时,即当前线程束无法执行时,则会按照轮转的方式继续选择下一个线程束执行。GTO调度算法会优先选择当前的线程束进行执行,即执行序列一直为当前线程束,直至该线程束因为数据依赖等原因无法执行时,GTO调度算法才会选择当前SM处理器上最老的线程束进行执行,SM处理器上每个线程束的年龄由该线程束所属的线程块调度到SM处理器上的时间所决定,即如果一个线程块相对于其它线程块较早被调度到SM处理器上执行,则该线程块中的线程束的年龄最老。
然而,现有的GPU上采用的LRR调度算法和GTO调度算法只是考虑了单任务GPU中同一任务的不同线程束之间调度的公平性和效率,并没有考虑到多任务场景下,具有同一优先级的多个任务之间的调度公平性,以及具有不同优先级的多个任务之间在调度上的差异。其中,GTO调度算法虽然能够较好地掩盖GPU程序的访存延迟,具有较高的性能,但是持续调度数个年龄较老的线程束,明显忽视了处于同一优先级的其它任务之间的公平性,以及高优先级任务的调度优先性。LRR调度算法在进行单任务时虽然可以平等的对待同一任务之间的不同线程束,但是在多任务场景下,优先级相同的不同任务之间由于线程束数目的不同,LRR调度算法无法带来较好的公平性;并且,LRR调度算法也无法满足多个任务之间不同优先级的要求以及无法像GTO调度算法一样可以掩盖访存延迟。
发明内容
为解决上述现有技术中存在的至少一个技术问题,本发明提供一种用于GPU的多任务调度方法。
本发明公开了一种用于GPU的多任务调度方法,所述方法用于,包括以下步骤:
S11,在每个时钟周期到来时,流式多处理器继续调度执行当前线程束;
S12,若所述当前线程束无法调度执行,则选择所有任务中可被选择的优先级最高的任务组成任务集合;
S13,从所述任务集合中选择被调度执行次数最少的一个任务;
S14,调度执行选择的所述一个任务中年龄最老的线程束。
进一步地,在所述用于GPU的多任务调度方法中,在所述流式多处理器中设置任务计数器,用于记录每一个任务的被调度执行次数。
进一步地,在所述用于GPU的多任务调度方法中,在所述流式多处理器中,针对每一个所述任务设置一个所述任务计数器,每个所述任务计数器用于记录所述任务计数器对应的所述任务的被调度执行次数。
进一步地,在所述用于GPU的多任务调度方法中,所述任务计数器为寄存器。
进一步地,在所述用于GPU的多任务调度方法中,所述任务计数器为32bit寄存器。
进一步地,在所述用于GPU的多任务调度方法中,在针对每个任务设置一个所述任务计数器的基础上,所述方法包括以下步骤:
S21,在每个时钟周期到来时,流式多处理器判断当前线程束是否可以被调度执行;
S22,若是,调度当前线程束进行执行,并使当前线程束对应的任务计数器的计数加一;
S23,若否,根据所有任务的优先级顺序,从最高优先级开始,依次从所有任务中选择较高优先级的任务集合,若无法选择出任务集合,则表示当前所有任务的线程束均未准备就绪,暂停调度执行直至能够选择出任务集合;
S24,根据任务集合中每个任务对应的任务计数器的计数,从最小计数开始,依次从任务集合中选择较小计数的一个任务,若任务集合中所有任务均不能被选择,则返回步骤S23继续进行任务集合的选择;
S25,根据步骤S24选择的任务的所有线程块中所有线程束的年龄,从年龄最老开始,依次从任务中选择年龄较老的一个线程束,若任务中所有线程束均不能被选择,则返回步骤S24继续进行任务的选择;
S26,判断步骤S25选择的线程束是否可以执行,若是,调度执行选择的线程束,若否,返回步骤S25继续进行线程束的选择。
本发明技术方案的主要优点如下:
本发明的用于GPU的多任务调度方法通过优先调度同一个线程束进行执行,当该线程束因为访存延迟阻塞时,根据不同任务的优先级顺序优先选择具有更高优先级的任务进行调度执行,且针对具有相同优先级的不同任务,根据任务的被调度执行次数选择被调度执行次数较少的任务进行调度执行,既能够考虑高优先级任务的调度优先性,又能够考虑同一优先级的多个任务间的调度公平性,并且还能够较好地掩盖任务的访存延迟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的用于GPU的多任务调度方法的流程图;
图2为本发明一实施例的流式多处理器微体系架构示意图;
图3为本发明一实施例的另一种用于GPU的多任务调度方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明一实施例提供的技术方案。
参见图1,本发明一实施例提供了一种用于GPU的多任务调度方法,该方法用于采用同时多任务方式同时运行多个任务的GPU,同时多任务方式表示多个任务可以同时运行在GPU的同一个流式多处理器上,该用于GPU的多任务调度方法包括以下步骤:
S11,在每个时钟周期到来时,流式多处理器继续调度执行当前线程束;
S12,若当前线程束无法调度执行,则选择所有任务中可被选择的优先级最高的任务组成任务集合;
S13,从任务集合中选择被调度执行次数最少的一个任务;
S14,调度执行选择的一个任务中年龄最老的线程束。
其中,当前线程束表示在当前时钟周期到来前,流式多处理器(StreamingMultiprocessor,SM处理器)所调度执行的线程束;任务的被调度执行次数表示任务中所有线程束的被调度执行次数的总和;每个线程束的年龄由该线程束所属的线程块调度到流式多处理器上的时间所决定,如果一个线程块相对于其它线程块较早被调度到流式多处理器上执行,则该线程块中的线程束的年龄最老。
参见图2,本发明一实施例中,在流式多处理器中设置任务计数器,任务计数器用于记录每一个任务的被调度执行次数。
具体地,任务计数器可以设置在流式多处理器的warp调度器中,warp调度器根据任务计数器记录的每一个任务的被调度执行次数,选择任务集合中被调度执行次数最少的一个任务中年龄最老的一个线程束进行执行。
可选的,本发明一实施例中,针对每一个任务可以设置一个任务计数器,每个任务计数器用于记录任务计数器对应的任务的被调度执行次数。
即当流式多处理器上设置有N个同时运行的任务,该流式多处理器的warp调度器中设置有N个对应不同任务的任务计数器。
具体地,当任务中有线程束被调度执行时,该任务对应的任务计数器的计数加一。
可选的,任务计数器可以采用寄存器。具体地,任务计数器可以采用32bit寄存器。
进一步地,参见图3,本发明一实施例中,在针对每个任务设置一个任务计数器的基础上,该用于GPU的多任务调度方法可以包括以下步骤:
S21,在每个时钟周期到来时,流式多处理器判断当前线程束是否可以被调度执行;
S22,若是,调度当前线程束进行执行,并使当前线程束对应的任务计数器的计数加一;
S23,若否,根据所有任务的优先级顺序,从最高优先级开始,依次从所有任务中选择较高优先级的任务集合,若无法选择出任务集合,则表示当前所有任务的线程束均未准备就绪,暂停调度执行直至能够选择出任务集合;
S24,根据任务集合中每个任务对应的任务计数器的计数,从最小计数开始,依次从任务集合中选择较小计数的一个任务,若任务集合中所有任务均不能被选择,则返回步骤S23继续进行任务集合的选择;
S25,根据步骤S24选择的任务的所有线程块中所有线程束的年龄,从年龄最老开始,依次从任务中选择年龄较老的一个线程束,若任务中所有线程束均不能被选择,则返回步骤S24继续进行任务的选择;
S26,判断步骤S25选择的线程束是否可以执行,若是,调度执行选择的线程束,若否,返回步骤S25继续进行线程束的选择。
其中,任务集合由同一优先级的一个、两个或多个任务组成,当某一优先级的任务有一个以上且仅有一个可被选择的任务,则该优先级的任务集合由一个任务组成;当某一优先级的任务有两个以上且仅有两个可被选择的任务,则该优先级的任务集合由两个任务组成;当某一优先级的任务有三个以上且有至少三个可被选择的任务,则该优先级的任务集合由多个任务组成。
具体地,针对每一个流式多处理器,在每个时钟周期到来时,流式多处理器先判断当前线程束中的指令是否可以被调度执行;若是,流式多处理器中的warp调度器调度当前线程束中的指令进行执行,并使当前线程束所属任务对应的任务计数器的计数加一;若否,流式多处理器根据自身上的所有任务的优先级顺序,从最高优先级开始,依次从所有任务中选择较高优先级的任务集合,若无法选择出任务集合,则表示当前所有任务的线程束均未准备就绪,暂停调度执行直至能够选择出任务集合;若能够选择出任务集合,根据任务集合中每个任务对应的任务计数器的计数,从最小计数开始,依次从任务集合中选择较小计数的一个任务,若任务集合中所有任务均不能被选择,则返回上述的任务集合的选择过程,在原先已进行的任务集合选择过程的基础上继续进行任务集合的选择;若能够在任务集合中选择出任务,根据选择的任务的所有线程块中所有线程束的年龄,从年龄最老开始,依次从任务中选择年龄较老的一个线程束,若任务中所有线程束均不能被选择,则返回上述的任务的选择过程,在原先已进行的任务选择过程的基础上继续进行任务的选择;若能够在任务中选择出线程束,判断当前选择的线程束是否可以执行,若是,调度执行当前选择的线程束,若否,返回上述的线程束的选择过程,在原先已进行的线程束选择过程的基础上继续进行线程束的选择。
本发明一实施例提供的用于GPU的多任务调度方法通过优先调度同一个线程束进行执行,当该线程束因为访存延迟阻塞时,根据不同任务的优先级顺序优先选择具有更高优先级的任务进行调度执行,且针对具有相同优先级的不同任务,根据任务的被调度执行次数选择被调度执行次数较少的任务进行调度执行,既能够考虑高优先级任务的调度优先性,又能够考虑同一优先级的多个任务间的调度公平性,并且还能够较好地掩盖任务的访存延迟。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。
最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种用于GPU的多任务调度方法,其特征在于,包括以下步骤:
S11,在每个时钟周期到来时,流式多处理器继续调度执行当前线程束;
S12,若所述当前线程束无法调度执行,则选择所有任务中可被选择的优先级最高的任务组成任务集合;
S13,从所述任务集合中选择被调度执行次数最少的一个任务;
S14,调度执行选择的所述一个任务中年龄最老的线程束;
其中,在所述流式多处理器中设置任务计数器,用于记录每一个任务的被调度执行次数;
其中,若无法选择出任务集合,则表示当前所有任务的线程束均未准备就绪,暂停调度执行直至能够选择出任务集合;
其中,根据任务集合中每个任务对应的任务计数器的计数,从最小计数开始,依次从任务集合中选择较小计数的一个任务,若任务集合中所有任务均不能被选择,则重新进行任务集合的选择;
其中,根据选择的任务的所有线程块中所有线程束的年龄,从年龄最老开始,依次从任务中选择年龄较老的一个线程束,若任务中所有线程束均不能被选择,则重新进行任务的选择。
2.根据权利要求1所述的用于GPU的多任务调度方法,其特征在于,在所述流式多处理器中,针对每一个所述任务设置一个所述任务计数器,每个所述任务计数器用于记录所述任务计数器对应的所述任务的被调度执行次数。
3.根据权利要求2所述的用于GPU的多任务调度方法,其特征在于,所述任务计数器为寄存器。
4.根据权利要求3所述的用于GPU的多任务调度方法,其特征在于,所述任务计数器为32bit寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110095808.2A CN112860395B (zh) | 2021-01-25 | 2021-01-25 | 用于gpu的多任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110095808.2A CN112860395B (zh) | 2021-01-25 | 2021-01-25 | 用于gpu的多任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112860395A CN112860395A (zh) | 2021-05-28 |
CN112860395B true CN112860395B (zh) | 2022-03-25 |
Family
ID=76008419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110095808.2A Active CN112860395B (zh) | 2021-01-25 | 2021-01-25 | 用于gpu的多任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112860395B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081551A (zh) * | 2011-01-28 | 2011-06-01 | 中国人民解放军国防科学技术大学 | 一种感知微体系结构信息的操作系统线程调度方法 |
CN104182281A (zh) * | 2014-08-25 | 2014-12-03 | 浙江大学城市学院 | 一种gpgpu寄存器缓存的实现方法 |
CN109144696A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN111367652A (zh) * | 2020-01-07 | 2020-07-03 | 苏州大学 | 一种嵌入式实时操作系统的任务调度处理系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004234123A (ja) * | 2003-01-28 | 2004-08-19 | Fujitsu Ltd | マルチスレッドコンピュータ |
CN101510164B (zh) * | 2009-03-25 | 2013-05-22 | 北京中星微电子有限公司 | 一种多业务调度方法、装置与系统 |
-
2021
- 2021-01-25 CN CN202110095808.2A patent/CN112860395B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081551A (zh) * | 2011-01-28 | 2011-06-01 | 中国人民解放军国防科学技术大学 | 一种感知微体系结构信息的操作系统线程调度方法 |
CN104182281A (zh) * | 2014-08-25 | 2014-12-03 | 浙江大学城市学院 | 一种gpgpu寄存器缓存的实现方法 |
CN109144696A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN111367652A (zh) * | 2020-01-07 | 2020-07-03 | 苏州大学 | 一种嵌入式实时操作系统的任务调度处理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112860395A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ramos-Thuel et al. | On-line scheduling of hard deadline aperiodic tasks in fixed-priority systems | |
US8365179B2 (en) | Multi-thread processor and its hardware thread scheduling method | |
EP2562644B1 (en) | Systems and methods for bounding processing times on multiple processing units | |
CN111767134A (zh) | 一种多任务动态资源调度方法 | |
CN105204938B (zh) | 一种内存访问的数据密集型进程调度方法 | |
Huang et al. | A workflow for runtime adaptive task allocation on heterogeneous MPSoCs | |
Tang et al. | Combining hard periodic and soft aperiodic real-time task scheduling on heterogeneous compute resources | |
US10271326B2 (en) | Scheduling function calls | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
Liu et al. | Supporting graph-based real-time applications in distributed systems | |
CN109582436A (zh) | 基于容器集群平台的细粒度抢占式资源调度系统及方法 | |
US9760969B2 (en) | Graphic processing system and method thereof | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN111045800A (zh) | 一种基于短作业优先的优化gpu性能的方法及系统 | |
CN112860395B (zh) | 用于gpu的多任务调度方法 | |
Bauer et al. | PATS: a performance aware task scheduler for runtime reconfigurable processors | |
Horowitz | A run-time execution model for referential integrity maintenance | |
Markthub et al. | Using rcuda to reduce gpu resource-assignment fragmentation caused by job scheduler | |
CN112346836A (zh) | 共享计算资源的抢占方法、装置、用户设备及存储介质 | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
Kim et al. | Using DVFS and task scheduling algorithms for a hard real-time heterogeneous multicore processor environment | |
Jin et al. | Preemption-aware kernel scheduling for gpus | |
Singh et al. | Reconciling QoS and concurrency in NVIDIA GPUs via warp-level scheduling | |
CN114661415A (zh) | 调度方法及计算机系统 | |
KR20220065037A (ko) | 다중 스레드 마이크로프로세서의 공유 리소스 할당 |
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 |