GPU制造技术

技术编号:39516768 阅读:10 留言:0更新日期:2023-11-25 18:54
本申请公开了一种

【技术实现步骤摘要】
GPU及相关方法


[0001]本申请涉及一种
GPU
,尤其涉及一种能够平行处理多个内核代码的
GPU。

技术介绍

[0002]由于绘图处理器
(graphic processing unit

GPU)
具有并行计算的特性,因此除了被用来绘制三维影像之外,也常被用来加速需要大量并行计算的人工智能模型或大数据分析

一般来说,
GPU
可包括多个流处理器组
(streaming multipleprocessor

SM)
,而每个流处理器组则可包括多个流处理器
(streaming processor

SP)。
当中央处理器欲利用
GPU
来执行计算时,会将所需执行的运算包裹成多个内核代码
(kernel code)
,其中每一个内核代码可包括多个线程块
(thread block)
,而每一线程块可包括多个线程束

在此情况下,
GPU
可依序将每一内核代码中的多个线程块分配至其中的多个流处理器组来执行,而每一个流处理器组中的多个流处理器则可以平行地执行线程块中对应线程束的多个线程

[0003]在有些情况下,为了提高
GPU
的运算效能,中央处理器可以将不具有相依性的内核代码放进不同的内核流,而当
GPU
接收到多个内核流时,便可并行地执行不同内核流中的内核代码,从而提高运算效能

然而,由于每一个内核流中的多个内核代码仍有固定的执行顺序,且有些不同的内核代码对于同类型的硬件资源可能存在竞争关系,因此
GPU
在调度内核代码时仍然有相当的限制,而难以有效提升
GPU
的硬件使用率

也就是说,如何调度多个内核流中的内核代码以提升
GPU
的整体运算效率,仍是本领域亟需解决的问题


技术实现思路

[0004]本申请的目的之一在于公开一种
GPU
及相关方法来解决上述问题

[0005]本申请的一实施例提供一种
GPU
,用于执行多个内核流
(stream)
,每一内核流包含需依序执行的多个内核代码
(kernel)
,且每一内核代码包括多个线程块
(thread block)。
所述
GPU
包括多个流处理器组

可用硬件资源表

资源比较器

流排程器及全局调度器

每一流处理器组用以执行至少一线程块

所述可用硬件资源表用以记录所述多个流处理器组的可用硬件资源

所述资源比较器用以依据所述可用硬件资源表,自所述多个内核流中的多个第一顺位内核代码选出所需硬件资源小于所述多个流处理器组的可用硬件资源的至少一第一可调度内核代码

所述流排程器用以自所述至少一第一可调度内核代码选择一内核代码作为选定内核代码

所述全局调度器用以将所述选定内核代码中的多个线程块分配至所述多个流处理器组执行,及依据所述多个流处理器组的硬件资源使用状态更新所述可用硬件资源表

[0006]本申请的另一实施例提供一种
GPU
方法,用于执行多个内核流,其中每一内核流包含需依序执行的多个内核代码,及每一内核代码包括多个线程块

所述方法包括将多个流处理器组的可用硬件资源记录在可用硬件资源表;依据所述可用硬件资源表,自所述多个内核流中的多个第一顺位内核代码选出所需硬件资源小于所述多个流处理器组的可用硬件资源的至少一第一可调度内核代码;自所述至少一第一可调度内核代码选择一内核代码
作为选定内核代码;将所述选定内核代码中的多个线程块分配至所述多个流处理器组执行;及依据所述多个流处理器组的硬件资源使用状态更新所述可用硬件资源表

[0007]本申请的实施例所提供的
GPU
及相关方法可以在接收到多个内核流时,从各内核流中第一顺位的内核代码中选出适当的内核代码优先进行分配,因此能够提高
GPU
的硬件使用率及整体的运算效能

附图说明
[0008]图1是本申请的
GPU
的实施例的示意图

[0009]图2是利用轮询方式对内核流中的内核代码进行调度的时序图

[0010]图3是本申请的
GPU
方法的实施例流程图

[0011]图4是依据图3的方法对内核流中的内核代码进行调度的时序图

[0012]图5是图3方法的子步骤流程图

具体实施方式
[0013]以下揭示内容提供了多种实施方式或例示,其能用以实现本揭示内容的不同特征

下文所述之组件与配置的具体例子系用以简化本揭示内容

当可想见,这些叙述仅为例示,其本意并非用于限制本揭示内容

举例来说,在下文的描述中,将一第一特征形成于一第二特征上或之上,可能包括某些实施例其中所述的第一与第二特征彼此直接接触;且也可能包括某些实施例其中还有额外的组件形成于上述第一与第二特征之间,而使得第一与第二特征可能没有直接接触

