GPU制造技术

技术编号:39601085 阅读:19 留言:0更新日期:2023-12-03 20:01
本申请公开了一种

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


[0001]本申请涉及一种处理器,尤其涉及一种
GPU
以及相关方法


技术介绍

[0002]GPU
在执行内核代码
(kernel code)
时,会以线程束
(warp)
为单位在流处理器
(streaming processor,SP)
上执行

由于线程束被调度至流处理器时,需要占用流处理器上的寄存器的空间

也就是说,寄存器有限的空间会形成能够调度至流处理器的线程束数量的瓶颈之一,并成为本领域亟需解决的问题


技术实现思路

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

[0004]本申请的一实施例公开了一种
GPU
,用来执行内核代码,所述内核代码包括线程块,所述线程块包括多个线程束,所述
GPU
包括:多个流处理单元,每一个流处理单元包括:多个流处理器,每一个流处理器包括寄存器,其中各流处理器具有预设线程束数目上限,且所述寄存器具有预设寄存器容量上限;以及全局调度器,包括:寄存器占用状况表,用来记录各流处理单元的各流处理器中的线程束数目及寄存器的空间占用状况;线程块调度模块,用来依据线程束分类表以及所述寄存器占用状况表来将所述线程块调度至所述多个流处理单元中的第一流处理单元;以及线程束调度模块,用来依据线程束分类表以及所述寄存器占用状况表来将所述多个线程束调度至所述第一流处理单元中的多个流处理器

[0005]本申请的一实施例公开了一种方法,包括:接收内核代码,其中所述内核代码包括线程块,所述线程块包括多个线程束;依据所述多个线程束的功能将所述多个线程束分为多个不同类型;分析各类型线程束被执行时所需的寄存器空间;以及将所述多个线程束的类型及被执行时所需的寄存器空间记录在线程束分类表

[0006]本申请所公开的
GPU
以及相关方法能够优化流处理器上的寄存器的空间运用,进而增加
GPU
的效能

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

[0008]图2为本申请的编译器所执行的方法的实施例的流程图

[0009]图3为图1的线程束分类表的实施例的示意图

[0010]图4为图1的寄存器占用状况表的实施例的示意图

[0011]图
5a

5o
为用于说明本申请的线程束调度模块将多个线程束调度至多个流处理器的示意图

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


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

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

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

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

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

[0013]再者,在此处使用空间上相对的词汇,譬如

之下
」、「
下方
」、「
低于
」、「
之上
」、「
上方

及与其相似者,可能是为了方便说明图中所绘示的一组件或特征相对于另一或多个组件或特征之间的关系

这些空间上相对的词汇其本意除了图中所绘示的方位之外,还涵盖了装置在使用或操作中所处的多种不同方位

可能将所述设备放置于其他方位
(
如,旋转
90
度或处于其他方位
)
,而这些空间上相对的描述词汇就应该做相应的解释

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

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

在此处,

相同

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

、5

、1
%或
0.5
%之内

或者是,

相同

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

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

数量

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

时间长短

温度

操作条件

数量比例及其他相似者
)
均经过

相同

的修饰

因此,除非另有相反的说明,本说明书与附随申请专利范围所揭示的数值参数皆为约略的数值,且可视需求而更动

至少应将这些数值参数理解为所指出的有效位数与套用一般进位法所得到的数值

在此处,将数值范围表示成由一端点至另一端点或介于二端点之间;除非另有说明,此处所述的数值范围皆包括端点

[0015]一般来说,
GPU
将线程束
(warp)
调度至流处理器
(streaming processor,SP)
时,会在流处理器的寄存器上分配相同大小的空间给各线程束,这个空间会被占住直到线程束被流处理器执行完毕

然而,由于不同线程束可能代表不同的功能,因此实际上每个线程束真正需要使用到的寄存器的空间可能有所差异,一视同仁的分配相同的寄存器空间给所有的线程束,势必需要迁就对寄存器空间需求最大的线程束来决定此空间大小,造成寄存器在分配上效率低落,使寄存器的空间成为能够调度至流处理器的线程束数量上的瓶颈之一

[0016]图1为本申请的
GPU
的实施例的示意图
。GPU 108
用来执行内核代码
(kernel code)102。
内核代码
102<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
GPU
,用来执行内核代码,所述内核代码包括线程块,所述线程块包括多个线程束,其特征在于,所述
GPU
包括:多个流处理单元,每一个流处理单元包括:多个流处理器,每一个流处理器包括寄存器,其中各流处理器具有预设线程束数目上限,且所述寄存器具有预设寄存器容量上限;以及全局调度器,包括:寄存器占用状况表,用来记录各流处理单元的各流处理器中的线程束数目及寄存器的空间占用状况;线程块调度模块,用来依据线程束分类表以及所述寄存器占用状况表来将所述线程块调度至所述多个流处理单元中的第一流处理单元,其中所述线程束分类表记录所述多个线程束的类型及被执行时所需的寄存器空间;以及线程束调度模块,用来依据所述线程束分类表以及所述寄存器占用状况表来将所述多个线程束调度至所述第一流处理单元中的多个流处理器
。2.
如权利要求1所述的
GPU
,其特征在于,所述线程块调度模块依据所述线程块的所需寄存器空间总和

线程束数目总和

各所述流处理单元的剩余可用寄存器空间以及剩余可接受线程束数目,来判断所述多个流处理单元中是否有符合第一条件的流处理单元,其中当各所述流处理单元中的任一流处理单元的所述剩余可用寄存器空间以及所述剩余可接受线程束数目分别不小于所述线程块的所需寄存器空间总和以及所述线程束数目总和时,所述任一流处理单元符合所述第一条件
。3.
如权利要求2所述的
GPU
,其特征在于,所述线程块调度模块依据所述寄存器占用状况表以及所述预设寄存器容量上限来得到各所述流处理单元的所述剩余可用寄存器空间
。4.
如权利要求2所述的
GPU
,其特征在于,所述线程块调度模块依据所述寄存器占用状况表以及所述预设线程束数目上限来得到各所述流处理单元的所述剩余可接受线程束数目
。5.
如权利要求2所述的
GPU
,其特征在于,所述线程块调度模块依据所述线程束分类表计算所述线程块的所述所需寄存器空间总和以及所述线程束数目总和
。6.
如权利要求2所述的
GPU
,其特征在于,所述所述多个线程束至少被分为第一类型与第二类型,对应所述第一类型的多个第一类型线程束的数目为第一数目,且各所述第一类型线程束被执行时所需的寄存器空间为第一寄存器空间,以及对应所述第二类型的多个第二类型线程束的数目为第二数目,且各所述第二类型线程束被执行时所需的寄存器空间为第二寄存器空间,其中所述第一寄存器空间不同于所述第二寄存器空间
。7.
如权利要求6所述的
GPU
,其特征在于,所述所述线程块调度模块还依据所述第一数目

所述第一寄存器空间

各所述流处理单元的各流处理器的剩余可接受线程束数目以及剩余可用寄存器空间来判断所述多个流处理单元中是否有符合第二条件的流处理单元,其中当各所述流处理单元中的任一流处理单元的多个流处理器能够接受所述多个线程束中所有的所述第一类型的线程束时,所述任一流处理单元符合所述第二条件
。8.
如权利要求7所述的
GPU
,其特征在于,所述所述线程块调度模块还依据所述第二数目

所述第二寄存器空间

各所述流处理单元的各流处理器的所述剩余可接受线程束数目以及所述剩余可用寄存器空间...

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

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

1