一种GPU资源的分配方法及系统与流程

文档序号:12596636阅读:910来源:国知局
一种GPU资源的分配方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种GPU资源的分配方法及系统。



背景技术:

随着GPU(Graphic Processing Unit,图形处理器)通用技术的发展,GPU不仅能够处理图像负载,也能够处理特定类型的通用程序。目前,当有多个不同的kernel程序需要访问GPU时,一般是以序列化的方式使请求访问GPU的kernel程序按照发送请求的时间顺序逐个访问GPU。如果一个延迟很长的kernel程序正在占用GPU,当有优先级更高的kernel程序需要访问GPU时,必须等前面正在访问GPU的kernel程序以及正在等待访问GPU的kernel程序运行结束后,释放出GPU中的SM(Stream Multiprocessor,流式多处理器)资源,该优先级更高的kernel程序才能访问GPU,使得该优先级更高的kernel程序得不到及时响应,影响业务质量。

为了避免延时长的kernel程序长时间独占GPU中的SM资源,当有高优先级的kernel程序需要访问GPU时,可以查找空闲的SM,当查找到空闲的SM时,将高优先级的kernel程序分发给该空闲的SM运行。

然而,如果GPU中没有空闲的SM,则需要等待GPU中出现空闲的SM时,才能够开始运行高优先级的kernel程序,导致高优先级的kernel程序得不到及时的响应。



技术实现要素:

本发明的实施例提供一种GPU资源的分配方法及系统,可以解决高优先级的kernel程序得不到及时响应的问题。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明实施例一种图形处理器GPU资源的分配方法,所述方法应用于GPU资源的分配系统中,所述系统包括全局逻辑控制器以及至少两个能够与所述全局逻辑控制器通信的流式多处理器SM,所述方法包括:

所述全局逻辑控制器从核kernel状态寄存器表中确定待分发kernel程序,所述kernel状态寄存器表中包括每个未完成运行的kernel程序的优先级以及每个未完成运行的kernel程序中未分发的线程块block数量,所述待分发kernel 程序为所述kernel状态寄存器表中优先级最高且未分发的block数量不为零的kernel程序;

所述全局逻辑控制器从SM状态寄存器表中查找能够运行至少一个完整block的SM,所述SM状态寄存器表用于存储每个SM中的剩余资源量;

当所述全局逻辑控制器未查找到能够运行至少一个完整block的SM时,从所述SM状态寄存器表中查找第一SM,所述第一SM为能够运行至少一个线程束warp的SM;

当所述全局逻辑控制器查找到所述第一SM时,将所述待分发kernel程序中的block分发给所述第一SM。

在第一种可能的实施例中,结合第一方面,在所述全局逻辑控制器从SM状态寄存器表中查找能够运行至少一个完整block的SM之后,所述方法还包括:

当所述全局逻辑控制器查找到能够运行至少一个完整block的SM时,确定第一数量,所述第一数量为所述能够运行一个完整block的SM实际能够运行的block的数量;

当所述待分发kernel程序中未分发的block的数量大于所述第一数量时,将所述待分发kernel程序中所述第一数量的block分发给所述能够运行至少一个完整block的SM;

当所述待分发kernel程序中未分发的block的数量小于或等于所述第一数量时,将所述待分发kernel程序中未分发的block全部分发给所述能够运行至少一个完整block的SM。

在第二种可能的实施例中,结合第一方面中的第一种可能的实施例,在所述全局逻辑控制器将所述待分发kernel程序中的一个block分发给所述第一SM之后,所述方法还包括:

第一SM逻辑控制器从block状态寄存器表中确定优先级最高的block,所述第一SM逻辑控制器为所述第一SM中的SM逻辑控制器,所述block状态寄存器表包括被分发到所述第一SM中的每个block的优先级;

所述第一SM逻辑控制器查找当前的空闲硬件warp;

当所述第一SM逻辑控制器确定所述空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将所述优先级最高的block中的一个warp分发给所述空闲硬件warp,并更新所述block状态寄存器表。

在第三种可能的实施例中,结合第一方面或第一方面中上述任一种可能的 实施例,所述SM状态寄存器表中包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,所述第一SM为所述剩余寄存器数量大于运行一个warp所需的寄存器数量、所述剩余硬件warp数量大于运行一个warp所需的硬件warp数量且所述剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

