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

文档序号:12596638阅读:来源:国知局

技术特征:

1.一种图形处理器GPU资源的分配方法,其特征在于,所述方法应用于GPU资源的分配系统中,所述系统包括全局逻辑控制器以及至少两个能够与所述全局逻辑控制器通信的流式多处理器SM,所述方法包括:

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

所述全局逻辑控制器从SM状态寄存器表中查找能够运行至少一个完整block的SM,所述SM状态寄存器表中包括每个SM中的剩余资源量以及每个SM中block的最高优先级;

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

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

当所述全局逻辑控制器未查找到所述第一SM时,查找第二SM,所述第二SM中block的最高优先级低于所述待分发kernel程序的优先级;

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

2.根据权利要求1所述的GPU资源的分配方法,其特征在于,在所述全局逻辑控制器从SM状态寄存器表中查找能够运行至少一个完整block的SM之后,所述方法还包括:

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

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

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

3.根据权利要求2所述的GPU资源的分配方法,其特征在于,在所述全局逻辑控制器将所述待分发kernel程序中的block分发给所述第二SM之后,所述方法还包括:

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

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

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

4.根据权利要求1至3中任一项所述的GPU资源的分配方法,其特征在于,所述SM状态寄存器表中包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,所述第一SM为所述剩余寄存器数量大于运行一个warp所需的寄存器数量、所述剩余硬件warp数量大于运行一个warp所需的硬件warp数量且所述剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

5.根据权利要求4所述的GPU资源的分配方法,其特征在于,在所述当所述第二SM逻辑控制器确定所述空闲硬件warp能够运行一个warp,且未接收到优先级更高的block时,将所述优先级最高的block中的一个warp分发给所述硬件warp之后,所述方法还包括:

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

当所述第二SM逻辑控制器确定所述运行完成的warp所属block中不存在未运行的warp时,确定所述第二SM中未运行完成的block的最高优先级,通知所述全局逻辑控制器更新所述SM状态寄存器表中的所述第二SM中block的最高优先级。

6.一种图形处理器GPU资源的分配系统,其特征在于,所述系统包括全局逻辑控制器以及至少两个能够与所述全局逻辑控制器通信的流式多处理器SM;所述全局逻辑控制器包括:第一确定单元、第一查找单元以及第一分发单 元;

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

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

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

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

所述第一查找单元,还用于当未查找到所述第一SM时,查找第二SM,所述第二SM中block的最高优先级低于所述待分发kernel程序的优先级;

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

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

7.根据权利要求6所述的GPU资源的分配系统,其特征在于,

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

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

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

8.根据权利要求7所述的GPU资源的分配系统,其特征在于,所述第二SM包括第二确定单元、第二查找单元以及第二分发单元;

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

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

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

9.根据权利要求6至8中任一项所述的GPU资源的分配系统,其特征在于,所述SM状态寄存器表中包括每个SM的剩余寄存器数量、剩余硬件warp数量以及剩余共享存储空间,所述第一SM为所述剩余寄存器数量大于运行一个warp所需的寄存器数量、所述剩余硬件warp数量大于运行一个warp所需的硬件warp数量且所述剩余共享存储空间大于运行一个warp所需的共享存储空间的SM。

10.根据权利要求9所述的GPU资源的分配系统,其特征在于,所述第二SM中还包括通知单元;

所述通知单元,用于当确定所述第二SM中有运行完成的warp时,通知所述全局逻辑控制器更新所述第二SM的剩余寄存器数量、剩余warp数量以及剩余共享存储空间;当所确定所述运行完成的warp所属block中不存在未运行的warp时,确定所述第二SM中未运行完成的block的最高优先级,通知所述全局逻辑控制器更新所述SM状态寄存器表中的所述第二SM中block的最高优先级。

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