当前位置: 首页 > 专利查询>辉达公司专利>正文

改变操作数的精度制造技术

技术编号:39838992 阅读:4 留言:0更新日期:2023-12-29 16:25
本公开涉及改变操作数的精度。用于使用用于第二类型的数据的一个或更多个MMA指令对第一类型的数据执行矩阵乘法累加(MMA)运算的装置、系统和技术。在至少一个实施例中,单个张量浮点32(TF32)MMA指令使用从FP32数据值转换的TF32输入操作数来计算32位浮点(FP32)输出。TF32输入操作数来计算32位浮点(FP32)输出。TF32输入操作数来计算32位浮点(FP32)输出。

【技术实现步骤摘要】
改变操作数的精度


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

技术介绍

[0002]深度学习和其他运算经常涉及矩阵运算,矩阵运算由图形处理单元(GPU)和其他加速器加速。这些加速器和其他硬件通常具有关于加速器可以对其执行运算的数据的限制。例如,加速器可要求数据为特定数据类型。然而,数据可能不总是满足硬件的标准。因此,执行运算经常必须使用其他经常更慢的硬件来执行,或者不得不执行附加运算来准备数据以满足标准。使用此类其他硬件和/或执行此类其他运算会导致低效率,诸如更高的能量使用和/或更高的延时。
附图说明
[0003]图1A是示出了根据至少一个实施例的对tensorfloat32(TF32)输入操作数的矩阵乘法累加(MMA)运算的框图;
[0004]图1B是示出了根据至少一个实施例的使用TF32 MMA运算对FP32输入操作数的模拟的32位浮点(FP32)MMA运算的框图;
[0005]图2A是示出了根据至少一个实施例的TF32 MMA指令的输入和输出操作数的矩阵维度的框图;
[0006]图2B是示出了根据至少一个实施例的使用单个m16n8k4 MMA指令的m16n8k1 MMA运算的框图;
[0007]图3是示出了根据至少一个实施例的将FP32输入操作数分解成两个TF32输入操作数的框图;
[0008]图4是示出了根据至少一个实施例的由第二类型的MMA指令对第一类型的操作数的MMA运算的框图;
[0009]图5是示出了根据至少一个实施例的使用16
×
1输入矩阵和1
×
8输入矩阵以生成16
×
8输出矩阵的MMA运算的框图;
[0010]图6示出了根据至少一个实施例的使用单个TF32 MMA指令执行FP32 MMA运算的过程;
[0011]图7示出了根据至少一个实施例的示例性数据中心;
[0012]图8示出了根据至少一个实施例的处理系统;
[0013]图9示出了根据至少一个实施例的计算机系统;
[0014]图10示出了根据至少一个实施例的系统;
[0015]图11示出了根据至少一个实施例的示例性集成电路;
[0016]图12示出了根据至少一个实施例的计算系统;
[0017]图13示出了根据至少一个实施例的APU;
[0018]图14示出了根据至少一个实施例的CPU;
[0019]图15示出了根据至少一个实施例的示例性加速器集成切片;
[0020]图16A和图16B示出了根据至少一个实施例的示例性图形处理器;
[0021]图17A示出了根据至少一个实施例的图形核心;
[0022]图17B示出了根据至少一个实施例的GPGPU;
[0023]图18A示出了根据至少一个实施例的并行处理器;
[0024]图18B示出了根据至少一个实施例的处理集群;
[0025]图18C示出了根据至少一个实施例的图形多处理器;
[0026]图19示出了根据至少一个实施例的图形处理器;
[0027]图20示出了根据至少一个实施例的处理器;
[0028]图21示出了根据至少一个实施例的处理器;
[0029]图22示出了根据至少一个实施例的图形处理器核心;
[0030]图23示出了根据至少一个实施例的PPU;
[0031]图24示出了根据至少一个实施例的GPC;
[0032]图25示出了根据至少一个实施例的流式多处理器;
[0033]图26示出了根据至少一个实施例的编程平台的软件栈;
[0034]图27示出了根据至少一个实施例的图26的软件栈的CUDA实现;
[0035]图28示出了根据至少一个实施例的图26的软件栈的ROCm实现;
[0036]图29示出了根据至少一个实施例的图26的软件栈的OpenCL实现;
[0037]图30示出了根据至少一个实施例的由编程平台支持的软件;
[0038]图31示出了根据至少一个实施例的、在图26