在第四种可能的实施例中,结合第一方面中第三种可能的实施例,在所述当所述第一SM逻辑控制器确定所述空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将所述优先级最高的block中的一个warp分发给所述硬件warp之后,所述方法还包括:

所述第一SM逻辑控制器确定有运行完成的warp时,通知所述全局逻辑控制器更新所述SM状态寄存器表中的所述第一SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间。

第二方面,本发明实施例提供一种图形处理器GPU资源的分配系统,所述系统包括全局逻辑控制器以及至少两个能够与所述全局逻辑控制器通信的流式多处理器SM;所述全局逻辑控制器包括:第一确定单元、第一查找单元以及第一分发单元;

所述第一确定单元,用于确定待分发kernel程序,所述kernel状态寄存器表中包括每个未完成运行的kernel程序的优先级以及每个未完成运行的kernel程序中未分发的block数量,所述待分发kernel程序为所述kernel状态寄存器表中优先级最高且未分发的block数量不为零的kernel程序;

所述第一查找单元,用于从SM状态寄存器表中查找能够运行至少一个完整block的SM,所述SM状态寄存器表用于存储每个SM中的剩余资源量;当未查找到能够运行至少一个完整线程块block的SM时,从所述SM状态寄存器表中查找第一SM,所述第一SM为能够运行至少一个线程束warp的SM;

所述第一分发单元,用于当查找到所述第一SM时,将所述待分发kernel程序中的block分发给所述第一SM;

所述第一SM,用于运行所述第一单元分发的所述待分发kernel程序中的block。

在第一种可能的实施例中,结合第二方面,所述第一确定单元,还用于当所述第一查找单元查找到能够运行至少一个完整block的SM时,确定第一数量,所述第一数量为所述能够运行一个完整block的SM实际能够运行的block的数 量;

所述第一分发单元,还用于当所述待分发kernel程序中未分发的block的数量大于所述第一数量时,将所述待分发kernel程序中所述第一数量的block分发给所述能够运行至少一个完整block的SM;当所述待分发kernel程序中未分发的block的数量小于或等于所述第一数量时,将所述待分发kernel程序中未分发的block全部分发给所述能够运行至少一个完整block的SM;

所述能够运行至少一个完整block的SM,用于运行所述第一分发单元分发的所述待分发kernel程序中的block。

在第二种可能的实施例中,结合第二方面中的第一种可能的实施例,所述第一SM包括:

第二确定单元,用于从block状态寄存器表中确定优先级最高的block,所述第一SM逻辑控制器为所述第一SM中的SM逻辑控制器,所述block状态寄存器表包括被分发到所述第一SM中的每个block的优先级;

第二查找单元,用于查找当前的空闲硬件warp;

第二分发单元,用于当确定所述空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将所述优先级最高的block中的一个warp分发给所述空闲硬件warp,并更新所述block状态寄存器表。

在第三种可能的实施例中,结合第二方面或第二方面中上述任一种可能的实施例,所述SM状态寄存器表中包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,所述第一SM为所述剩余寄存器数量大于运行一个warp所需的寄存器数量、所述剩余硬件warp数量大于运行一个warp所需的硬件warp数量且所述剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

在第四种可能的实施例中,结合第三种可能的实施例,所述第一SM还包括:通知单元;

所述通知单元,用于当确定有运行完成的warp时,通知所述全局逻辑控制器更新所述SM状态寄存器表中的所述第一SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间。

本发明实施例提供的GPU资源的分配方法及系统,全局逻辑控制器从kernel状态寄存器表中确定待分发kernel程序,从SM状态寄存器表中查找能够运行至少一个完整block的SM,当未查找到能够运行至少一个block的SM时,则 继续查找能够运行至少一个warp的第一SM,将待分发kernel程序中的block分发给第一SM。与现有技术中必须等待GPU中有空闲的SM时,才能将高优先级kernel中的block分发给该SM而导致高优先级的kernel程序得不到及时响应相比,本发明实施例中,当未查找到能够运行至少一个block的SM时,不是等待其他kernel程序释放资源,而是查找能够运行至少一个warp的第一SM,由于warp比block小,所以运行完一个warp比运行完一个block更快,所以更容易查找到能够运行至少一个warp的SM,查找到之后就可以将待分发kernel程序的一个block分发给第一SM,无需等待低优先级的kernel程序运行完一个block,提高了高优先级的kernel程序的响应速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种GPU资源的分配系统的逻辑结构示意图;

