一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于高效访问ML数据的灵活访问指令的制作方法

2022-06-22 18:32:37 来源:中国专利 TAG:

用于高效访问ml数据的灵活访问指令
1.相关申请的交叉引用
2.本技术要求2020年12月21日提交的第63/128,838号美国临时申请的优先权权益,该美国临时申请的公开内容通过引用全文合并于此。
技术领域
3.这里公开的主题涉及图形处理单元(gpu)。更具体地,这里公开的主题涉及一种gpu系统和一种方法,其提高了访问在机器学习(ml)任务中经常遇到的用于三维(3d)矩阵的数据的效率,从而减少存储和存储器访问开销。


背景技术:

4.现代gpu用于图形密集型操作和计算密集型工作负载两者。gpu通常包括可编程的高度并行的一组计算引擎和各种固定功能单元的集合。固定功能单元中的一些可以操作用于提供但不限于纹理地址生成和过滤、图元裁剪、剔除、视口变换、合并、光栅化设置和光栅化、深度比较、混合和其他操作。
5.机器学习在消费产品中继续变得更加流行,并且在移动设备中已变得相当受欢迎。从高层次的角度来看,ml可以分为训练任务和推理任务。在移动设备上进行训练经常可能是足够计算密集的任务,其有可能离线运行,例如在云端,或者如果在移动设备上仅作为非工作时间的后台工作。另一方面,作为ml模型的应用的推理在移动设备上实时运行,并且可能涉及大型数据集和大量计算,尽管通常计算量比训练期间少。
6.基于许多ml推理操作中的大量计算,许多片上系统(soc)可以采用专用神经处理单元(npu)来支持ml模型类型和操作数格式的各种场景。使用npu的意图是为了提供比使用中央处理单元(cpu)或gpu可能实现的更高效的性能/瓦特计算单元。虽然对于使用某些输入操作数运行的一些ml模型来说可能是这种情况,但是可能存在这样的情况,其中gpu的通用性质可能更适合,或者当操作数不受npu支持时(例如,32位浮点(fp32))可能比使用npu更适合。在一些情况下,ml模型的大多数层可能以低精度(即int8)运行,但可能需要一层以fp32精度(如softmax)运行。


技术实现要素:

