改变操作数的精度的制作方法

文档序号:36491643发布日期:2023-12-26 22:51阅读:38来源:国知局
改变操作数的精度的制作方法

至少一个实施例涉及由并行处理单元(ppu)(如图形处理单元(gpu))用于执行矩阵乘法累加(mma)运算的处理资源。例如,至少一个实施例涉及将第一类型的数据输入转换成第二类型的数据输入,并且使得对第二类型的数据输入执行mma运算以生成第一类型的结果。


背景技术:

1、深度学习和其他运算经常涉及矩阵运算,矩阵运算由图形处理单元(gpu)和其他加速器加速。这些加速器和其他硬件通常具有关于加速器可以对其执行运算的数据的限制。例如,加速器可要求数据为特定数据类型。然而,数据可能不总是满足硬件的标准。因此,执行运算经常必须使用其他经常更慢的硬件来执行,或者不得不执行附加运算来准备数据以满足标准。使用此类其他硬件和/或执行此类其他运算会导致低效率,诸如更高的能量使用和/或更高的延时。


技术实现思路



技术特征:

1.一种处理器,包括:

2.如权利要求1所述的处理器,其中通过使所述第一数据类型的所述一个或更多个操作数的第一部分存储为所述第二数据类型的所述一个或更多个操作数以及使所述第一数据类型的所述一个或更多个操作数的第二部分存储为所述第二数据类型的一个或更多个其他操作数,来变换所述第一数据类型的所述一个或更多个操作数。

3.如权利要求1所述的处理器,其中所述mma运算如果由所述一个或更多个电路执行,则使所述一个或更多个电路执行特定于所述第二数据类型的一个或更多个数学运算。

4.如权利要求1所述的处理器,其中第一数据类型的所述一个或更多个操作数包括一个或更多个第一数据集,并且所述第二数据类型的所述一个或更多个操作数包括一个或更多个第二数据集,所述一个或更多个第二数据集是通过组合所述一个或更多个第一数据集的一个或更多个子集从所述一个或更多个第一数据集变换的。

5.如权利要求1所述的处理器,其中所述mma运算如果由所述一个或更多个电路执行,则将生成所述第一数据类型的一个或更多个输出。

6.如权利要求1所述的处理器,其中所述一个或更多个电路用于通过使一个或更多个第一位作为第一位集存储在所述第二数据类型的所述一个或更多个操作数中、使一个或更多个第二位作为第二位集存储在所述第二数据类型的所述一个或更多个操作数中、以及使一个或更多个第三位作为第三位集存储在所述第二数据类型的所述一个或更多个操作数中,来变换所述第一数据类型的所述一个或更多个操作数。

7.一种系统,包括:

8.如权利要求7所述的系统,其中所述第一数据类型的所述一个或更多个操作数包括具有一组维度的一个或更多个数据集,并且所述mma运算如果由所述一个或更多个处理器执行,则将生成具有所述一组维度的子集的所述第一数据类型的一个或更多个其他数据集。

9.如权利要求7所述的系统,其中所述第一数据类型的所述一个或更多个操作数包括具有一组维度的一个或更多个第一数据集,并且所述第二数据类型的所述一个或更多个操作数包括均具有所述一组维度的子集的一个或更多个第二数据集,所述一个或更多个第二数据集将由所述mma运算使用。

10.如权利要求7所述的系统,其中使得对所述第二数据类型的所述一个或更多个操作数执行所述mma运算使所述一个或更多个处理器生成所述第一数据类型的一个或更多个数据集。

11.如权利要求7所述的系统,其中所述一个或更多个处理器用于通过使一个或更多个第一位作为第一位集存储在所述第二数据类型的所述一个或更多个操作数中、使一个或更多个第二位作为第二位集存储在所述第二数据类型的所述一个或更多个操作数中、以及使一个或更多个第三位作为第三位集存储在所述第二数据类型的所述一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。

12.如权利要求7所述的系统,其中所述一个或更多个处理器用于通过计算所述第一数据类型的所述一个或更多个操作数中的每个操作数与所述第二数据类型的所述一个或更多个操作数中的每个操作数之间的一个或更多个差以及将所述一个或更多个差存储在所述第二数据类型的另外一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。