图2为本发明实施例提供的一种GPU资源的分配方法的流程图;

图3为本发明实施例提供的另一种GPU资源的分配方法的流程图;

图4为本发明实施例提供的另一种GPU资源的分配方法的流程图;

图5为本发明实施例提供的另一种GPU资源的分配系统的逻辑结构示意图;

图6为本发明实施例提供的另一种GPU资源的分配系统的逻辑结构示意图;

图7为本发明实施例提供的一种GPU资源的分配装置的逻辑结构示意图;

图8为本发明实施例提供的另一种GPU资源的分配装置的逻辑结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施应用于GPU资源的分配系统中,如图1所示,该系统包括全局调度器101以及能够与全局调度器101通信的至少两个SM 102。

其中,全局调度器101包括:全局逻辑控制器1011、kernel状态寄存器表1012以及SM状态寄存器表1013。

SM102包括:SM逻辑控制器1021以及block状态寄存器表1022。

全局调度器101,用于将kernel程序分发给SM102运行。

全局逻辑控制器1011,用于根据kernel状态寄存器表1012以及SM状态寄存器表1013将kernel程序以block为粒度或者以warp为粒度分发给SM102。

需要说明的是,在本发明实施例中kernel(核)程序为能够在GPU上运行的程序,一个kernel程序包含至少两个block(线程块),一个block包含至少两个warp(线程束),warp为32个GPU线程组成的一组线程。

kernel状态寄存器表1012,用于存储每个未完成运行的kernel程序信息。

其中,kernel程序信息包括kernel程序的优先级、运行该kernel程序需要的寄存器数量、运行该kernel程序需要的共享存储空间、该kernel程序中还未分发的block数量。

SM状态寄存器表1013,用于存储每个SM102当前的剩余资源量。

其中,每个SM102当前的剩余资源量包括剩余的寄存器数量、剩余的硬件warp数量以及剩余的共享存储空间。

SM102,用于运行全局调度器101分发的kernel程序。

SM逻辑控制器1021,用于根据block状态寄存器表将block中的warp分发给硬件warp运行。

block状态寄存器表1022,用于存储每个block的运行情况。

其中,block的运行情况包括block的优先级、block所属kernel的编号,block在kernel中的编号,block中未运行部分所需的寄存器数和所需的共享存储空间,以及block中还未分发的warp数。

为了加快高优先级的kernel程序的响应速度,本发明实施例提供一种GPU资源的分配方法,该方法应用于图1所示的GPU资源分配系统中,如图2所示,该方法包括:

201、全局逻辑控制器从核kernel状态寄存器表中确定待分发kernel程序。

其中,kernel状态寄存器表中包括每个未完成运行的kernel程序的优先级以及每个未完成运行的kernel程序中未分发的block数量,待分发kernel程序为 kernel状态寄存器表中优先级最高且未分发的block数量不为零的kernel程序。

202、全局逻辑控制器从SM状态寄存器表中查找能够运行至少一个完整block的SM,SM状态寄存器表用于存储每个SM中的剩余资源量。

其中,SM状态寄存器表中具体包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间。能够运行至少一个完整block的SM为剩余寄存器数量大于运行一个block所需的寄存器数量、剩余硬件warp数量大于运行一个block所需的硬件warp数量且剩余共享存储空间大于运行一个block所需的共享存储空间的SM。

举例说明,例如运行一个block需要36kb的寄存器,而一个SM中只剩下20kb的寄存器,则该SM不能运行一个block。

203、当全局逻辑控制器未查找到能够运行至少一个完整block的SM时,从SM状态寄存器表中查找第一SM,第一SM为能够运行至少一个warp的SM。

可以理解的是,第一SM为剩余寄存器数量大于运行一个warp所需的寄存器数量、剩余硬件warp数量大于运行一个warp所需的硬件warp数量且剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

需要说明的是,当运行一个block需要36kb寄存器,而剩余资源量最多的SM只剩余12kb的寄存器时,全局逻辑控制器查找不到能够运行至少一个block的SM,而运行一个warp只需要6kb寄存器,此时剩余12kb寄存器的SM可以运行两个warp,即全局逻辑控制器能够查找到第一SM。