29的编程平台上执行的编译代码;
[0039]图32示出了根据至少一个实施例的、在图26

29的编程平台上执行的更详细的编译代码;
[0040]图33示出了根据至少一个实施例的在编译源代码之前转换源代码;
[0041]图34A示出了根据至少一个实施例的被配置为使用不同类型的处理单元来编译和执行CUDA源代码的系统;
[0042]图34B示出了根据至少一个实施例的被配置为使用CPU和启用CUDA的GPU来编译和执行图34A的CUDA源代码的系统;
[0043]图34C示出了根据至少一个实施例的被配置为使用CPU和未启用CUDA的GPU来编译和执行图34A的CUDA源代码的系统;
[0044]图35示出了根据至少一个实施例的由图34C的CUDA到HIP转换工具转换的示例性内核;
[0045]图36更详细地示出了根据至少一个实施例的图34C的未启用CUDA的GPU;
[0046]图37示出了根据至少一个实施例的示例性CUDA网格的线程如何映射到图36的不同计算单元;以及
[0047]图38示出了根据至少一个实施例如何将现有CUDA代码迁移到数据并行C++代码。
具体实施方式
[0048]图1A是示出了根据至少一个实施例的对TF32输入操作数102、110的tensorfloat32(TF32,张量浮点32)矩阵乘法累加(MMA)运算112的框图。在至少一个实施例中,TF32是数据格式。在至少一个实施例中,数据格式是存储器或其他存储中的数据的排列。在至少一个实施例中,TF32是用于浮点数的数据格式。
[0049]在至少一个实施例中,MMA或MMA运算是用于执行矩阵乘法累加的计算操作。除非另外指明,否则术语MMA和MMA运算在本文中可互换地使用。在至少一个实施例中,MMA是一个或更多个软件指令,如果该指令被执行,则使得一个或更多个处理器执行矩阵乘法累加。在至少一个实施例中,MMA是一个或更多个x86软件指令。在至少一个实施例中,MMA是一个或更多个x86软件单指令多数据(SIMD)指令。在至少一个实施例中,MMA是一个或更多个x86 SIMD指令,其将被解码成一个或更多个微操作,如本文进一步描述的。在至少一个实施例中,MMA是一个或更多个x86 SIMD指令,这些指令将被解码成一个或更多个微操作以使处理器执行矩阵乘法累加。在至少一个实施例中,MMA是执行矩阵乘法累加的硬件组件。在至少一个实施例中,MMA是执行矩阵乘法累加的一个或更多个并行处理单元(PPU)(诸如图形处理单本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理器,包括:一个或更多个电路,所述一个或更多个电路用于将第一数据类型的一个或更多个操作数变换为第二数据类型的一个或更多个操作数,以及使得对所述第二数据类型的所述一个或更多个操作数执行矩阵乘法累加MMA运算。2.如权利要求1所述的处理器,其中通过使所述第一数据类型的所述一个或更多个操作数的第一部分存储为所述第二数据类型的所述一个或更多个操作数以及使所述第一数据类型的所述一个或更多个操作数的第二部分存储为所述第二数据类型的一个或更多个其他操作数,来变换所述第一数据类型的所述一个或更多个操作数。3.如权利要求1所述的处理器,其中所述MMA运算如果由所述一个或更多个电路执行,则使所述一个或更多个电路执行特定于所述第二数据类型的一个或更多个数学运算。4.如权利要求1所述的处理器,其中第一数据类型的所述一个或更多个操作数包括一个或更多个第一数据集,并且所述第二数据类型的所述一个或更多个操作数包括一个或更多个第二数据集,所述一个或更多个第二数据集是通过组合所述一个或更多个第一数据集的一个或更多个子集从所述一个或更多个第一数据集变换的。5.如权利要求1所述的处理器,其中所述MMA运算如果由所述一个或更多个电路执行,则将生成所述第一数据类型的一个或更多个输出。6.如权利要求1所述的处理器,其中所述一个或更多个电路用于通过使一个或更多个第一位作为第一位集存储在所述第二数据类型的所述一个或更多个操作数中、使一个或更多个第二位作为第二位集存储在所述第二数据类型的所述一个或更多个操作数中、以及使一个或更多个第三位作为第三位集存储在所述第二数据类型的所述一个或更多个操作数中,来变换所述第一数据类型的所述一个或更多个操作数。7.一种系统,包括:一个或更多个处理器,所述一个或更多个处理器用于将第一数据类型的一个或更多个操作数转换成第二数据类型的一个或更多个操作数,以及使得对所述第二数据类型的所述一个或更多个操作数执行矩阵乘法累加MMA运算。8.如权利要求7所述的系统,其中所述第一数据类型的所述一个或更多个操作数包括具有一组维度的一个或更多个数据集,并且所述MMA运算如果由所述一个或更多个处理器执行,则将生成具有所述一组维度的子集的所述第一数据类型的一个或更多个其他数据集。9.如权利要求7所述的系统,其中所述第一数据类型的所述一个或更多个操作数包括具有一组维度的一个或更多个第一数据集,并且所述第二数据类型的所述一个或更多个操作数包括均具有所述一组维度的子集的一个或更多个第二数据集,所述一个或更多个第二数据集将由所述MMA运算使用。10.如权利要求7所述的系统,其中使得对所述第二数据类型的所述一个或更多个操作数执行所述MMA运算使所述一个或更多个处理器生成所述第一数据类型的一个或更多个数据集。11.如权利要求7所述的系统,其中所述一个或更多个处理器用于通过使一个或更多个第一位作为第一位集存储在所述第二数据类型的所述一个或更多个操作数中、使一个或更多个第二位作为第二位集存储在所述第二数据类型的所述一个或更多个操作数中、以及使
一个或更多个第三位作为第三位集存储在所述第二数据类型的所述一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。12.如权利要求7所述的系统,其中所述一个或更多个处理器用于通过计算所述第一数据类型的所述一个或更多个操作数中的每个操作数与所述第二数据类型的所述一个或更多个操作数中的每个操作数之间的一个或更多个差以及将所述一个或更多个差存储在所述第二数据类型的另外一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。13.如权利要求7所述的系统,其中所述MMA运算具有形状,并且所述第二数据类型的所述一个或更多个操作数包括满足所述形状的一个或更多个数据集。14.一种机器可读介质,具有存储在其上的一个或更多个指令,所述一个或更多个指令如果由一个或更多个处理器执行,则使所述一个或更多个处理器至少:将第一数据类型的一个或更多个操作数改变为第二数据类型的一个或更多个操作数,以及使得对所述第二数据类型的所述一个或更多个操作数执行矩阵乘法累加MMA运算。15.如权利要求14所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过计算待存储为所述第二数据类型的所述一个或更多个操作数的所述第一数据类型的所述一个或更多个操作数的第一部分以及待存储为所述第二数据类型的一个或更多个其他操作数的所述第一数据类型的所述一个或更多个操作数的第二部分,来将所述第一数据类型的所述一个或更多个操作数改变为所述第二数据类型的所述一个或更多个操作数。16.如权利要求14所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过使一个或更多个第一位作为第一位集存储在所述第二数据类型的所述一个或更多个操作数中、使一个或更多个第二位作为第二位集存储在所述第二数据类型的所述一个或更多个操作数中、以及使一个或更多个第三位作为第三位集存储在所述第二数据类型的所述一个或更多个操作数中,来改变所述第一数据类型的所述一个或更多个操作数。17.如权利要求14所述的机器可读介质,还包括指令,所述指令如果由所述一个或更多个处理器执行,则使所述一个或更多个处理器通过计算所述第一数据类型的所述一个或更多个操作数中的每个操作数与所述第二数据类型的所述一个或更多个操作数中的每个操作数之间的一个或更多个差以及将所述一个或更多个差存储在所述第二数据类型的另外一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。18.如权利要求14所述的机器可读介质,其中将对所述第二数据类型的所述一个或更多个操作数执行的所述MMA运算使得所述一个或更多个处理器生成所述第一数据类型的一个或更多个结果。19.如权利要求14所述的机器可读介质,其中第一数据类型的所述一个或更多个操作数包括一个或更多个第一数据集,并且所述第二数据类型的所述一个或更多个操作数包括一个或更多个第二数据集,所述一个或更多个第二数据集是至少部分地基于所述一个或更多个第一数据集计算的,并且将对所述一个或更多个第二数据集的一个或更多个组合执行所述MMA运算。20.如权利要求14所述的机器可读介质,其中所述MMA运算具有至少部分地基于所述第
二数据类型的所述一个或更多个操作数的一组维度确定的形状,并且所述MMA运算特定于所述第二数据类型。21.一种方法,包括:将第一数据类型的一个或更多个操作数变换为第二数据类型的一个或更多个操作数,以及使得对所述第二数据类型的所述一个或更多个操作数执行矩阵乘法累加MMA运算。22.如权利要求21所述的方法,进一步包括:通过使所述第一数据类型的所述一个或更多个操作数的一个或更多个第一位存储在所述第二数据类型的所述一个或更多个操作数中,使所述第一数据类型的所述一个或更多个操作数的一个或更多个第二位存储在所述第二数据类型的所述一个或更多个操作数中,以及使所述第一数据类型的所述一个或更多个操作数的一个或更多个第三位存储在所述第二数据类型的所述一个或更多个操作数中,来转换所述第一数据类型的所述一个或更多个操作数。23.如权利要求21所述的方法,进一步包括:通过计算所述第一数据类型的所述一个或更多个操作数中的每个操作数与所述第二数据类型的所述一个或更多个操作数中的每个操作数之间的一个或更多个差以及将所述一个或更多个差存储在所述第二数据类型的另外一个或更多个操作数中以能用作所述MMA运算的输入,来变换所述第一数据类型的所述一个或更多个操作数。24.如权利要求21所述的方法,其中将所述第一数据类型的所述一个或更多个操作数变换为所述第二数据类型的所述一个或更多个操作数包括:计算待存储为所述第二数据类型的所述一个或更多个操作数的所述第一数据类型的所述一个或更多个操作数的第一部分以及待存储为所述第二数据类型的一个或更多个其他操作数的所述第一数据类型的所述一个或更多个操作数的第二部分,并且将至少部分地基于所述第二数据类型的所述一个或更多个操作数和所述第二数据类型的所述一个或更多个其他操作数来执行所述MMA运算。25.如权利要求21所述的方法,其中所述MMA运算具有至少部分地基于所述第二数据类型的所述一个或更多个操作数的一个或更多个维度确定的形状,并且所述MMA运算特定于所述第二数据类型。26.如权利要求21所述的方法,进一步包括:由所述MMA运算至少部分地基于所述第二数据类型的所述一个或更多个操作数来生成所述第一数据类型的一个或更多个输出。27.如权利要求21所述的方法,其中所述MMA运算包括一个或更多个乘法运算和一个或更多个累加运算,用于至少部分地基于所述第二数据类型的所述一个或更多个操作数生成所述第一数据类型的一个或更多个数据集。28...

【专利技术属性】
技术研发人员:屠济群D
申请(专利权)人:辉达公司
类型:发明
国别省市:

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

1