13.如权利要求7所述的系统,其中所述mma运算具有形状,并且所述第二数据类型的所述一个或更多个操作数包括满足所述形状的一个或更多个数据集。

14.一种机器可读介质,具有存储在其上的一个或更多个指令,所述一个或更多个指令如果由一个或更多个处理器执行,则使所述一个或更多个处理器至少:

15.如权利要求14所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过计算待存储为所述第二数据类型的所述一个或更多个操作数的所述第一数据类型的所述一个或更多个操作数的第一部分以及待存储为所述第二数据类型的一个或更多个其他操作数的所述第一数据类型的所述一个或更多个操作数的第二部分,来将所述第一数据类型的所述一个或更多个操作数改变为所述第二数据类型的所述一个或更多个操作数。

16.如权利要求14所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过使一个或更多个第一位作为第一位集存储在所述第二数据类型的所述一个或更多个操作数中、使一个或更多个第二位作为第二位集存储在所述第二数据类型的所述一个或更多个操作数中、以及使一个或更多个第三位作为第三位集存储在所述第二数据类型的所述一个或更多个操作数中,来改变所述第一数据类型的所述一个或更多个操作数。

17.如权利要求14所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过计算所述第一数据类型的所述一个或更多个操作数中的每个操作数与所述第二数据类型的所述一个或更多个操作数中的每个操作数之间的一个或更多个差以及将所述一个或更多个差存储在所述第二数据类型的另外一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。

18.如权利要求14所述的机器可读介质,其中将对所述第二数据类型的所述一个或更多个操作数执行的所述mma运算使得所述一个或更多个处理器生成所述第一数据类型的一个或更多个结果。

19.如权利要求14所述的机器可读介质,其中第一数据类型的所述一个或更多个操作数包括一个或更多个第一数据集,并且所述第二数据类型的所述一个或更多个操作数包括一个或更多个第二数据集,所述一个或更多个第二数据集是至少部分地基于所述一个或更多个第一数据集计算的,并且将对所述一个或更多个第二数据集的一个或更多个组合执行所述mma运算。

20.如权利要求14所述的机器可读介质,其中所述mma运算具有至少部分地基于所述第二数据类型的所述一个或更多个操作数的一组维度确定的形状,并且所述mma运算特定于所述第二数据类型。

21.一种方法,包括:

22.如权利要求21所述的方法,进一步包括:通过使所述第一数据类型的所述一个或更多个操作数的一个或更多个第一位存储在所述第二数据类型的所述一个或更多个操作数中,使所述第一数据类型的所述一个或更多个操作数的一个或更多个第二位存储在所述第二数据类型的所述一个或更多个操作数中,以及使所述第一数据类型的所述一个或更多个操作数的一个或更多个第三位存储在所述第二数据类型的所述一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。

23.如权利要求21所述的方法,进一步包括:通过计算所述第一数据类型的所述一个或更多个操作数中的每个操作数与所述第二数据类型的所述一个或更多个操作数中的每个操作数之间的一个或更多个差以及将所述一个或更多个差存储在所述第二数据类型的另外一个或更多个操作数中以能用作所述mma运算的输入,来变换所述第一数据类型的所述一个或更多个操作数。

24.如权利要求21所述的方法,其中将所述第一数据类型的所述一个或更多个操作数变换为所述第二数据类型的所述一个或更多个操作数包括:计算待存储为所述第二数据类型的所述一个或更多个操作数的所述第一数据类型的所述一个或更多个操作数的第一部分以及待存储为所述第二数据类型的一个或更多个其他操作数的所述第一数据类型的所述一个或更多个操作数的第二部分,并且将至少部分地基于所述第二数据类型的所述一个或更多个操作数和所述第二数据类型的所述一个或更多个其他操作数来执行所述mma运算。

25.如权利要求21所述的方法,其中所述mma运算具有至少部分地基于所述第二数据类型的所述一个或更多个操作数的一个或更多个维度确定的形状,并且所述mma运算特定于所述第二数据类型。

26.如权利要求21所述的方法,进一步包括:由所述mma运算至少部分地基于所述第二数据类型的所述一个或更多个操作数来生成所述第一数据类型的一个或更多个输出。