204、当全局逻辑控制器查找到第一SM时,将待分发的kernel程序中的block分发给第一SM。

其中,如果第一SM的剩余资源只能运行一个warp,则将待分发kernel程序中的block分发给第一SM后,第一SM会将block中的warp逐个运行。

值得说明的是,当全局逻辑控制器未查找到第一SM时,则返回步骤201重新执行,等待正在运行的低优先级的kernel中的一个warp运行完成后,全局逻辑控制器即可查找到第一SM。

本发明实施例提供的GPU资源的分配方法,全局逻辑控制器从kernel状态寄存器表中确定待分发kernel程序,从SM状态寄存器表中查找能够运行至少一个完整block的SM,当未查找到能够运行至少一个block的SM时,则继续查找能够运行至少一个warp的第一SM,将待分发kernel程序中的block分发给第一SM。与现有技术中必须等待GPU中有空闲的SM时,才能将高优先级kernel 中的block分发给该SM而导致高优先级的kernel程序得不到及时响应相比,本发明实施例中,当未查找到能够运行至少一个block的SM时,不是等待其他kernel程序释放资源,而是查找能够运行至少一个warp的第一SM,由于warp比block小,所以运行完一个warp比运行完一个block更快,所以更容易查找到能够运行至少一个warp的SM,查找到之后就可以将待分发kernel程序的一个block分发给第一SM,无需等待低优先级的kernel程序运行完一个block,提高了高优先级的kernel程序的响应速度。

作为对上述实施例的补充,在本发明实施例提供的另一种实现方式中,如图3所示,在上述步骤202、全局逻辑控制器从SM状态寄存器表中查找能够运行至少一个完整block的SM之后,如果查找到能够运行至少一个完整block的SM,则执行下述步骤205至207。

205、当全局逻辑控制器查找到能够运行至少一个完整block的SM时,确定第一数量,第一数量为能够运行一个完整block的SM实际能够运行的block的数量。

其中,第一数量为全局逻辑控制器通过能够运行至少一个完整block的SM中的SM状态寄存器表确定的。全局逻辑控制器能够根据SM状态寄存器表中存储的SM的剩余资源量以及运行一个block所需的资源量计算出该SM实际能够运行的block数量。

206、当待分发kernel程序中未分发的block的数量大于第一数量时,将待分发kernel程序中第一数量的block分发给能够运行至少一个完整block的SM。

值得说明的是,当待分发kernel程序中包含的block数量大于第一数量时,说明查找到的SM的剩余资源不足以运行该待分发kernel程序中的所有block,所以先将第一数量的block分发给该SM,当有block运行完成释放出SM中的资源后,再将该待分发kernel中剩余的block分发给SM。

207、当待分发kernel程序中未分发的block的数量小于或等于第一数量时,将待分发kernel程序中未分发的block全部分发给能够运行至少一个完整block的SM。

值得说明的是,在上述步骤204、206以及207向全局逻辑控制器向SM分发block后,都需要更新kernel状态寄存器中待分发kernel程序中未分发的block数量。

本发明实施例提供的GPU资源的分配方法,当全局逻辑控制器查找到能够 运行至少一个block的SM时,确定第一数量,当待分发kernel程序中未分发的block的数量大于第一数量时,将待分发kernel程序中第一数量的block分发给能够运行至少一个完整block的SM;当待分发kernel程序中包含的block的数量小于或等于第一数量时,将待分发kernel程序中的未分发的block全部分发给能够运行至少一个完整block的SM。在能够查找到运行至少一个block的SM时,将优先级最高的kernel中尽可能多的block分发给该SM,可以使优先级最高的kernel得到及时的响应,提高了高优先级的kernel程序的响应速度。

在全局逻辑控制器将block分发给SM后,SM需合理的将block中的warp分发运行,所以本发明另一实施例提供了在步骤204、当全局逻辑控制器查找到第一SM时,将待分发kernel程序中的一个block分发给第一SM之后,第一SM逻辑控制器分发warp的方法,如图4所示,该方法包括:

401、第一SM逻辑控制器从block状态寄存器表中确定优先级最高的block,第一SM逻辑控制器为第一SM中的SM逻辑控制器,block状态寄存器表包括被分发到第一SM中的每个block的优先级。