此外,本揭示内容可能会在多个实施例中重复使用组件符号和
/
或标号

此种重复使用乃是基于简洁与清楚的目的,且其本身不代表所讨论的不同实施例和
/
或组态之间的关系

[0014]虽然用以界定本申请较广范围的数值范围与参数皆是约略的数值,此处已尽可能精确地呈现具体实施例中相关数值

然而,任何数值本质上不可避免地含有因个别测试方法所致的标准偏差

在此处,



通常系指实际数值在一特定数值或范围的正负
10

、5

、1
%或
0.5
%之内

或者是,



一词代表实际数值落在平均值的可接受标准误差之内,视本申请所属
中具有通常知识者的考虑而定

当可理解,除了实验例之外,或除非另有明确的说明,此处所用的所有范围

数量

数值与百分比
(
例如用以描述材料用量

时间长短

温度

操作条件

数量比例及其他相似者
)本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
GPU
,用来执行多个内核流,每一内核流包含需依序执行的多个内核代码,每一内核代码包括多个线程块,其特征在于,所述
GPU
包括:多个流处理器组,每一流处理器组用以执行至少一线程块;可用硬件资源表,用以记录所述多个流处理器组的可用硬件资源;资源比较器,用以依据所述可用硬件资源表,自所述多个内核流中的多个第一顺位内核代码选出所需硬件资源小于所述多个流处理器组的可用硬件资源的至少一第一可调度内核代码;流排程器,用以自所述至少一第一可调度内核代码选择一内核代码作为选定内核代码;及全局调度器,用以将所述选定内核代码中的多个线程块分配至所述多个流处理器组执行,及依据所述多个流处理器组的硬件资源使用状态更新所述可用硬件资源表
。2.
如权利要求1所述的
GPU
,其特征在于:每一内核代码还包括所需硬件资源表,用以纪录所述每一内核代码中每一线程块的所需硬件资源;及所述资源比较器是依据所述可用硬件资源表及所述多个第一顺位内核代码的多个所需硬件资源表判断所述多个第一顺位内核代码的所需硬件资源是否小于所述多个流处理器组的可用硬件资源
。3.
如权利要求1所述的
GPU
,其特征在于当所述至少一第一可调度内核代码中等待时间最长的第一可调度内核代码的等待时间大于预定阈值时,所述流排程器优先选择等待时间最长的所述第一可调度内核代码作为所述选定内核代码
。4.
如权利要求1所述的
GPU
,其特征在于所述资源比较器另用以依据所述可用硬件资源表,自所述至少一第一可调度内核代码中选出所需硬件资源与所述多个流处理器组的可用硬件资源最匹配的内核代码作为候选内核代码
。5.
如权利要求1所述的
GPU
,其特征在于所述资源比较器另用以依据所述可用硬件资源表,自所述至少一第一可调度内核代码中选出所需硬件资源最少的内核代码作为候选内核代码
。6.
如权利要求4或5所述的
GPU
,其特征在于当所述至少一第一可调度内核代码中等待时间最长的第一可调度内核代码的等待时间小于预定阈值时,所述流排程器优先选择所述候选内核代码作为所述选定内核代码
。7.
如权利要求1所述的
GPU
,其特征在于当所述至少一第一可调度内核代码中等待时间最长的第一可调度内核代码的等待时间小于预定阈值时,所述流排程器优先选择属于具有预设高优先位阶的内核流且等待时间最长的第一可调度内核代码作为所述选定内核代码
。8.
如权利要求1所述的
GPU
,其特征在于,在至少一时段中,所述多个流处理器组是同时处理来自至少两个内核代码的多个线程块
。9.
如权利要求1所述的
GPU
,其特征在于,在所述全局调度器将所述选定内核代码分配至所述多个流处理器组执行后,所述资源比较器依据更新后的所述可用硬件资源表,自所述多个第一顺位内核代码中尚未被分配的多个内核代码以及所述选定内核代码原先所属的内核流中,接续在所述选定内核代码之后的内核代码中,选出所需硬件资源小于所述多个流处理器组的可用硬件资源的至少一第二可调度内核代码

10.
如权利要求1所述的
GPU
,其特征在于,每一流处理器组的硬件资源包括多个流处理器

寄存器堆及至少一内存,其中所述寄存器堆及至少一内存是用以储存所述多个流处理器执行线程时所需的数据或指令
。11.
一种
GPU
...

【专利技术属性】
技术研发人员:李浩然孙飞高源
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1