27.如权利要求21所述的方法,其中所述mma运算包括一个或更多个乘法运算和一个或更多个累加运算,用于至少部分地基于所述第二数据类型的所述一个或更多个操作数生成所述第一数据类型的一个或更多个数据集。

28.一种处理器,包括:

29.如权利要求28所述的处理器,其中所述一个或更多个fp32操作数中的每个fp32操作数包括1位符号、8位指数以及23位尾数,并且所述一个或更多个电路用于通过对于所述一个或更多个fp32操作数中的每个fp32操作数将所述1位符号、所述8位指数以及所述23位尾数的前10位复制到所述一个或更多个tf32操作数中的至少一个tf32操作数,来转换所述一个或更多个fp32操作数。

30.如权利要求28所述的处理器,其中所述一个或更多个电路用于通过计算所述一个或更多个fp32操作数与一个或更多个其他数据值之间的一个或更多个差以及将所述一个或更多个差复制到所述一个或更多个tf32操作数,来将所述一个或更多个fp32操作数转换成所述一个或更多个tf32操作数。

31.如权利要求28所述的处理器,其中所述mma运算是m16n8k4mma指令,所述m16n8k4mma指令如果被执行,则使所述一个或更多个电路计算一个或更多个fp32数据集。

32.如权利要求28所述的处理器,其中所述一个或更多个fp32操作数包括具有第一宽度和第一高度的第一数据集以及具有第二宽度和第二高度的第二数据集,并且所述一个或更多个tf32操作数包括至少具有所述第一高度的第三数据集和至少具有所述第二宽度的第四数据集,并且所述mma运算如果被执行,则使所述一个或更多个电路生成至少具有所述第一高度和所述第二宽度的第五数据集。

33.如权利要求28所述的处理器,其中所述一个或更多个tf32操作数包括第一数据集和第二数据集,所述第一数据集是至少部分地基于所述一个或更多个fp32操作数的至少一个尾数计算的,所述第二数据集是至少部分地基于所述一个或更多个fp32操作数与一个或更多个数据值之间的一个或更多个差计算的。

34.如权利要求28所述的处理器,其中所述mma运算包括形状,并且所述一个或更多个tf32操作数包括满足所述形状的一个或更多个维度。

35.一种系统,包括:

36.如权利要求35所述的系统,其中所述mma运算包括形状,并且所述形状指示所述一个或更多个tf32操作数的一个或更多个维度。

37.如权利要求35所述的系统,其中所述mma运算是m16n8k4 tf32mma指令,所述m16n8k4 tf32 mma指令如果被执行,则使所述一个或更多个处理器至少部分地基于所述一个或更多个tf32操作数来计算一个或更多个fp32数据值。

38.如权利要求35所述的系统,其中所述一个或更多个tf32操作数包括第一数据集和第二数据集,所述第一数据集是至少部分地基于所述一个或更多个fp32操作数的至少一个尾数计算的,所述第二数据集是至少部分地基于所述一个或更多个fp32操作数与一个或更多个数据值之间的一个或更多个差计算的。

39.如权利要求35所述的系统,其中所述一个或更多个fp32操作数中的每个fp32操作数包括1位符号、8位指数以及23位尾数,并且所述一个或更多个处理器用于通过对于所述一个或更多个fp32操作数中的至少一个fp32操作数将所述1位符号、所述8位指数以及所述23位尾数的前10位复制到所述一个或更多个tf32操作数中的至少一个tf32操作数,来转换所述一个或更多个fp32操作数中的至少一个fp32操作数。

40.如权利要求35所述的系统,其中所述一个或更多个fp32操作数包括具有第一宽度和第一高度的第一数据集以及具有第二宽度和第二高度的第二数据集,并且所述一个或更多个tf32操作数包括至少具有所述第一高度的第三数据集和至少具有所述第二宽度的第四数据集,并且所述mma运算如果被执行,则使所述一个或更多个处理器生成至少具有所述第一高度和所述第二宽度的第五数据集。

41.如权利要求35所述的系统,其中所述一个或更多个处理器用于通过将所述一个或更多个fp32操作数中的每个fp32操作数分解成高部分和低部分以及将所述高部分和所述低部分复制到要组合成所述一个或更多个tf32操作数的数据集中,来转换所述一个或更多个fp32操作数。