结合图1所示的GPU资源的分配系统,全局逻辑控制器连接于至少两个SM,当全局逻辑控制器将优先级最高的kernel程序中的一个block分发给第一SM后,第一SM中的第一SM逻辑控制器需将该block中的warp分发给硬件warp运行。

由于第一SM中还正在运行其他kernel中的block,或者还有其他kernel程序中的block正在等待运行,所以第一SM逻辑控制器需要从block状态寄存器表中确定优先级最高的block,优先运行优先级最高的block中的warp。

值得说明的是,block状态寄存器中存储的block的优先级为block所属kernel的优先级,同一kernel中的block的优先级是相同的。

402、第一SM逻辑控制器查找当前的空闲硬件warp。

需要说明的是,当第一SM逻辑控制器查找到空闲硬件warp时,则执行下述步骤403;当第一SM逻辑控制器未查找到空闲硬件warp时,则重复查找动作,直到查找到空闲的硬件warp再继续执行下述步骤403。

由于第一SM中还有低优先级的kernel程序正在运行,所以,等待低优先级的kernel程序中有warp运行结束后,就会有硬件warp恢复空闲状态,此时第一SM逻辑控制器就能够查找到空闲硬件warp,高优先级的kernel程序中的warp即可占用该硬件warp。

403、当第一SM逻辑控制器确定空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将优先级最高的block中的一个warp分发给空闲硬件warp,并更新block状态寄存器表。

其中,判断空闲硬件warp是否能够运行一个warp的方法为:判断第一SM中的寄存器数量是否足够运行一个warp,如果足够,且此时第一SM未接收到优先级更高的block时,则将此时优先级最高的block中的一个warp分发给查找到的空闲硬件warp;如果不够,则继续等待,直到有warp运行结束,寄存器数量足够运行一个warp时,再向该空闲硬件warp分发一个warp。

值得说明的是,将优先级最高的block中的一个warp分发给空闲硬件warp后,还需判断该优先级最高的block是否分发完毕,若是,则重新执行上述步骤401至403;若否,则重新执行上述步骤402至403。

本发明实施例提供的GPU资源的分配方法,第一SM逻辑控制器首先查找空闲硬件warp,当查找到空闲硬件warp且此时第一SM能够运行一个warp时,就将优先级最高的block中的一个warp分发给硬件warp运行,无需等待第一SM中有能够运行整个block的资源后再将整个block分发给硬件warp运行,减少了等待时间,提高了高优先级kernel程序的响应速度。

为了减少SM中的空闲资源,提高SM的资源利用率,以加快高优先级kernel程序的响应速度,在本发明实施例提供的另一种实现方式中,当第一SM逻辑控制器确定有运行完成的warp时,通知全局逻辑控制器更新SM状态寄存器表中的第一SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间。

可以理解的是,当运行完一个warp时,运行该warp所需的寄存器、硬件warp以及共享存储都会被释放,所以需要实时更新SM状态寄存器表中的第一SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,以便于全局逻辑控制器及时为该SM下发block。

本发明实施例提供的GPU资源的分配方法,当第一逻辑控制器确定有运行完成的warp时,通知全局逻辑控制器更新SM状态寄存器表,使得全局逻辑控制器可以根据最新的SM剩余资源量以及还未分发的block数,及时向SM下发高优先级kernel中的block,提高了SM的资源利用率,同时加快了高优先级的kernel程序的响应速度。

结合图2至图4所示的GPU资源的分配方法,本发明实施例还提供一种GPU资源的分配系统,如图5所示,该系统包括全局逻辑控制器501以及至少 两个能够与全局逻辑控制器501通信的流式多处理器SM;全局逻辑控制器包括:第一确定单元5011、第一查找单元5012以及第一分发单元5013。

需要说明的是,该系统中的SM可以为能够运行至少一个完整block的SM502或第一SM503。

其中,第一SM503为能够运行至少一个线程束warp的SM。

第一确定单元5011,用于确定待分发kernel程序,kernel状态寄存器表中包括每个未完成运行的kernel程序的优先级以及每个未完成运行的kernel程序中未分发的block数量,待分发kernel程序为kernel状态寄存器表中优先级最高且未分发的block数量不为零的kernel程序。