7.一示例实施例提供了一种图形处理单元,其可以包括寄存器文件、处理器和状态机。寄存器文件可以存储输入特征图的数据和过滤器权重内核的数据。处理器可以将对输入特征图的数据和过滤器权重内核的数据的卷积运算执行为矩阵乘法运算。状态机可以通过展开在寄存器文件中的输入特征图的数据和过滤器权重内核的数据来促进卷积运算的执行。在一个实施例中,状态机可以包括控制寄存器,其确定数据通过寄存器文件的移动,以促进按展开方式对寄存器文件中的数据的矩阵乘法运算,其中控制寄存器可以基于输入特征图的至少一个参数和过滤器权重内核的至少一个参数来配置。状态机可以从至少一个指令集架构指令接收输入特征图的所述至少一个参数和过滤器权重内核的所述至少一个
参数。在另一实施例中,输入特征图的展开数据和过滤器权重内核的展开数据可以基于im2col技术和存储器高效卷积技术之一被展开。在又一实施例中,状态机还可以促进在寄存器文件的第一组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘,同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第二组寄存器,以及促进在寄存器文件的第二组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘。状态机还可以重复地促进对输入特征图的展开数据和过滤器权重内核的展开数据的矩阵乘法运算,直到通过以下完成矩阵乘法:促进在寄存器文件的第一组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第二组寄存器,以及控制在寄存器文件的第二组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第一组寄存器。在一个实施例中,卷积运算包括卷积神经网络、循环神经网络、生成对抗网络和自动编码器之一的操作。
8.一示例实施例提供了一种图形处理单元,其可以包括寄存器文件、着色器数据路径和状态机。寄存器文件可以存储输入特征图的数据和过滤器权重内核的数据。状态机可以通过展开数据并将展开的数据存储在寄存器文件中并且控制来自寄存器文件通过着色器数据路径的数据移动以执行矩阵乘法运算来促进将由着色器数据路径执行为矩阵乘法运算的卷积运算,展开的数据包括输入特征图的数据和过滤器权重内核的数据。在一个实施例中,状态机可以包括控制寄存器,其确定数据通过寄存器文件和着色器数据路径的移动,以按展开方式对寄存器文件中的数据执行矩阵乘法运算,其中控制寄存器可以基于输入特征图的至少一个参数和过滤器权重内核的至少一个参数来配置。状态机可以从至少一个指令集架构指令接收输入特征图的所述至少一个参数和过滤器权重内核的所述至少一个参数。在另一实施例中,输入特征图的展开数据和过滤器权重内核的展开数据可以基于im2col技术或存储器高效卷积技术之一被展开。在又一实施例中,状态机还可以促进在寄存器文件的第一组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第二组寄存器,以及促进在寄存器文件的第二组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘。在又一实施例中,状态机还可以重复地促进对输入特征图的展开数据和过滤器权重内核的展开数据的矩阵乘法运算,直到通过以下完成矩阵乘法:促进在寄存器文件的第一组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第二组寄存器,以及促进在寄存器文件的第二组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第一组寄存器。卷积运算可以包括卷积神经网络、循环神经网络、生成对抗网络和自动编码器之一的操作。
9.一示例实施例提供了一种将图形处理单元中的卷积运算执行为矩阵乘法运算的方法,该方法可以包括:基于输入特征图的至少一个参数和过滤器权重内核的至少一个参数来配置图形处理单元中的状态机的寄存器,其中输入特征图可以被过滤器权重内核卷积;接收输入特征图的数据和过滤器权重内核的数据的存储器地址;由状态机发布指令以
将输入特征图的展开数据和过滤器权重内核的展开数据加载到图形处理单元的寄存器文件中的寄存器;以及将输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘。输入特征图的展开数据和过滤器权重内核的展开数据可以基于im2col技术和存储器高效卷积技术之一被展开。状态机的寄存器可以通过以下来配置:从至少一个指令集架构指令接收输入特征图的所述至少一个参数和过滤器权重内核的所述至少一个参数;以及响应于所述至少一指令集架构指令在图形处理单元中配置状态机的寄存器。在一个实施例中,将输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘可以包括:将在寄存器文件的第一组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘,同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第二组寄存器;以及将在寄存器文件的第二组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘。在另一实施例中,将输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘还可以重复地包括以下内容,直到对输入特征图的展开数据和过滤器权重内核的展开数据矩阵乘法运算完成:将在寄存器文件的第一组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘,同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第二组寄存器;以及将在寄存器文件的第二组寄存器中的输入特征图的展开数据和过滤器权重内核的展开数据矩阵相乘,同时将输入特征图的展开数据和过滤器权重内核的展开数据加载到寄存器文件的第一组寄存器。卷积运算可以包括卷积神经网络、循环神经网络、生成对抗网络和自动编码器之一的操作。
附图说明
10.在以下部分中,将参照附图所示的示例性实施例来描述这里公开的主题的方面,附图中:
11.图1a示出了三个示例输入特征图和针对每个输入特征图的两个对应的过滤器权重内核;
12.图1b示出了按im2col算法展开的图1a的示例输入特征图和对应的过滤器权重内核;
13.图2绘出了根据这里公开的主题的gpu的示例实施例的功能框图,该gpu提高了访问在ml任务中经常遇到的用于3d矩阵的数据的效率;
14.图3是根据这里公开的主题的将gpu中的卷积运算执行为矩阵乘法运算的示例方法的流程图;以及
15.图4绘出了包括根据这里公开的主题的gpu的电子设备,该gpu执行重铸为矩阵乘法运算的卷积运算。
具体实施方式
16.在以下详细描述中,阐述了许多具体细节以便提供对本公开的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践所公开的方面。在其他情况下,没有详细描述众所周知的方法、过程、组件和电路,以免混淆这里公开的主题。
17.贯穿本说明书对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可以被包括在这里公开的至少一个实施例中。因此,短语“在一个实
施例中”或“在一实施例中”或“根据一个实施例”(或具有类似含义的其他短语)贯穿本说明书在各处的出现可以未必都指代同一实施例。此外,特定特征、结构或特性可以在一个或更多个实施例中以任何合适的方式组合。就此而言,如这里所使用的,词语“示例性”意味着“用作示例、实例或例证”。这里描述为“示例性”的任何实施例将不被解释为必然相比于其他实施例是优选的或有益的。另外,在一个或更多个实施例中,特定特征、结构或特性可以以任何合适的方式组合。此外,取决于这里讨论的上下文,单数术语可以包括对应的复数形式,复数术语可以包括对应的单数形式。类似地,带连字符的术语(例如,“二维的(two-dimensional)”、“预定的(pre-determined)”、“像素特定的(pixel-specific)”等)有时可以与对应的不带连字符的版本(例如,“二维的(two dimensional)”、“预定的(predetermined)”、“像素特定的(pixel specific)”等)可互换地使用,并且大写的条目(例如,“计数器时钟(counter clock)”、“行选择(row select)”、“pixout”等)可以与对应的非大写的版本(例如,“计数器时钟(counter clock)”、“行选择(row select)”、“pixout”等)可互换地使用。这种偶尔可互换的使用不应被视为彼此不一致。
18.此外,取决于这里讨论的上下文,单数术语可以包括对应的复数形式,复数术语可以包括对应的单数形式。还要注意,这里示出和讨论的各种图(包括组件图)仅是出于说明的目的,并未按比例绘制。类似地,各种波形和定时图仅是出于说明的目的而示出。例如,为了清楚起见,一些元素的尺寸可能相对于其他元素被夸大。此外,如果认为合适,则附图标记已在附图之间重复以指示对应的和/或类似的元素。
19.这里使用的术语仅是出于描述一些示例实施例的目的,并不旨在限制所要求保护的主题。如这里所使用的,单数形式“一”和“该”也旨在包括复数形式,除非上下文清楚地另行指示。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,指明所陈述的特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或更多个其他特征、整体、步骤、操作、元素、组件和/或其组的存在或添加。如这里所使用的,术语“第一”、“第二”等用作以它们在前的名词的标签,并不暗示任何类型的排序(例如,空间、时间、逻辑等),除非明确地如此定义。此外,可以在两个或更多个附图中使用相同的附图标记来指代具有相同或相似功能的部分、组件、块、电路、单元或模块。然而,这种用法仅是为了说明的简单和讨论的容易;这并不意味着此类组件或单元的构造或架构细节在所有实施例中都相同,或此类共同引用的部分/模块是实现这里公开的一些示例实施例的唯一方式。
20.将理解,当一元素或层被称为在另一元素或层上、“连接到”另一元素或层或“耦合到”另一元素或层时,它可以直接在该另一元素或层上、直接连接到该另一元素或层或者直接耦合到该另一元素或层,或者可以存在居间的元素或层。相比之下,当一元素被称为“直接在”另一元素或层“上”、“直接连接到”另一元素或层或“直接耦合到”另一元素或层时,不存在居间的元素或层。相同的数字始终指代相同的元素。如这里所使用的,术语“和/或”包括一个或更多个相关所列举项目的任何和所有组合。
21.如这里所使用的,术语“第一”、“第二”等用作以它们在前的名词的标签,并不暗示任何类型的排序(例如,空间、时间、逻辑等),除非明确地如此定义。此外,可以在两个或更多个附图中使用相同的附图标记来指代具有相同或相似功能的部分、组件、块、电路、单元或模块。然而,这种用法仅是为了说明的简单和讨论的容易;这并不意味着此类组件或单元的构造或架构细节在所有实施例中都相同,或此类共同引用的部分/模块是实现这里公开
的一些示例实施例的唯一方式。
22.除非另有定义,否则这里使用的所有术语(包括技术术语和科学术语)具有与此主题所属领域的普通技术人员通常所理解的相同的含义。还将理解,诸如在常用词典中定义的术语的术语应被解释为具有与其在相关领域的上下文中的含义一致的含义,并且将不在理想化的或过度形式化的意义上被解释,除非在此明确地如此定义。
23.如这里所使用的,术语“模块”是指配置为提供这里描述的与模块相关的功能的软件、固件和/或硬件的任何组合。例如,软件可以体现为软件包、代码和/或指令集或指令,并且在这里描述的任何实施方式中使用的术语“硬件”可以例如单独包括或以任意组合包括总成、硬连线电路、可编程电路、状态机电路和/或存储由可编程电路运行的指令的固件。模块可以共同地或单独地体现为形成较大系统的部分的电路,例如但不限于集成电路(ic)、片上系统(soc)、组件等。
24.这里公开的主题涉及一种gpu系统和一种方法,其提高了访问在ml任务中经常遇到的用于3d矩阵的数据(诸如输入特征图数据和过滤器内核数据)的效率,从而减少存储和存储器访问开销。因此,这里公开的主题可以包括硬件模块和软件模块两者,它们协作以提高用于cnn评估的主要功能(即将卷积运算重铸为矩阵乘法运算)的效率。这里公开的主题也可以扩展到rnn(循环神经网络)、gan(生成对抗网络)和自动编码器。对于某些情况,这里公开的主题也可以提高固定功能单元(诸如但不限于加载存储单元(lsu)和本地存储器单元)的效率。
25.这里公开的一个示例实施例提供了一种装置和一种方法,其通过将卷积运算重铸为矩阵乘法运算来提高卷积运算的效率。在进程初始化之后,可以从主存储器中预提取数据并使用例如im2col技术或存储器高效卷积(mec)技术在gpu的寄存器文件中展开该数据,以将卷积运算重铸为矩阵乘法运算。地址流可以由状态机生成,该状态机有效地减少了针对在寄存器文件中提供数据的存储器提取的数量,并从着色器程序中去除了重要的地址计算工作。状态机还可以为系统存储器生成适当的缓存提示。诸如但不限于nhwc(批次、高度、宽度、通道)的输出格式可以由这里公开的装置和方法两者提供。因此,在ml推理评估以gpu为目标的情况下,这里公开的主题可以减少针对ml推理评估的存储器占用和存储器带宽要求。
26.这里公开的主题既足够灵活又足够可扩展,从而结合操作并支持当前可用的或可能在未来开发的存储器打包和缓存效率技术。各种参数(运行时间和综合时间两者)允许这里公开的系统的状态机随着可开发的用于存储器打包和缓存效率技术的最先进算法而发展。
27.这里公开的主题提供了若干指令集架构(isa)级指令,其可被添加到着色器以提供对输入特征图数据和过滤器权重数据的高效访问。例如,在此称为灵活访问指令的提取指令可以使用gpu的着色器核心外部的硬件来提供ml输入特征图数据和权重数据到gpu的寄存器文件的高效提取和存储,以及用于计算数据的返回。另外,isa级指令可以用于初始化各种地址计算,这些地址计算可以被执行以促进将数据加载到着色器核心中,使得卷积运算可以被高效地重铸为矩阵乘法运算。
28.另一示例实施例可以包括着色器软件,其初始化和配置硬件,随后有利地使用硬件来访问cnn数据,执行转换为矩阵乘法的卷积,并将结果返回到存储器;并被进一步优化
以组合模型的层并有利地执行算术。又一示例实施例可以包括驱动器软件,其协调操作,提供存储器管理和到应用级代码的接口(例如,神经网络应用编程接口(nnapi))或其他中间级工具。
29.在推理评估期间遇到的常见操作是卷积神经网络(cnn)对卷积的评估。然而,gpu可能不适合直接卷积评估。相比之下,gpu可能特别擅长矩阵乘法,并且可以为此类任务实现相当高的效率。因此,这里公开的主题将卷积评估重铸为矩阵乘法,从而使这样的评估更适合gpu的能力。
30.图1a示出了三个示例输入特征图101-103。输入特征图101-103可以是图像的三个通道(rgb)。对于该示例,存在将应用于每个输入特征图101-103的两个过滤器权重内核。更具体地,过滤器权重内核101a和101b将应用于输入特征图101。过滤器权重内核102a和102b将应用于输入特征图102,过滤器权重内核103a和103b将应用于输入特征图103。应理解,输入特征图的数据可以是但不限于图像数据、音频数据、系统数据、制造数据、信号传播数据、销售和营销数据、财务数据、医疗数据、天气数据、科学数据、交通数据和语言数据。图1b示出了按im2col算法展开的图1a的示例输入特征图101-103和对应的过滤器权重内核。图1a和图1b两者中的矩阵中示出的数字和过滤器权重内核旨在指示元素标识。
31.在执行图1b中的[2行
×
27列]
×
[27行
×
9列]的矩阵乘积时,结果(未显示)是增广矩阵,其中每个元素是在输入特征图上应用卷积内核的数值等效结果。因此,卷积可以重铸为矩阵乘法。然而,将卷积运算重铸为矩阵乘法运算的朴素方法可能导致存储器空间和用于存储输入特征图的开销增加约~2倍至~9倍。
[0032]
应注意,图1b中的[27行
×
9列]矩阵101包括元素中的相当多的冗余。这里公开的主题提供了一种技术,其在矩阵乘法评估期间将[27行
×
9列]矩阵传送到gpu的着色器核心而不提取或存储冗余信息。
[0033]
卷积运算虽然是机器学习的基本构建块,但并不适合gpu。片上系统(soc)可以包括专用的固定功能npu,其为卷积提供比gpu更高效的性能/瓦特吞吐量。尽管如此,npu可能不支持所有学习模型和数据类型(fp32),并且soc可能依赖于通用引擎(如gpu)来实现此类机器学习模型。可能存在这样的情况,其中soc上没有npu或者同时使用npu和gpu两者进行负载均衡。为了使gpu支持此类学习模型,可以将卷积重铸为矩阵乘法,这可能导致对应的存储器占用和数据传输开销增加~2倍至~9倍。因此,通过减少与卷积运算相关联的存储器占用来节省带宽可以具有理想的品质。
[0034]
图2绘出了根据这里公开的主题的gpu 200的示例实施例的功能框图,该gpu 200提高了访问在ml任务中经常遇到的数据3d矩阵的效率。gpu200包括寄存器文件201、多个复用器202、多个分级寄存器203、着色器数据路径204、到复用器202和分级寄存器203的旁路205、状态机206和读取地址复用器207。寄存器文件201、多个复用器202、多个分级寄存器203、着色器数据路径204、旁路205和读取地址复用器207可以如图2所示地布置和互连。着色器数据路径204可以表示处理设备,诸如但不限于着色器核心。状态机206可以包括控制寄存器208以及提取和返回地址生成逻辑209。
[0035]
指令解码器210可以解码现有的isa指令和表1-4所示的指令集架构(isa)指令中的每个,这些指令用于配置状态机206并在将卷积运算转换或重铸为矩阵乘法运算时控制运算。控制寄存器208可以从控制提取和返回地址生成逻辑209的主机设备(未示出)接收参
数值以生成针对输入特征图和过滤器权重内核的元素的寻址从而根据需要影响数据的展开以将卷积运算转换为矩阵乘法运算,并为结果数据生成返回地址。
[0036]
一个示例实施例可以包括以下isa指令:
[0037]
表1.用于输入特征图数据的初始化指令
[0038][0039][0040]
表2.用于输入过滤器权重数据的初始化指令
[0041][0042]
表3.用于输出结果数据的初始化指令
[0043]
设置输出数据的基地址
[0044]
表4.用于矩阵乘法期间的运算的指令
[0045][0046]
gpu 200的操作包括三个阶段:初始化阶段、提取阶段和流传输阶段。初始化阶段可以由计算内核的线程开始,该线程基于手头的卷积计算问题来初始化状态机206的寄存器208。例如,使用上面图1a所示的示例输入特征图数据和过滤器权重数据,x维度和y维度可以各自使用设置图像数据的x维度和设置图像数据的y维度初始化指令被设置为5。分量的数量可以使用设置分量的数量初始化指令被设置为3。步幅可以使用设置用于访问图像数据的存储器步幅初始化指令被设置为1,分量的深度可以使用设置图像数据的分量的深度初始化指令被设置为8比特。对于过滤器权重,过滤器的数量可以使用设置过滤器的数量初始化指令被设置为2。对于两个过滤器,x维度和y维度可以各自使用设置过滤器x维度和设置过滤器y维度初始化指令被设置为3。也可以为输入特征图数据和过滤器权重数据两者设置其他参数。在哪里遇到输入数据和在哪里写入返回数据的存储器地址从主机(未示出)到达并且被传递到控制寄存器208。状态机206实际上尚未执行任何提取。
[0047]
一旦设置了所有必要的参数,并且状态机206的状态已经建立,则提取阶段和矩阵乘法通过状态机206在遵循原始输入图像的存储器占用的同时发布fetch_ml指令以将n个寄存器的数据加载到具有展开的图像特征图数据的寄存器文件201中而开始。换句话说,代替使用寄存器文件201中的输入特征图数据的[9
×
27]矩阵,可以仅使用输入特征图数据的[5
×
15]矩阵,这对应于执行输入特征图数据和对应的过滤器权重数据的即时展开,如图1b所示。与先前在主机端展开数据相比,这导致仅约30%的数据的访问和缓存。
[0048]
在提取阶段期间,fetch_ml指令可以像将数据从存储器子系统加载到寄存器文件201中的寄存器集合(未示出)中的dma引擎一样操作。可以类似于任何传统加载指令来保持同步,以便确保从属的算术指令在寄存器文件201被加载数据之前不开始。然后矩阵乘法正常开始。
[0049]
一旦序列开始,流传输阶段就发生。在流传输阶段期间,可以在其他寄存器正在被加载新的输入数据和权重的同时对一些寄存器执行算术运算,从而创建流传输引擎。
[0050]
通过明智地调整将要通过将输入图像分层地分成块来计算的矩阵的大小,可以最好地利用存储器系统缓存来最大化本地缓存一致性并避免最近在缓存中但仍然更近期地被覆盖的数据的过度缺失。状态机206可以配置为提供适当的缓存提示,并且如果由存储器系统支持,则提供对预加载数据的请求。
[0051]
另一示例实施例可以包括硬件,其可以自动跟踪后续算术运算以及后续操作的切断以启动后续提取,从而节省用于发布进一步fetch_ml指令的指令槽。状态机206的硬件还可以配置为在计算出的过滤数据的存储期间帮助高效地计算地址,从而减少总指令计数。状态机206的硬件可以变化以适应各种访问模式,包括例如im2col算法和mec算法以及其他模式。可以取决于情况实例化不同数量的硬件,以允许直接处理输入特征图和过滤器权重内核的不同情况。该特征可以提供关于面积/功率/性能折衷的不同设计点。一般而言,状态机206的硬件可以具有足够的灵活性来处理各种输出张量返回格式,并将能够为nhwc生成地址序列,如:
[0052]
offset_nhwc(n,c,h,w)=n*hwc h*wc w*c c
[0053]
图3是根据这里公开的主题的将gpu中的卷积运算执行为矩阵乘法运算的示例方法300的流程图。该过程开始于301。在302,基于输入特征图的参数和过滤器权重内核的参数来初始化状态机206的寄存器208。包含在表1和表2中的初始化指令可以用于初始化寄存器208。在一个实施例中,输入特征图参数可以涉及多个输入特征图和/或过滤器权重内核的参数可以涉及多个过滤器权重内核。在另一实施例中,输出数据的基地址也可以使用包含在表3中的初始化指令来初始化。
[0054]
在303处,从主机设备接收(多个)输入特征图和(多个)过滤器权重内核的数据的地址。在304,响应于fetch_ml指令(表4),将展开的输入特征图数据和展开的过滤器权重内核数据加载到gpu的寄存器文件中的寄存器。状态机206通过执行地址计算和控制加载/存储操作来控制从寄存器文件201通过着色器数据路径204到寄存器文件201中的目的地寄存器的数据流。在305,将展开的输入特征图数据和展开的过滤器权重内核数据矩阵相乘。在一个实施例中,在寄存器文件201的第二组寄存器正在被加载输入特征图数据和过滤器权重数据的同时,寄存器文件201的第一组寄存器可以由与着色器数据路径204相关联的处理器使用以执行矩阵乘法。在第二组寄存器被加载之后,在第一组寄存器正在被加载新的输入特征图数据和过滤器权重数据的同时,第二组寄存器中的数据可以用于执行矩阵乘法。当矩阵乘法运算完成时,该过程在306结束。
[0055]
尽管已经结合cnn描述了这里公开的主题,但是应理解,这里公开的系统和方法同样适用于rnn、gan和自动编码器。rnn和gan也使用卷积运算作为基础构建块,这些构建块能够被重铸为矩阵乘法运算。此外,更一般地,这里公开的系统和方法可以被扩展以允许与机器学习算法无关的读取和写入操作数的各种其他访问模式。
[0056]
图4绘出了包括根据这里公开的主题的gpu的电子设备400,该gpu执行被重铸为矩阵乘法运算的卷积运算。电子设备400可以用于但不限于计算设备、个人数字助理(pda)、膝上型计算机、移动计算机、网络平板、无线电话、手机、智能电话、数字音乐播放器、或者有线或无线电子设备。电子设备400可以包括通过总线470彼此耦合的控制器410、输入/输出设备420(诸如但不限于键板、键盘、显示器、触摸屏显示器、相机和/或图像传感器)、存储器430、接口440、gpu 450和成像处理单元460。根据这里公开的主题,gpu 450可以执行被重铸为矩阵乘法运算的卷积运算。控制器410可以包括例如至少一个微处理器、至少一个数字信号处理器、至少一个微控制器等。存储器430可以配置为存储将由控制器410使用的命令代码或用户数据。
[0057]
电子设备400和电子设备400的各种系统组件可以包括图像处理单元460。接口440可以配置为包括无线接口,其配置为使用rf信号向无线通信网络发送数据或从无线通信网络接收数据。无线接口440可以包括例如天线。电子系统400也可以用于通信系统(诸如但不限于码分多址(cdma)、全球移动通信系统(gsm)、北美数字通信(nadc)、扩展时分多址(e-tdma)、宽带cdma(wcdma)、cdma2000、wi-fi、市政wi-fi(muni wi-fi)、蓝牙、数字增强型无绳电信(dect)、无线通用串行总线(wireless usb)、具有无缝切换的快速低延迟接入正交频分复用(flash-ofdm)、ieee 802.20、通用分组无线电服务(gprs)、iburst、无线宽带(wibro)、wimax、wimax高级、通用移动电信服务-时分双工(umts-tdd)、高速分组接入(hspa)、演进数据优化(evdo)、长期演进-高级(lte-advanced)、多信道多点分布服务(mmds)、第五代无线(5g)等)的通信接口协议。
[0058]
本说明书中描述的主题和操作的实施例可以以数字电子电路来实现,或以计算机软件、固件或硬件(包括在本说明书中公开的结构及其结构等同物)来实现,或以其中一种或更多种的组合来实现。本说明书中描述的主题的实施例可以实现为一个或更多个计算机程序(即计算机程序指令的一个或更多个模块),其编码在计算机存储介质上以供数据处理装置运行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上,该传播信号被生成以对信息进行编码以传输到合适的接收器装置以供数据处理装置运行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或其组合,或被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或其组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是一个或更多个单独的物理组件或介质(例如,多个cd、磁盘或其他存储设备),或被包括在一个或更多个单独的物理组件或介质(例如,多个cd、磁盘或其他存储设备)中。此外,本说明书中描述的操作可以被实现为由数据处理装置对存储在一个或更多个计算机可读存储设备上或从其他来源接收的数据执行的操作。
[0059]
虽然本说明书可能包含许多特定的实施细节,但是这些实施细节不应被解释为对任何要求保护的主题的范围的限制,而应被解释为对特定实施例特有的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管特征可以在上面被描述为以某些组合起作用,甚至最初如此要求保护,但在一些情况下,来自要求保护的组合的一个或更多个特征可以从该组合中删除,并且要求保护的组合可以针对子组合或子组合的变体。
[0060]
类似地,虽然在附图中按特定顺序描绘了操作,但这不应被理解为要求按所示的特定顺序或按依次的顺序来执行此类操作或执行所有示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中各个系统组件的分离不应理解为在所有实施例中都要求这样的分离,应理解,所描述的程序组件和系统一般可以一起集成在单个软件产品中或打包成多种软件产品。
[0061]
因此,已经在此描述了本主题的特定实施例。其他实施例在所附权利要求的范围内。在一些情况下,权利要求中阐述的动作可以按不同的顺序执行,并仍能达到理想的结果。另外,附图中描绘的过程未必要求所示的特定顺序或依次的顺序以实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
[0062]
本领域技术人员将认识到,可以在广泛的应用范围内修改和改变这里描述的创新概念。因此,要求保护的主题的范围不应限于以上讨论的任何特定的示例性教导,而是由所附权利要求限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献