42.如权利要求35所述的系统,其中所述mma运算是响应于m16n8k4 tf32 mma指令而被执行的。

43.一种机器可读介质,具有存储在其上的一个或更多个指令,所述一个或更多个指令如果由一个或更多个处理器执行,则使所述一个或更多个处理器至少:

44.如权利要求43所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过将所述一个或更多个fp32操作数中的每个fp32操作数分解为高部分和低部分以及将所述高部分和所述低部分复制到要组合成所述一个或更多个tf32操作数的数据集中,来转换所述一个或更多个fp32操作数。

45.如权利要求43所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过将所述一个或更多个fp32操作数中的至少一个fp32操作数的1位符号、8位指数和23位尾数的前10位复制到所述一个或更多个tf32操作数中的至少一个tf32操作数来转换所述一个或更多个fp32操作数。

46.如权利要求43所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过计算所述一个或更多个fp32操作数中的至少一个fp32操作数与一个或更多个数据值之间的一个或更多个差以及将所述一个或更多个差复制到所述一个或更多个tf32操作数中的至少一个tf32操作数来转换所述一个或更多个fp32操作数。

47.如权利要求43所述的机器可读介质,其中所述mma运算包括形状,并且所述形状指示所述一个或更多个tf32操作数的一个或更多个维度。

48.如权利要求43所述的机器可读介质,其中所述mma运算是m16n8k4 mma指令,并且所述mma运算用于生成一个或更多个fp32数据集。

49.如权利要求43所述的机器可读介质,其中所述一个或更多个fp32操作数包括具有第一宽度和第一高度的第一数据集以及具有第二宽度和第二高度的第二数据集,并且所述一个或更多个tf32操作数包括至少具有所述第一高度的第三数据集和至少具有所述第二宽度的第四数据集,并且所述mma运算使所述一个或更多个处理器生成至少具有所述第一高度和所述第二宽度的第五数据集。

50.一种方法,包括:

51.如权利要求50所述的方法,进一步包括:通过将所述一个或更多个fp32操作数中的每个fp32操作数分解成至少一个高部分和至少一个低部分以组合成所述一个或更多个tf32操作数中的至少一个tf32操作数,来转换所述一个或更多个fp32操作数。

52.如权利要求50所述的方法,进一步包括:通过将所述一个或更多个fp32操作数中的至少一个fp32操作数的1位符号、8位指数和23位尾数的前10位复制到所述一个或更多个tf32操作数中的至少一个tf32操作数以及计算所述一个或更多个fp32操作数中的至少一个fp32操作数与一个或更多个数据值之间的一个或更多个差以及将所述一个或更多个差复制到所述一个或更多个tf32操作数中的至少一个tf32操作数,来转换所述一个或更多个fp32操作数。

53.如权利要求50所述的方法,其中所述一个或更多个fp32操作数包括具有第一宽度和第一高度的第一数据集以及具有第二宽度和第二高度的第二数据集,并且所述一个或更多个tf32操作数包括至少具有所述第一高度的第三数据集和至少具有所述第二宽度的第四数据集,并且所述mma运算用于生成至少具有所述第一高度和所述第二宽度的第五数据集。

54.如权利要求50所述的方法,其中所述mma运算包括形状,并且所述形状指示所述一个或更多个tf32操作数的一个或更多个维度。

55.如权利要求50所述的方法,其中所述mma运算是m16n8k4 mma指令。

56.如权利要求50所述的方法,其中使得执行所述mma运算使得至少部分地基于所述一个或更多个tf32操作数来生成一个或更多个fp32数据集。


技术总结
本公开涉及改变操作数的精度。用于使用用于第二类型的数据的一个或更多个MMA指令对第一类型的数据执行矩阵乘法累加(MMA)运算的装置、系统和技术。在至少一个实施例中,单个张量浮点32(TF32)MMA指令使用从FP32数据值转换的TF32输入操作数来计算32位浮点(FP32)输出。

技术研发人员:屠济群,D·M·克拉克
受保护的技术使用者:辉达公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1