第一查找单元5012,用于从SM状态寄存器表中查找能够运行至少一个完整block的SM,SM状态寄存器表用于存储每个SM中的剩余资源量;当未查找到能够运行至少一个完整线程块block的SM时,从SM状态寄存器表中查找第一SM503。

第一分发单元5013,用于当查找到第一SM503时,将待分发kernel程序中的block分发给第一SM503。

第一SM503,用于运行第一分发单元5013分发的待分发kernel程序中的block。

在本发明另一实施例中,第一确定单元5011,还用于当第一查找单元5012查找到能够运行至少一个完整block的SM时,确定第一数量,第一数量为能够运行一个完整block的SM实际能够运行的block的数量;

第一分发单元5013,还用于当待分发kernel程序中未分发的block的数量大于第一数量时,将待分发kernel程序中第一数量的block分发给能够运行至少一个完整block的SM;当待分发kernel程序中未分发的block的数量小于或等于第一数量时,将待分发kernel程序中未分发的block全部分发给能够运行至少一个完整block的SM502。

能够运行至少一个完整block的SM502,用于运行第一分发单元5013分发的待分发kernel程序中的block。

在本发明另一实施例中,如图6所示,第一SM503包括第二确定单元5031、第二查找单元5032、第二分发单元5033以及通知单元5034。

需要说明的是,第二确定单元5031、第二查找单元5032以及第二分发单元5033具体位于第一SM503中的第一SM逻辑控制器中。

第二确定单元5031,位于第一SM503逻辑控制器中,用于从block状态寄存器表中确定优先级最高的block,所述第一SM503逻辑控制器为第一SM503中的SM逻辑控制器,block状态寄存器表包括被分发到第一SM503中的每个block的优先级。

第二查找单元5032,位于第一SM503逻辑控制器中,用于查找当前的空闲硬件warp。

第二分发单元5033,位于第一SM503逻辑控制器中,用于当确定空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将优先级最高的block中的一个warp分发给空闲硬件warp,并更新block状态寄存器表。

需要说明的是,能够运行至少一个个完整block的SM502与第一SM503的组成结构相同,在本发明实施例中不再一一说明。

值得说明的是,SM状态寄存器表中包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,第一SM503为剩余寄存器数量大于运行一个warp所需的寄存器数量、剩余硬件warp数量大于运行一个warp所需的硬件warp数量且剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

第二确定单元5031,还用于确定是否有运行完成的warp。

通知单元5034,位于第一SM503逻辑控制器中,用于当第二确定单元5031确定有运行完成的warp时,通知全局逻辑控制器501更新SM状态寄存器表中的第一SM503的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间。

本发明实施例提供的GPU资源的分配系统,全局逻辑控制器中的第一确定单元从kernel状态寄存器表中确定待分发kernel程序,第一查找单元从SM状态寄存器表中查找能够运行至少一个完整block的SM,当未查找到能够运行至少一个block的SM时,则继续查找能够运行至少一个warp的第一SM,第一分发单元将待分发kernel程序中的block分发给第一SM。与现有技术中必须等待GPU中有空闲的SM时,才能将高优先级kernel中的block分发给该SM而导致高优先级的kernel程序得不到及时响应相比,本发明实施例中,当未查找到能够运行至少一个block的SM时,不是等待其他kernel程序释放资源,而是查找能够运行至少一个warp的第一SM,由于warp比block小,所以运行完一个warp比运行完一个block更快,所以更容易查找到能够运行至少一个warp的SM,查找到之后就可以将待分发kernel程序的一个block分发给第一SM,无需等待低 优先级的kernel程序运行完一个block,提高了高优先级的kernel程序的响应速度。

本发明实施例还提供一种GPU资源的分配装置,如图7所示,该装置中包括全局逻辑控制器以及至少两个能够与全局逻辑控制器通信的SM。其中,SM可以为能够运行至少一个完整block的SM或者第一SM。全局逻辑控制器可包括存储器71、收发器72、处理器73和总线74,其中,存储器71、收发器72、处理器73通过总线74通信连接。

存储器71可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器71可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明实施例提供的技术方案的程序代码保存在存储器71中,并由处理器73来执行。

收发器72用于装置与其他设备或通信网络(例如但不限于以太网,无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local Area Network,WLAN)等)之间的通信。

处理器73可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。

总线74可包括一通路,在装置各个部件(例如存储器71、收发器72和处理器73)之间传送信息。

应注意,尽管图7所示的硬件仅仅示出了存储器71、收发器72和处理器73以及总线74,但是在具体实现过程中,本领域的技术人员应当明白,该终端还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,还可包含实现其他功能的硬件器件。

具体的,图7所示的全局逻辑控制器用于实现图5实施例所示的系统时,该装置中的处理器73,与存储器71和收发器72耦合,用于控制程序指令的执行,具体用于确定待分发kernel程序,kernel状态寄存器表中包括每个未完成运行的kernel程序的优先级以及每个未完成运行的kernel程序中未分发的block数量,待分发kernel程序为kernel状态寄存器表中优先级最高且未分发的block数量不为零的kernel程序;从SM状态寄存器表中查找能够运行至少一个完整 block的SM,SM状态寄存器表用于存储每个SM中的剩余资源量;当未查找到能够运行至少一个完整线程块block的SM时,从SM状态寄存器表中查找第一SM,第一SM为能够运行至少一个线程束warp的SM。

收发器72,用于当查找到第一SM时,将待分发kernel程序中的block分发给第一SM。

存储器71,用于存储kernel状态寄存器表和SM状态寄存器表。

处理器73,还用于当第一查找单元查找到能够运行至少一个完整block的SM时,确定第一数量,第一数量为能够运行一个完整block的SM实际能够运行的block的数量。

收发器72,还用于当待分发kernel程序中未分发的block的数量大于第一数量时,将待分发kernel程序中第一数量的block分发给能够运行至少一个完整block的SM;当待分发kernel程序中未分发的block的数量小于或等于第一数量时,将待分发kernel程序中未分发的block全部分发给能够运行至少一个完整block的SM。

在本发明另一实施例中,如图8所示,第一SM包括存储器81、收发器82、处理器83和总线84,其中,存储器81、收发器82、处理器83通过总线84通信连接。

存储器81可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器81可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明实施例提供的技术方案的程序代码保存在存储器81中,并由处理器83来执行。

收发器82用于装置与其他设备或通信网络(例如但不限于以太网,无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local Area Network,WLAN)等)之间的通信。

处理器83可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。

总线84可包括一通路,在装置各个部件(例如存储器81、收发器82和处理器83)之间传送信息。

应注意,尽管图8所示的硬件仅仅示出了存储器81、收发器82和处理器83以及总线84,但是在具体实现过程中,本领域的技术人员应当明白,该终端还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,还可包含实现其他功能的硬件器件。

具体的,图8所示的第一SM用于实现图5和图6实施例所示的系统时,该装置中的处理器83,与存储器81和收发器82耦合,用于控制程序指令的执行,具体用于从block状态寄存器表中确定优先级最高的block,第一SM逻辑控制器为第一SM中的SM逻辑控制器,block状态寄存器表包括被分发到第一SM中的每个block的优先级;用于查找当前的空闲硬件warp。

收发器82,用于当确定空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将优先级最高的block中的一个warp分发给空闲硬件warp,并更新block状态寄存器表。

值得说明的是,SM状态寄存器表中包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,第一SM为剩余寄存器数量大于运行一个warp所需的寄存器数量、剩余硬件warp数量大于运行一个warp所需的硬件warp数量且剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

收发器83,还用于当确定有运行完成的warp时,通知全局逻辑控制器更新SM状态寄存器表中的第一SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间。

本发明实施例提供的GPU资源的分配装置,处理器从kernel状态寄存器表中确定待分发kernel程序,从SM状态寄存器表中查找能够运行至少一个完整block的SM,当未查找到能够运行至少一个block的SM时,则继续查找能够运行至少一个warp的第一SM,收发器将待分发kernel程序中的block分发给第一SM。与现有技术中必须等待GPU中有空闲的SM时,才能将高优先级kernel中的block分发给该SM而导致高优先级的kernel程序得不到及时响应相比,本发明实施例中,当未查找到能够运行至少一个block的SM时,不是等待其他kernel程序释放资源,而是查找能够运行至少一个warp的第一SM,由于warp比block小,所以运行完一个warp比运行完一个block更快,所以更容易查找到能够运行至少一个warp的SM,查找到之后就可以将待分发kernel程序的一个block分发给第一SM,无需等待低优先级的kernel程序运行完一个block,提高了高优先级的kernel程序的响应速度。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1