促进基于瓦片的GPU机器学习加速的方法和装置与流程

文档序号:31482200发布日期:2022-09-10 03:58阅读:147来源:国知局
促进基于瓦片的GPU机器学习加速的方法和装置与流程
促进基于瓦片的gpu机器学习加速的方法和装置
1.优先权声明
2.本技术要求于2020年1月31日提交的序列号为16/779,275,名称为“methods and apparatus to facilitate tile-based gpu machine learning acceleration”的美国非临时申请的权益,其内容通过引用明确地整体合并于此。
技术领域
3.本公开一般涉及处理系统,并且更具体地,涉及一种或多种用于机器学习处理的技术。


背景技术:

4.计算设备通常利用图形处理单元(gpu)来加速用于显示的图形数据的渲染。这种计算设备可以包括例如计算机工作站、诸如所谓的智能手机的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。gpu执行包括一个或多个处理级的图形处理流水线,这些处理级一起操作以执行图形处理命令并输出帧。中央处理单元(cpu)可以通过向gpu发出一个或多个图形处理命令来控制gpu的操作。现今的cpu通常能够并行地执行多个应用,每个应用在执行期间都可能需要使用gpu。


技术实现要素:

5.以下呈现了一个或多个方面的简要概述,以便提供对这些方面的基本理解。该概述不是所有预期方面的广泛综述,并且既不旨在标识所有方面的关键元素,也不限定任何或所有方面的范围。其唯一目的是以简化的形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。
6.在本公开的一个方面,提供了一种方法、计算机可读介质和装置。该装置可以是图形处理单元(gpu)、显示处理器、显示处理单元(dpu)或视频处理器。该装置可以基于第一存储器的存储器大小和与执行计算作业相关联的作业输入大小来确定瓦片(tile)大小。在一些示例中,计算作业可以是被配置成执行机器学习原语(primitive)的一定数量的计算作业之一。该装置还可以基于瓦片大小将与一批计算作业相关联的输入数据从第二存储器加载到第一存储器。此外,该装置可以通过使用加载到第一存储器的输入数据执行该批计算作业来生成批次输出数据。此外,该装置可以将生成的批次输出数据存储到第二存储器。
7.在附图和以下描述中阐述了本公开的一个或多个示例的细节。根据说明书和附图以及权利要求,本公开的其他特征、目的和优点将变得明显。
附图说明
8.图1是图示根据本公开的一种或多种技术的示例内容生成系统的框图。
9.图2是图示根据本公开的一种或多种技术的图1的设备的组件的框图。
10.图3和图4图示了根据本公开的一种或多种技术的示例方法的示例流程图。
具体实施方式
11.一般而言,在此公开的示例提供了用于通过基于瓦片的处理来促进对gpu机器学习加速的改进的技术。在一些示例中,gpu可以被配置为执行图形操作以将一个或多个图形原语渲染到例如显示器上。在一些示例中,gpu可以附加地或替代地被配置成执行机器学习(ml)操作来渲染一个或多个ml原语。例如,gpu可被配置为执行通用“着色器程序”,以便执行除图形操作以外的计算。由于gpu处理元件相对高度并行的特性,某些类型的计算由gpu执行可能比例如由cpu执行更有效率。
12.例如,gpu的处理元件可以被配置为作为单指令多数据(simd)系统来操作。在simd系统中,gpu的多个处理元件各自执行相同着色器程序的指令,但是对不同的数据执行。在特定处理元件上执行的特定指令可以被称为“计算作业”、“线程”或“纤程(fiber)”。gpu的每个处理元件可被视为执行不同的计算作业,因为给定计算作业的数据可能不同。然而,在处理元件上执行的指令与在其他处理元件上执行的指令是相同着色器程序的同一指令。以这种方式,gpu的处理元件的simd结构允许gpu并行(例如,同时)执行许多任务,并且因此促进一些计算的基于gpu的加速。
13.作为说明性示例,经由cpu执行的应用,诸如视频游戏,可以包括(例如,通过向gpu提供图形操作)促进图形渲染的图形引擎和确定提供给用户的游戏性难度级别的游戏难度引擎。在一些示例中,游戏难度引擎可以基于玩家动作和/或事件来(例如,定期地、不定期地、基于事件地和/或作为一次性事件地)更新游戏性难度级别。例如,如果玩家难以越过障碍,则游戏难度引擎可以确定降低游戏性难度级别。
14.在一些示例中,游戏难度引擎可以使用机器学习技术来确定提供给玩家的适当的游戏性难度级别。在一些示例中,cpu可以将游戏难度引擎的一些功能卸载到gpu。例如,cpu可以向gpu提供ml命令和ml数据以用于处理。ml命令的示例包括ml原语,如卷积运算、通用矩阵乘法(gemm)运算、池化运算、批量归一化运算、图像处理操作等。ml数据的示例可以包括在执行ml原语时gpu可以使用的原语信息、状态信息、常数数据等。
15.在一些示例中,cpu可以通过将ml命令和ml数据存储在cpu和gpu可访问的存储器中来向gpu提供ml命令和ml数据。然后,cpu可以指示gpu从存储器中访问ml命令和ml数据。然而,应当理解,由于例如可以由设备的其他组件共享的存储器总线,存储器时延可能与访问(例如,读取和/或写入)存储器的数据相关联。
16.在此公开的示例技术使用直接耦合到gpu的gpu存储器(gmem)。例如,gpu可以接收与ml原语相关联的ml命令,可以将对应于ml原语的ml数据从存储器加载到gmem,使用gmem处的ml数据执行ml命令,然后将ml命令的输出写入存储器。在一些示例中,gmem可以是与gpu一起在芯片上的片上存储器,与gpu的组件相对密切邻近,并且可以与gpu内的专用存储器总线相关联,该专用存储器总线向gpu提供相对高的存储器带宽,使得gpu的处理元件能够有效地访问gmem处的数据。相反,为了访问存储在cpu和gpu可访问的存储器(有时称为“系统存储器”、“全局存储器”或“共享存储器”)中的数据,gpu可能必须与设备的其他组件(诸如cpu)共享存储器总线,这可能导致更有限的可用带宽。
17.在一些示例中,执行ml原语可以对应于生成一定数量的输出。在一些这样的示例中,被启动来执行ml原语的计算作业(有时被称为“线程”或“纤程”)的数量可以取决于每个计算作业的执行所生成的输出的数量。例如,执行ml原语可能导致生成1000个输出。然而,
为了生成1000个输出,gpu可以启动100个计算作业,每个计算作业生成10个作业输出。在一些示例中,执行ml原语可以包括将ml原语映射到着色器程序,并在gpu处执行着色器程序。着色器程序可以表示由gpu执行的用于实现流水线的软件和/或固件,诸如图1的图形处理流水线107和/或图1的ml处理流水线108。在一些这样的示例中,通过每个计算作业的执行生成的作业输出的数量可能取决于着色器程序的结构。例如,着色器程序的开发者可以确定由每个计算作业的执行所生成的作业输出的数量。因此,应当理解,在一些示例中,可以基于映射到ml原语的着色器程序来确定通过执行与ml原语相关联的计算作业可以生成的(多个)作业输出的数量。
18.然而,因为gmem的大小可能由于物理区域的约束而受到限制,所以应该理解,gmem可能没有足够的存储器来存储来自存储器的用于执行与ml原语相关联的ml命令的ml数据。例如,系统存储器可以存储吉字节(gb)的数据,系统存储器可以存储兆字节(mb)的ml数据,而gmem可能能够存储千字节(kb)的数据。
19.因此,在此公开的示例技术有助于基于例如gmem的存储器大小和与执行每个计算作业相关联的存储器大小,将计算作业和对应的ml数据划分成瓦片。在一些示例中,与执行每个计算作业相关联的存储器大小可以取决于用于执行该计算作业的输入的数量(以及它们相应的大小)。例如,执行一个计算作业可以包括将ml数据加载到gmem的一个存储器单元中,而gmem的存储器大小可以是十个存储器单元。在一些这样的示例中,瓦片可以对应于十个计算作业(有时称为“一批计算作业”)。此外,瓦片的大小可以对应于一批计算作业中的计算作业的数量(例如,在以上示例中,瓦片大小是十个计算作业)。
20.在此公开的示例技术确定瓦片大小,然后将与一批计算作业相关联的输入数据加载到gmem。例如,所公开的技术可以将用于执行十个计算作业的输入数据从系统存储器加载到gmem。示例技术然后可以使用加载在gmem上的输入数据来执行十个计算作业。因此,在此公开的示例技术通过减少gpu在执行每个计算作业时访问输入数据的需要而有助于减少存储器读取时延。也就是说,所公开的技术确定一定数量的要执行的计算作业(例如,第一批计算作业),将相应的输入数据从系统存储器加载到gmem,然后使用加载到gmem的输入数据来执行第一批计算作业,而不是确定执行计算作业,针对与执行计算作业相关联的输入数据而访问系统存储器,然后执行该计算作业。示例技术然后可以通过将执行第一批计算作业所生成的输出数据(有时称为“批次输出数据”)写入系统存储器来快速处理(dispatch)第一批计算作业,同时加载与第二批计算作业相关联的输入数据(例如,从系统存储器加载到gmem)。以这种方式,示例技术有助于在计算作业的每次快速处理之间交织输入数据的加载(例如,从系统存储器到gmem)和输出数据的存储(例如,从gmem到系统存储器)。
21.在一些示例中,gpu的处理元件可以能够写入gmem。例如,gpu的一个或多个处理元件可以执行计算作业并将计算作业的输出(有时称为“作业输出数据”)写入gmem。在一些这样的示例中,gpu可以促进将通过执行第一批计算作业中的每个计算作业而生成的作业输出数据写入gmem。如上所述,与设备的其他组件共享的存储器总线相比,gmem可以向gpu提供相对较高的存储器带宽。因此,在一些这样的示例中,在此公开的示例技术可以通过减少gpu在执行每个计算作业时将作业输出数据写入系统存储器的需求来促进减少存储器写入时延。相反,通过使gpu能够将相应的作业输出数据写入gmem,所公开的技术有助于例如在
第一批计算作业的执行完成之后并且在第一批计算作业的快速处理期间将批次输出数据一次性写入系统存储器。
22.在其中处理元件可以向gmem写入的一些这样的示例中,所公开的技术可以基于例如gmem的存储器大小、作业输入数据(例如,用于执行一个计算作业的输入数据)的存储器大小以及作业输出数据(例如,通过执行一个计算作业生成的输出数据)的存储器大小,来促进将计算作业和对应的ml数据划分成瓦片。例如,执行一个计算作业可以与使用gmem的一个存储器单元的作业输入数据和使用gmem的一个存储器单元的作业输出数据相关联。在一些这样的示例中(并且参考上面的示例,其中gmem的存储器大小可以是十个存储器单元),瓦片的大小可以对应于五个计算作业(例如,一批计算作业包括五个计算作业)。
23.如此处所使用的,瓦片可以指与相应的一批计算作业相关联的存储器的逻辑块。瓦片的大小(或“瓦片大小”)可以指示可以与瓦片相关联的特定数量的计算作业。例如,在上面的示例中,其中gmem的存储器大小是十个存储器单元,并且与计算作业相关联的存储器资源是两个存储器单元(例如,一个存储器单元与作业输入数据相关联,一个存储器单元与作业输出数据相关联),则可以将瓦片的大小确定为五个计算作业。此外,如果执行ml原语包括执行十个计算作业,则可以将五个计算作业分配给第一瓦片,而剩余的五个计算作业可以分配给第二瓦片。在一些示例中,可以基于公式将计算作业分配给相应的瓦片。例如,每个计算作业可以与相应的标识符相关联,因此,计算作业标识符可以用于将计算作业映射到其相应的瓦片。然而,应当理解,其他示例可以采用附加的或替代的技术来将计算作业分配给相应的瓦片。
24.应当理解,不管gpu的处理元件是否能够写入gmem,在一批计算作业完成之后,所公开的技术都可以将第二批计算作业的作业输入数据从系统存储器加载到gmem,使用存储在gmem的作业输入数据执行第二批计算作业,然后将作业输出数据写入系统存储器。此外,应当理解,所公开的技术使得能够对于每个后续批次计算作业重复将作业输入数据从存储器加载到gmem,使用在gmem加载的作业输入数据执行计算作业,以及将作业输出数据写入系统存储器。例如,参考上面的示例,其中gpu可以启动100个计算作业,每个计算作业生成10个作业输出以生成1000个ml原语输出,所公开的技术可以基于瓦片大小和计算作业的总数(例如,在上面的示例中为100个计算作业)来确定要启动的计算作业批次的数量(或瓦片的数量)。例如,在上述示例中,处理元件不写入gmem,并且瓦片大小为十个计算作业,则所公开的技术可以采用十批次每个批次十个计算作业来生成1000个ml原语输出。相应地,应当理解,执行ml原语所需的批次数量可能取决于执行与ml原语相关联的每个计算作业所关联的存储器资源(例如,当处理元件能够写入gmem时,作业输入数据的存储器大小和作业输出数据的存储器大小)。
25.因此,应当理解,在此公开的示例技术有助于基于瓦片的gpu机器学习加速。此外,所公开的技术通过减少存储器读取时延而有助于提高执行ml原语的性能。在一些示例中,所公开的技术还可以通过减少存储器写入时延而有助于提高执行ml原语的性能。
26.下文将参考附图更全面地描述系统、装置、计算机程序产品和方法的各个方面。然而,本公开可以以许多不同的形式实施,并且不应被解释为限于贯穿本公开呈现的任何具体结构或功能。相反,提供这些方面是为了使本公开全面和完整,并将本公开的范围完全传达给本领域技术人员。基于在此的教导,本领域技术人员应该理解,本公开的范围旨在覆盖
在此公开的系统、装置、计算机程序产品和方法的任何方面,无论是独立于本公开的其他方面实施还是与本公开的其他方面组合实施。例如,可以使用在此阐述的任意数量的方面来实现装置或实践方法。此外,本公开的范围旨在覆盖这样的装置或方法,该装置或方法使用除了或不同于在此阐述的本公开的各个方面的其他结构、功能,或结构和功能来实践。在此公开的任何方面可以由权利要求的一个或多个元素来体现。
27.尽管在此描述了各个方面,但是这些方面的许多变化和置换都落入本公开的范围内。尽管提到了本公开的方面的一些潜在益处和优点,但是本公开的范围并不旨在限于特定的益处、用途或目标。相反,本公开的各方面旨在广泛适用于不同的无线技术、系统配置、网络和传输协议,其中一些在附图和以下描述中以示例的方式进行说明。详细描述和附图仅仅是对本公开的说明,而不是限制,本公开的范围由所附权利要求及其等同物限定。
28.参考各种装置和方法给出了若干个方面。这些装置和方法在以下详细描述中描述,并在附图中由各种块、组件、电路、过程、算法等(统称为“元素”)图示。这些元素可以使用电子硬件、计算机软件或其任意组合来实现。这些元素实现为硬件还是软件取决于特定的应用和对整个系统的设计约束。
29.举例来说,元素或元素的任何部分或元素的任何组合可以被实现为包括一个或多个处理器(也可以称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(gpu)、通用gpu(gpgpu)、中央处理单元(cpu)、应用处理器、数字信号处理器(dsp)、精简指令集计算(risc)处理器、片上系统(soc)、基带处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)、状态机、门控逻辑、分立硬件电路以及被配置为执行本公开中描述的各种功能的其他合适的硬件。处理系统中的一个或多个处理器可以执行软件。软件能够被广义地解释为意味着指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行程序、执行线程、过程、函数等,无论被称为软件、固件、中间件、微码、硬件描述语言还是其他。术语“应用”可以指软件。如在此所述,一种或多种技术可以指被配置成执行一种或多种功能的应用(例如,软件)。在这样的示例中,应用可以存储在存储器上(例如,处理器的片上存储器、系统存储器或任何其他存储器)。这里描述的硬件,如处理器,可以被配置为执行该应用。例如,应用可以被描述为包括代码,当由硬件执行时,该代码使得硬件执行这里描述的一种或多种技术。作为示例,硬件可以从存储器访问代码,并执行从存储器访问的代码,以执行这里描述的一种或多种技术。在一些示例中,在本公开中标识了组件。在这样的示例中,组件可以是硬件、软件或其组合。这些组件可以是单独的组件或单个组件的子组件。
30.相应地,在此描述的一个或多个示例中,所描述的功能可以用硬件、软件或其任意组合来实现。如果在软件中实现,这些功能可以存储在或编码为计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储介质。存储介质可以是能够由计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质能够包括随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程rom(eeprom)、光盘存储装置、磁盘存储装置、其他磁存储设备、上述类型的计算机可读介质的组合,或者能够用于以计算机能够访问的指令或数据结构的形式存储计算机可执行代码的任何其他介质。
31.一般而言,在此公开的示例提供了用于基于瓦片的gpu机器学习加速的技术。示例技术可以通过基于存储器的大小(例如,gmem的存储器大小和与执行与ml原语相关联的计
算作业相关联的存储器大小)来确定瓦片的大小(例如,瓦片大小),基于ml原语和每个计算作业的输出来确定要执行的瓦片的数量,以及在每个批次执行之间在系统存储器、gpu和gmem之间交织存储器加载和存储器写入操作,来提高性能并降低与执行ml原语相关联的功耗。例如,所公开的技术通过将由第一批计算作业的执行所生成的批次输出数据从gmem写入系统存储器,同时将与第二批计算作业相关联的输入数据从系统存储器加载到gmem,来实现交织存储器访问。由此,应当理解,在此公开的示例提供了用于减少通信接口(例如,总线)上的负载和/或减少处理单元(例如,被配置为执行在此公开的一种或多种技术的任何处理单元,诸如gpu、dpu等)的负载的技术。例如,本公开描述了用于利用机器学习技术的任何设备中的系统处理的技术。在本公开中描述了其他示例益处。
32.如此处所使用的,术语“内容”的实例可以指“图形内容”、“图像”,反之亦然。不管这些术语是用作形容词、名词还是其他词类,都是如此。在一些示例中,如此处所使用的,术语“图形内容”可以指由图形处理流水线的一个或多个进程产生的内容。在一些示例中,如此处所使用的,术语“图形内容”可以指由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如此处所使用的,术语“图形内容”可以指由图形处理单元产生的内容。
33.在一些示例中,如此处所使用的,术语“显示内容”可以指由被配置成执行显示处理的处理单元生成的内容。在一些示例中,如此处所使用的,术语“显示内容”可以指由显示处理单元生成的内容。图形内容可以被处理以成为显示内容。例如,图形处理单元可以向缓冲器(可以称为帧缓冲器)输出图形内容,例如帧。显示处理单元可以从缓冲器中读取图形内容,如一个或多个帧,并对其执行一种或多种显示处理技术以生成显示内容。例如,显示处理单元可以被配置成对一个或多个渲染层执行合成以生成帧。作为另一个示例,显示处理单元可以被配置为将两个或更多层合成、混合或以其他方式组合在一起成为单个帧。显示处理单元可以被配置成对帧执行缩放(例如,放大或缩小)。在一些示例中,帧可以指层。在其他示例中,帧可以指已经被混合在一起以形成帧的两层或更多层(例如,帧包括两层或更多层,并且包括两层或更多层的帧可以随后被混合)。
34.图1是图示被配置成实现本公开的一种或多种技术的示例内容生成系统100的框图。内容生成系统100包括设备104。设备104可以包括用于执行这里描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是soc的组件。设备104可以包括被配置成执行本公开的一种或多种技术的一个或多个组件。在所示的示例中,设备104包括处理单元120和系统存储器124。在一些示例中,设备104可以包括多个附加或替代组件,如通信接口126、收发器132、接收器128、传送器130、显示处理器127和显示客户端131。
35.在图1所图示的示例中,处理单元120包括内部存储器121。处理单元120可被配置成诸如如图形处理流水线107中那样执行图形处理。处理单元120还可以被配置成诸如在ml处理流水线108中执行ml处理。在一些示例中,设备104可以包括显示处理器,如显示处理器127,以在由显示客户端131呈现之前对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置成对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。
36.对显示客户端131的引用可以指一个或多个显示器。例如,显示客户端131可以包括单个显示器或多个显示器。显示客户端131可以包括第一显示器和第二显示器。在进一步
的示例中,图形处理的结果可以不显示在设备上(例如,第一和第二显示器可以不接收任何用于在其上呈现的帧)。相反,帧或图形处理结果可以被转移到另一个设备。显示客户端131可以被配置为显示或者以其他方式呈现由显示处理器127处理的帧。在一些示例中,显示客户端131可以包括以下中的一个或多个:液晶显示器(lcd)、等离子体显示器、有机发光二极管(oled)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
37.处理单元120外部的存储器,如存储器124,可以由处理单元120访问。例如,处理单元120可以被配置为从诸如存储器124之类的外部存储器读取和/或向其写入。处理单元120可以通过总线通信地耦合到存储器124。在一些示例中,处理单元120和存储器124可以通过总线或不同的连接彼此通信耦合。
38.应当理解,在一些示例中,设备104可以包括内容编码器/解码器,该内容编码器/解码器被配置成从诸如存储器124和/或通信接口126之类的任何源接收图形和/或显示内容。存储器124可以被配置成存储接收到的编码或解码内容。在一些示例中,内容编码器/解码器可以被配置为(例如,从存储器124和/或通信接口126)接收编码的像素数据形式的编码或解码的内容。在一些示例中,内容编码器/解码器可以被配置为编码或解码任何内容。
39.内部存储器121或存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或存储器124可以包括ram、sram、dram、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、磁数据介质或光存储介质,或者任何其他类型的存储器。
40.根据一些示例,内部存储器121或存储器124可以是非暂时性存储介质。术语“非暂时性的”可以指示存储介质不体现在载波或传播信号中。然而,术语“非暂时性”不应被解释为意味着内部存储器121或存储器124是不可移动的或者其内容是静态的。作为一个示例,存储器124可以从设备104移除并移动到另一个设备。作为另一个示例,存储器124可能是不可从设备104移除的。
41.处理单元120可以是中央处理单元(cpu)、图形处理单元(gpu)、通用gpu(gpgpu)或可被配置成执行诸如图形处理、计算处理、ml处理等之类的系统处理的任何其他处理单元。在一些示例中,处理单元120可以集成到设备104的主板中。在一些示例中,处理单元120可以存在于安装在设备104的主板的端口中的图形卡上,或者可以以其他方式并入被配置为与设备104互操作的外围设备中。处理单元120可以包括一个或多个处理器,如一个或多个微处理器、gpu、专用集成电路(asic)、现场可编程门阵列(fpga)、算术逻辑单元(alu)、数字信号处理器(dsp)、分立逻辑器件、软件、硬件、固件、其他等效的集成或分立逻辑电路或其任意组合。如果这些技术部分地在软件中实现,则处理单元120可以将软件的指令存储在合适的非暂时性计算机可读存储介质(例如,内部存储器121)中,并且可以使用一个或多个处理器来执行硬件中的指令以执行本公开的技术。前述的任何一种,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
42.在一些方面,内容生成系统100可以包括通信接口126。通信接口126可以包括接收器128和传送器130。接收器128可以被配置成执行这里针对设备104描述的任何接收功能。另外,接收器128可以被配置成从另一设备接收信息(例如,眼睛或头部位置信息、渲染命令和/或位置信息)。传送器130可以被配置成执行这里针对设备104描述的任何传送功能。例
如,传送器130可以被配置为向另一设备发送信息,该信息可以包括对内容的请求。接收器128和传送器130可以组合成收发器132。在这样的示例中,收发器132可以被配置成执行这里针对设备104描述的任何接收功能和/或传送功能。
43.在一些示例中,来自处理单元120的用于经由显示客户端131显示的图形内容不是静态的,而是可以变化的。相应地,显示处理器127可以周期性地刷新经由显示客户端131显示的图形内容。例如,显示处理器127可以周期性地从系统存储器124中检索图形内容,其中图形内容可能已经通过执行将图形内容输出到系统存储器124的应用(和/或处理单元120)而被更新。
44.应当理解,虽然在图1中被示为单独的组件,但是在一些示例中,显示客户端131(有时被称为“显示面板”)可以包括显示处理器127。此外,在一些示例中,处理单元120可以包括显示处理器127。
45.再次参考图1,在某些方面,处理单元120可以被配置成执行图形操作来渲染一个或多个图形原语以便例如经由显示客户端131进行显示。在一些示例中,处理单元120可被配置成执行通用“着色器程序”,以便为除图形之外的应用执行计算(例如,用于执行机器学习技术)。在图1所图示的示例中,处理单元120可以包括ml加速处理组件198,其被配置成经由基于瓦片的处理来促进gpu机器学习加速。例如,ml加速处理组件198可被配置成基于第一存储器的存储器大小和与执行计算作业相关联的作业输入大小来确定瓦片大小,并且其中该计算作业是被配置成执行ml原语的一定数量的计算作业中的一个。示例ml加速处理组件198还可被配置成基于瓦片大小将与一批计算作业相关联的输入数据从第二存储器加载到第一存储器。示例ml加速处理组件198还可被配置成通过使用加载到第一存储器的输入数据执行该批计算作业来生成批次输出数据。此外,示例ml加速处理组件198可以被配置成将所生成的批次输出数据存储到第二存储器。
46.在一些示例中,示例ml加速处理组件198可被配置成基于用于执行计算作业的输入数据的存储器大小来确定与执行计算作业相关联的作业输入大小。在一些示例中,示例ml加速处理组件198可被配置成进一步基于与执行计算作业相关联的作业输出大小来确定瓦片大小。在一些这样的示例中,作业输出大小可以基于由执行计算作业所生成的输出数据的存储器大小。在一些示例中,示例ml加速处理组件198可以被配置成通过将由该批计算作业中的每个计算作业的执行所生成的输出数据写入第一存储器,并且在该批计算作业的执行完成之后将所生成的输出数据从第一存储器存储到第二存储器,来将所生成的批次输出数据存储到第二存储器。在一些示例中,该批计算作业可以是第一批计算作业,并且示例ml加速处理组件198可以被配置成将与第二批计算作业相关联的输入数据从第二存储器加载到第一存储器,与第二批计算作业相关联的输入数据的加载与在第一批计算作业的执行完成之后将所生成的输出数据存储到第二存储器并行执行。
47.在一些示例中,示例ml加速处理组件198还可被配置成将与第二批计算作业相关联的第二输入数据从第二存储器加载到第一存储器,通过使用加载到第一存储器的第二输入数据执行第二批计算作业来生成第二批次输出数据,以及将所生成的第二批次输出数据存储到第二存储器。
48.在一些示例中,第一存储器可以与第一时延相关联,而第二存储器可以与大于第一时延的第二时延相关联。在一些示例中,第一存储器可以是图形处理器的片上存储器。在
一些示例中,图形处理器可以包括被配置成执行该批计算作业的多个处理元件。在一些示例中,瓦片大小可以对应于该批计算作业的计算作业的数量。
49.如在此所述,诸如设备104之类的设备可以指被配置成执行在此所述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、终端产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持设备(例如,便携式视频游戏设备或个人数字助理(pda))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、非可穿戴设备、显示器或显示设备、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备、或被配置为执行在此描述的一种或多种技术的任何设备。这里的处理可以被描述为由特定组件(例如,gpu)执行,但是在进一步的实施例中,可以使用与公开的实施例一致的其他组件(例如,cpu)来执行。
50.图2是图示了根据本公开的各方面的设备(如图1的示例设备104)的组件的框图200。在图2所示的示例中,框图200包括cpu 210、gpu 220和存储器124。在一些示例中,cpu 210和gpu 220可以实现图1的处理单元120的一个或多个方面。例如,cpu 210和/或gpu 220可以有助于实现图1的ml加速处理组件198的一个或多个方面。如图2所示,示例cpu 210、示例gpu 220和示例存储器124通过示例总线202进行通信。示例总线202可以使用总线结构和/或总线协议的任意组合来实现。
51.在图2所图示的示例中,cpu 210可以包括一个或多个处理器,其被配置为执行应用212、图形驱动器214和/或操作系统216。图2的示例gpu 220可以包括被配置成执行命令引擎222的一个或多个处理器、一个或多个处理元件224和gpu存储器226。图2的示例存储器124可以被配置为存储命令缓冲器230和ml数据缓冲器232。
52.在一些示例中,cpu 210可以被配置为执行使得cpu 210执行这里公开的一个或多个示例技术的指令。在一些示例中,gpu 220可以被配置为执行使得gpu 220执行这里公开的一个或多个示例技术的指令。在一些示例中,存储器124可以存储指令,这些指令在被执行时使得cpu 210和/或gpu 220执行这里公开的一个或多个示例技术。
53.在所图示的示例中,cpu 210可以被配置成执行应用212。应用212可以是将ml任务的执行卸载到gpu 220的应用。例如,cpu 210可以使用gpu 220来执行一个或多个ml原语。例如,应用212可以包括使得gpu 220执行与ml原语相关联的一个或多个计算作业的操作。在一些示例中,应用212可以向图形驱动器214发出操作。在一些示例中,图形驱动器214可以包括运行时服务(例如,应用编程接口(api)),该运行时服务被配置成将从应用212接收的操作转译成图形驱动器214可使用的格式,以提供给gpu 220。
54.示例图形驱动器214可以从应用212接收操作,并且可以控制gpu 220的操作以便于执行操作。例如,图形驱动器214可以生成一个或多个命令流,将生成的命令流存储在存储器124的命令缓冲器230中,并指示gpu 220执行命令流。在一些示例中,图形驱动器214可以将命令流存储到命令缓冲器230中,并且经由操作系统216(例如,经由一个或多个系统调用)与gpu 220通信。
55.示例操作系统216可以提供应用212和图形驱动器214可以在其上操作的软件平台。在一些示例中,操作系统216可以管理与cpu 210、gpu 220和/或存储器124之间的数据
通信和/或转移相关的硬件细节。
56.在图2所图示的示例中,gpu 220可以被配置为执行由cpu 210向gpu 220发出的命令。由gpu 220执行的命令可以包括通用计算命令、图形命令、状态编程命令、存储器转移命令等。在一些示例中,gpu 220可以被配置成执行图形操作来渲染一个或多个图形原语以供(例如,经由图1的显示客户端131)呈现。在一些这样的示例中,当在cpu 210上执行的应用212需要图形处理时,cpu 210可以向gpu 220提供图形数据用于渲染,并且向gpu 220发出一个或多个图形命令。图形数据可以包括顶点缓冲区、纹理数据、表面数据等。在一些示例中,cpu 210可以向gpu 220可以访问的存储器124提供图形命令和图形数据。
57.在一些示例中,gpu 220可被配置成执行通用“着色器程序”以便于执行除图形之外的应用的计算。例如,gpu 220可以被配置为执行ml原语,如卷积运算、gemm运算、池化运算、批量归一化运算、图像处理操作等。在一些这样的示例中,当在cpu 210上执行的应用212需要ml处理时,cpu 210可以向gpu 220提供ml数据用于处理,并且向gpu 220发出一个或多个ml命令。ml数据可以包括用于执行ml命令的原语数据。在一些示例中,cpu 210可以将ml数据存储在gpu 220可以访问的存储器124的ml数据缓冲器232中,并且可以将ml命令存储在命令缓冲器230中。
58.在一些示例中,gpu 220的命令引擎222和一个或多个处理元件224可以被配置为实现图1的示例图形处理流水线107的各方面和/或可以被配置为实现图1的示例ml处理流水线108的各方面。在一些示例中,gpu 220可以被配置为执行使得gpu 220执行这里公开的一个或多个示例技术的指令。
59.在所图示的示例中,命令引擎222可以(例如,从命令缓冲器230)接收ml命令并且配置处理元件224以执行用于实施ml命令的各种操作。如上所述,命令引擎222和处理元件224可以被配置成实现图1的示例ml处理流水线108的各方面。
60.在所图示的示例中,处理元件224(有时被称为“着色器单元”、“着色器核心”或“着色器处理器”)可以包括一个或多个处理元件,每个处理元件可以是可编程处理元件或固定功能处理元件。gpu 220的处理元件224允许ml命令的多个计算作业以并行方式同步执行,从而增加ml命令的吞吐量,并促进ml命令的基于gpu的加速。可编程处理元件可被配置成执行从cpu 210下载到gpu 220上的一个或多个着色器程序。在一些示例中,着色器程序可以是以着色语言编写的程序的编译版本。在一些示例中,可编程处理元件可以包括被配置成执行计算着色器程序的计算处理元件。
61.固定功能处理元件可以包括硬连线的硬件来执行某些功能。尽管固定功能处理元件可以(例如,通过一个或多个控制信号)被配置为执行不同的功能,但是固定功能硬件可以不包括能够接收用户编译的程序(例如,来自图形驱动器214的着色器程序)的程序存储器。
62.尽管以下描述针对执行计算任务(或计算任务的子集,诸如ml任务)的gpu,但是应当理解,可以基于加载的以在gpu上运行的软件(例如,(多个)着色器程序)以及用于控制gpu的操作的驱动器(例如,图形驱动器214)来选择性地驱动gpu 220以执行图形处理任务、gpgpu任务或适合于gpu的任何其他类型的任务。由此,虽然这些命令可以包括一个或多个计算命令、一个或多个ml命令、一个或多个图形命令、一个或多个状态命令、一个或多个存储器转移命令,但是所公开的命令针对可以由gpu 220使用以执行由cpu 210发出的一个或
多个ml原语的ml命令。
63.一般而言,ml命令可以使gpu 220生成与ml原语相关联的一定数量的输出(有时称为“原语输出”)。在一些这样的示例中,一旦gpu 220(例如,从命令缓冲器230)接收到ml命令,控制可以被传递给gpu 220,用于启动一个或多个计算作业,以生成所请求数量的输出。
64.例如,gpu 220可以确定与ml原语的执行相关联的输出的数量。例如,执行ml原语可以与生成1000个输出相关联。gpu 220(和/或命令引擎222)然后可以确定启动多少计算作业以便于生成所请求数量的原语输出。例如,如果执行计算作业生成10个作业输出,则gpu 220可以确定启动100个计算作业以生成所请求的ml原语的1000个输出。
65.在一些示例中,当执行启动的计算作业中的每个计算作业时,gpu 220可以(例如,从ml数据缓冲器232)访问ml数据。例如,当启动100个计算作业中的每一个时,gpu 220可以从存储器124的ml数据缓冲器232中访问与相应计算作业中的每一个相关联的ml数据,使用所访问的ml数据执行相应的计算作业,然后将通过执行100个计算作业中的每一个而生成的输出写入存储器124的ml数据缓冲器232。然而,应当理解,从存储器124读取和/或向存储器124写入可能与由于例如与存储器124相关联的存储器带宽、总线202上的流量等引起的存储器时延相关联。在一些示例中,这种与在存储器124处访问数据相关联的这种一般存储器时延(例如,当需要从中读取数据和/或向其写入数据时与当相应操作完成时之间的延迟)可能导致在gpu 230处执行ml原语时性能降低和功率使用的增加。
66.在图2所图示的示例中,gpu 220包括直接耦合到gpu 220的gpu存储器226(gmem)使得gpu 220可以在不使用总线202的情况下从gpu存储器226读取数据和/或向gpu存储器226写入数据。例如,gpu存储器226可以是与gpu 220一起在芯片上的片上存储器,并且相对紧密靠近gpu 220的组件(例如,命令引擎222和/或处理元件224),并且可以与gpu 220内的专用总线相关联。因此,gpu 220可以使用本地存储装置(例如,gpu存储器226)来本地处理数据,而不使用片外存储器(例如,存储器124)。在一些示例中,gpu存储器226的各方面可以由图1的内部存储器121来实现。
67.在一些示例中,gpu存储器226的容量可能受到gpu 220(和/或,更一般地,图1的设备104)的可用面积的限制。例如,移动设备提供了关于gpu存储器226的存储器大小的物理区域约束。由此,将用于启动与ml命令相关联的所有计算作业的输入数据都加载到gpu存储器226可能是不实际的。
68.相应地,在此公开的示例技术有助于计算作业的基于瓦片的处理。例如,所公开的技术确定与计算作业的执行相关联的存储器大小,然后基于gpu存储器226的存储器大小来确定可以执行多少计算作业,以确定瓦片大小。示例技术然后可以基于每个瓦片的大小来确定采用多少批次的计算作业(例如,多少个瓦片)以便于执行ml原语。
69.在图示的示例中,gpu 220可以(例如,经由图形驱动器214和/或存储器124的命令缓冲器230)接收与ml原语相关联的命令,所述ml原语用于生成一定数量的原语输出(例如,1000个输出)。gpu 220(和/或命令引擎222)可以基于由每个计算作业的执行所生成的作业输出来确定启动多少计算作业来生成所请求数量的原语输出。例如,如果计算作业生成10个输出,则gpu 220(和/或命令引擎222)可以确定启动100个计算作业,其中每个计算作业生成10个输出,从而生成针对ml原语所请求的1000个输出。应当理解,在一些示例中,与ml原语相关联的计算作业可以是使用不同ml数据执行的相同计算作业。
70.示例gpu 220(和/或命令引擎222)然后可以基于gpu存储器226的存储器大小和与执行与ml原语相关联的计算作业相关联的存储器大小来确定瓦片大小。在一些示例中,与执行计算作业相关联的存储器大小可以基于与执行计算作业相关联的作业输入数据的存储器大小。例如,计算作业可能使用消耗五个存储器单元的作业输入数据。在一些这样的示例中,gpu 220可以确定与执行每个计算作业相关联的存储器大小是五个存储器单元。相应地,gpu 220(和/或命令引擎222)可以将瓦片大小确定为gpu存储器226的存储器大小与执行每个计算作业所关联的存储器大小的比率。例如,如果gpu存储器226的存储器大小是五十个存储器单元,则gpu 220可以将瓦片大小确定为十个计算作业(例如,(50个存储器单元)/(每个计算作业5个存储器单元)=10个计算作业)。相应地,每批计算作业可以包括十个计算作业。此外,gpu 220可以基于瓦片大小(例如,十个计算作业)和所请求的原语输出的数量(例如,1000个原语输出)来确定要启动多少批次的计算作业。例如,在上述示例中,gpu 220可以确定启动十个批次,其中每个批次包括十个计算作业,以启动100个计算作业并生成针对ml原语所请求的1000个输出。
71.在一些示例中,与执行计算作业相关联的存储器大小可以基于与执行关联于ml原语的计算作业相关联的作业输入数据的存储器大小以及通过执行计算作业生成的作业输出数据的存储器大小。例如,在处理元件224可以写入gpu存储器226的示例中,当确定与执行计算作业相关联的存储器大小时,gpu 220还可以包括作业输出数据的存储器大小。例如,执行计算作业可以生成消耗五个存储器单元的十个作业输出。在一些这样的示例中,gpu 220可以确定与执行计算作业相关联的存储器大小是十个存储器单元(例如,五个存储器单元与作业输入数据相关联,五个存储器单元与作业输出数据相关联)。相应地,gpu 220(和/或命令引擎222)可以将瓦片的大小确定为gpu存储器226的存储器大小(例如,五十个存储器单元)与关联于执行计算作业的存储器大小(例如,十个存储器单元)的比率。例如,gpu 220可将瓦片大小确定为五个计算作业(例如,(50个存储器单元)/(每一计算作业的10个存储器单元)=5个计算作业)。相应地,每批计算作业可以包括五个计算作业。此外,gpu 220可以基于瓦片大小(例如,五个计算作业)和所请求的原语输出的数量(例如,1000个原语输出)来确定要启动多少批次的计算作业。例如,在上述示例中,gpu 220可以确定启动二十个批次,其中每个批次包括五个计算作业,从而启动100个计算作业并生成针对ml原语所请求的1000个输出。
72.如上所述,在一些示例中,瓦片可以指存储器的逻辑块。此外,可以基于瓦片大小将一个或多个计算作业分配给瓦片。在一些示例中,当gpu 220(和/或命令引擎222)将计算作业分配给瓦片时,gpu 220可以采用公式来将计算作业分配给瓦片。在一些示例中,gpu 220(和/或命令引擎222)也可以将计算作业的标识符映射到相应的瓦片。以这种方式,gpu 220能够确定在哪里存储通过执行计算作业生成的作业输出数据。例如,第四计算作业可以被分配给第二瓦片。在一些这样的示例中,当通过执行第四计算作业生成作业输出数据时,gpu 220可以使用第四计算作业和第二瓦片之间的映射来将相应的作业输出数据存储在与第二瓦片相关联的存储器的逻辑块中。
73.gpu 220(和/或命令引擎222)然后可以启动第一批计算作业。例如,gpu 220(和/或命令引擎222)可以将与第一批计算作业相关联的作业输入数据从ml数据缓冲器232加载到gpu存储器226。例如,gpu 220可以将ml数据的第一子集从系统存储器ml数据缓冲器232
加载到gpu存储器226。gpu 220然后可以使用存储在gpu存储器226处的ml数据的第一子集来执行第一批计算作业。例如,在第一批计算作业中的每个计算作业的执行期间,一个或多个处理元件224可以从gpu存储器226访问作业输入数据。如上所述,通过从gpu存储器226访问作业输入数据,与一个或多个处理元件224从存储器124处的ml数据缓冲器232访问作业输入数据相比,可以减少与执行每个计算作业相关联的存储器读取时延。
74.在一些示例中,执行第一批计算作业的一个或多个处理元件224可以将每个计算作业的输出写入ml数据缓冲器232。例如,每个计算作业的执行可以生成十个作业输出,并且gpu 220(和/或一个或多个处理元件224)可以将相应的十个作业输出写入存储器124的ml数据缓冲器232。在一些这样的示例中,在完成第一批计算作业之后,gpu 220可以对每个后续批次重复加载相应的输入数据、执行相应的计算作业以生成作业输出数据、以及将相应的作业输出数据写入(或存储)到ml数据缓冲器232。例如,对于第二批计算作业,gpu 220可以将ml数据的第二子集从ml数据缓冲器232加载到gpu存储器226,使用来自gpu存储器226的ml数据的第二子集来执行第二批计算作业以生成第二作业输出数据,然后将第二作业输出数据写入ml数据缓冲器232,等等,直到启动了十批计算作业中的每一批,并且生成了针对ml原语所请求的1000个输出。
75.在一些示例中,执行一批计算作业的一个或多个处理元件224可以能够将输出数据写入gpu存储器226。例如,每个计算作业的执行可以生成十个作业输出,并且一个或多个处理元件224可以将这十个作业输出写入gpu存储器226。在一些这样的示例中,在完成第一批计算作业之后,gpu 220可以将批次输出数据(例如,通过执行该批的每个计算作业而生成的作业输出数据)从gpu存储器226写入存储器124(例如,写入ml数据缓冲器232)。如上所述,通过将作业输出数据写入gpu存储器226,与一个或多个处理元件224针对每个计算作业将作业输出数据写入ml数据缓冲器232时相比,可以减少与执行每个计算作业相关联的存储器写入时延。gpu 220然后可以对于每个后续批次计算作业重复将作业输入数据从ml数据缓冲器232加载到gpu存储器226,使用存储在gpu存储器226的作业输入数据执行计算作业以生成作业输出数据,将作业输出数据写入gpu存储器226,以及将批次输出数据从gpu存储器226写入ml数据缓冲器232。
76.在一些示例中,gpu 220可以将gpu存储器226分区成用于存储与一批计算作业中的计算作业相关联的作业输入数据的批次输出数据分区226a和用于存储由执行该批计算作业中的计算作业所生成的作业输出数据的批次输出数据分区226b。例如,当启动一批计算作业时,gpu 220可以将与每个计算作业相关联的作业输入数据从ml数据缓冲器232加载到gpu存储器226的批次输出数据分区226a。一个或多个处理元件224然后可以使用存储在批次输出数据分区226a处的作业输入数据(例如,ml数据)来执行该批计算作业中的相应计算作业,然后将通过执行每个相应计算作业而生成的作业输出数据写入gpu存储器226的批次输出数据分区226b。gpu 220然后可以在该批计算作业完成时将来自批次输出数据分区226b的批次输出数据写入系统存储器124的ml数据缓冲器232。
77.应当理解,在一些示例中,gpu 220可以并行地(例如,同时或几乎同时)执行将作业输入数据从ml数据缓冲器232加载到批次输出数据分区226a以及将批次输出数据从批次输出数据分区226b写入ml数据缓冲器232。例如,在第一批计算作业的执行完成并且相应的作业输出数据已经存储在批次输出数据分区226b之后,gpu 220然后可以开始将与第二批
计算作业相关联的作业输入数据加载到批次输出数据分区226a,同时还将通过执行第一批计算作业生成的批次输出数据从批次输出数据分区226b写入ml数据缓冲器232。
78.如上所述,在一些示例中,计算作业可以被分配给相应的瓦片。在一些这样的示例中,计算作业标识符可以用于将不同的计算作业映射到相应的瓦片。在一些示例中,通过将计算作业的标识符映射到相应的瓦片和与该瓦片相关联的存储器逻辑块,可以将通过计算作业的执行生成的作业输出数据存储在存储器的该逻辑块处。
79.图3图示了根据本公开的一种或多种技术的示例方法的示例流程图300。该方法可以由诸如图1的设备104、图1的处理单元120、图1的ml加速处理组件198、图2的cpu 210、图2的gpu 220、dpu、视频处理器和/或处理单元120的组件之类的装置来执行。在图3的示例中,gpu 220的一个或多个处理元件224可能无法将输出数据写入gpu存储器226。
80.在302,如结合图1和/或图2的示例所描述的,装置可以接收与一定数量的原语输出相关联的ml原语。例如,gpu 220(和/或命令引擎222)可以从cpu 210的图形驱动器214和/或命令缓冲器230接收与ml原语相关联的ml命令。在一些示例中,gpu 220(和/或命令引擎222)可以对接收到的ml命令进行解码,以确定所请求的原语输出的数量。
81.在304,如结合图1和/或图2的示例所描述的,该装置可以确定要执行以便生成所述数量的原语输出的与ml原语相关联的计算作业的数量。例如,gpu 220(和/或命令引擎222)可以基于原语输出的数量与由每个计算作业生成的作业输出的数量的比率来确定要执行的计算作业的数量。如上所述,在一些示例中,由每个计算作业的执行生成的作业输出的数量可以取决于映射到ml原语的着色器程序映射。在一些示例中,与ml原语相关联的计算作业中的每一个可以是相同的计算作业。
82.在306,该装置可以基于第一存储器的存储器大小和用于执行计算作业的输入数据的存储器大小来确定瓦片大小,如结合图1和/或图2的示例所描述的。例如,gpu 220(和/或命令引擎222)可以基于第一存储器的存储器大小和用于执行计算作业的作业输入数据的存储器大小的比率来确定瓦片大小。在一些示例中,gpu 220(和/或命令引擎222)可以基于要执行的计算作业的数量和所确定的瓦片大小来确定要启动的计算作业的批次的数量。在一些示例中,第一存储器可以是与gpu 220一起在芯片上的片上存储器,如示例gpu存储器226。
83.在308,如结合图1和/或图2的示例所描述的,该装置可以基于瓦片大小,将作业输入数据从第二存储器加载到第一存储器,以用于执行一批计算作业。例如,gpu 220(和/或命令引擎222)可以将ml数据的子集从ml数据缓冲器232加载到gpu存储器226。在一些示例中,从ml数据缓冲器232加载到gpu存储器226的ml数据的子集可以对应于用于执行相应批次计算作业中的计算作业的作业输入数据。
84.在310,该装置可以执行该批计算作业中的相应计算作业,如结合图1和/或2的示例所描述的。作为说明性示例,ml原语可以与执行矩阵乘法相关联,并且与ml原语相关联的计算作业可以是在执行矩阵乘法期间执行的点积运算。在一些示例中,gpu 220的一个或多个处理元件224可以使用加载到gpu存储器226的ml数据的子集来执行与ml原语相关联的相应计算作业。相应地,与在每个计算作业的执行期间由一个或多个处理元件224访问ml数据缓冲器232中的ml数据相比,可以减少与每个计算作业的执行相关联的存储器读取时延。
85.在312,如结合图1和/或图2的示例所描述的,该装置可以将通过执行相应的计算
作业生成的输出数据写入第二存储器。例如,一个或多个处理元件224可以将通过执行每个计算作业而生成的作业输出数据写入ml数据缓冲器232。
86.在314,该装置可以确定是否要处理另一批计算作业,如结合图1和/或图2的示例所描述的。例如,gpu 220可以确定是否还有至少另外一批计算作业要执行(例如,基于已经执行了多少批次计算作业以及要执行的批次的总数和/或基于由已完成的计算作业批次生成的输出的数量是否满足原语输出的数量)。
87.在314,如果该装置确定要处理另一批计算作业(例如,存在未执行的一批计算作业和/或由已完成的计算作业批次生成的输出的数量不满足(例如,小于)原语输出的数量),则控制可以返回308,以加载另一批计算作业的作业输入数据。在314,如果该装置确定不再处理另一批计算作业(例如,没有未执行的计算作业批次和/或由已完成的计算作业批次生成的输出的数量满足(例如,大于或等于)原语输出的数量),则该过程可以结束和/或控制可以返回到302以等待接收另一个ml原语。
88.图4图示了根据本公开的一种或多种技术的示例方法的示例流程图400。该方法可以由诸如图1的设备104、图1的处理单元120、图1的ml加速处理组件198、图2的cpu 210、图2的gpu 220、dpu、视频处理器和/或处理单元120的组件之类的装置来执行。在图4的示例中,gpu 220的一个或多个处理元件224可以能够将输出数据写入gpu存储器226。
89.在402,如结合图1和/或2的示例所描述的,该装置可以接收与一定数量的原语输出相关联的ml原语。例如,gpu 220(和/或命令引擎222)可以从cpu 210的图形驱动器214和/或系统存储器124的命令缓冲器230接收与ml原语相关联的ml命令。在一些示例中,gpu 220(和/或命令引擎222)可以对接收到的ml命令进行解码,以确定所请求的原语输出的数量。
90.在404,如结合图1和/或图2的示例所描述的,该装置可以确定要执行以便生成所述数量的原语输出的与ml原语相关联的计算作业的数量。例如,gpu 220(和/或命令引擎222)可以基于原语输出的数量与由每个计算作业生成的作业输出的数量的比率来确定要执行的计算作业的数量。如上所述,在一些示例中,由每个计算作业的执行生成的作业输出的数量可以取决于映射到ml原语的着色器程序映射。在一些示例中,与ml原语相关联的计算作业中的每一个可以是相同的计算作业
91.在406,该装置可以基于第一存储器的存储器大小、用于执行计算作业的输入数据的存储器大小、以及由计算作业的执行生成的输出数据的存储器大小来确定瓦片大小,如结合图1和/或图2的示例所描述的。例如,gpu 220(和/或命令引擎222)可以基于第一存储器的存储器大小和与执行计算作业相关联的存储器资源的比率来确定瓦片大小。例如,与执行计算作业相关联的存储器资源可以包括用于执行计算作业的输入数据的存储器大小和由执行计算作业生成的输出数据的存储器大小。在一些示例中,gpu 220(和/或命令引擎222)可以基于要执行的计算作业的数量和所确定的瓦片大小来确定要启动的计算作业的批次的数量。在一些示例中,第一存储器可以是与gpu 220一起在芯片上的片上存储器,例如示例gpu存储器226。
92.在408,如结合图1和/或图2的示例所描述的,该装置可以基于瓦片大小将作业输入数据从第二存储器加载到第一存储器以用于执行一批计算作业。例如,gpu 220(和/或命令引擎222)可以将ml数据的子集从ml数据缓冲器232加载到gpu存储器226。在一些示例中,
从ml数据缓冲器232加载到gpu存储器226的ml数据的子集可以对应于用于执行相应批次计算作业中的计算作业的作业输入数据。在一些示例中,gpu 220(和/或命令引擎222)可以将ml数据的子集从ml数据缓冲器232加载到gpu存储器226的批次输出数据分区226a。
93.在410,如结合图1和/或图2的示例所描述的,该装置可以执行该批计算作业中的相应计算作业。例如,gpu 220的一个或多个处理元件224可以使用加载到gpu存储器226的批次输出数据分区226a的ml数据的子集来执行与ml原语相关联的相应计算作业。相应地,与在每个计算作业的执行期间由一个或多个处理元件224访问ml数据缓冲器232中的ml数据相比,可以减少与每个计算作业的执行相关联的存储器读取时延。
94.在412,如结合图1和/或图2的示例所描述的,该装置可以将通过执行相应的计算作业生成的输出数据写入第一存储器。例如,一个或多个处理元件224可以将通过执行每个计算作业生成的作业输出数据写入gpu存储器226的批次输出数据分区226b。
95.在414,该装置可以确定该批计算作业的执行是否完成,如结合图1和/或图2的示例所描述的。例如,gpu 220可以确定该批计算作业中的每个计算作业是否都被执行,以及相应的作业输出是否已经被写入gpu存储器226的批次输出数据分区226b。
96.在414,如果该装置确定该批计算作业的执行未完成(例如,该批计算作业中有未执行或未完成的计算作业),则控制可以返回410以继续执行该批计算作业中的相应计算作业。
97.在414,如果该装置确定该批计算作业的执行完成(例如,一个或多个处理元件224已经执行了该批计算作业中的相应计算作业),则控制可以进行到416,以将通过该批计算作业的执行生成的批次输出数据写入第二存储器,如结合图1和/或2的示例所描述的。例如,gpu 220可以将批次输出数据从gpu存储器226的批次输出数据分区226b写入ml数据缓冲器232。
98.在418,该装置可以确定是否要处理另一批计算作业,如结合图1和/或图2的示例所描述的。例如,gpu 220可以确定是否还有至少另外一批计算作业要执行(例如,基于已经执行了多少批次计算作业以及要执行的批次的总数和/或基于由已完成的计算作业批次生成的输出的数量是否满足原语输出的数量)。
99.在418,如果该装置确定要处理另一批计算作业(例如,存在未执行的一批计算作业和/或由已完成的计算作业批次生成的输出的数量不满足(例如,小于)原语输出的数量),则控制可以返回到408,以针对另一批计算作业将作业输入数据加载到gpu存储器226的批次输出数据分区226a。在418,如果该装置确定不再处理另一批计算作业(例如,没有未执行的计算作业批次和/或由已完成的计算作业批次生成的输出的数量满足(例如,大于或等于)原语输出的数量),则该过程可以结束和/或控制可以返回到402以等待接收另一ml原语。
100.应当理解,在一些示例中,该装置可以与将输出数据从gpu存储器226的批量输出数据分区226b写入ml数据缓冲器232并行地执行将作业输入数据从ml数据缓冲器232加载到gpu存储器226的批次输出数据分区226a。例如,在一个或多个处理元件224将来自第一批计算作业的输出数据写入gpu存储器226的批次输出数据分区226b之后,gpu 220可以加载与第二批计算作业相关联的作业输入数据,同时还将与第一批计算作业相关联的批次输出数据从gpu存储器226的批次输出数据分区226b写入系统存储器124。由此,可以理解,在一
些示例中,gpu 220可以在与第二批计算作业相关联的作业输入数据的加载(例如,从ml数据缓冲器232到gpu存储器226的批次输出数据分区226a)和与第一批计算作业相关联的批次输出数据的写入(例如,从gpu存储器226的批次输出数据分区226到ml数据缓冲器232)之间交织ml数据缓冲器232和gpu存储器226之间的存储器访问。
101.在一种配置中,提供了一种用于机器学习处理的方法或装置。该装置可以是处理单元、gpu、显示处理器、dpu、视频处理器或可以执行机器学习处理的一些其他处理器。在一些示例中,该装置可以是设备104内的处理单元120,或者可以是设备104内的某个其他硬件,或另一设备。该装置可以包括用于基于第一存储器的存储器大小和与执行计算作业相关联的作业输入大小来确定瓦片大小的部件,并且其中该计算作业是被配置为执行机器学习原语的一定数量的计算作业中的一个。该装置还可包括用于基于瓦片大小将与一批计算作业相关联的输入数据从第二存储器加载到第一存储器的部件。此外,该装置可以包括用于通过使用加载到第一存储器的输入数据执行该批计算作业来生成批次输出数据的部件。此外,该装置可以包括用于将所生成的批次输出数据存储到第二存储器的部件。该装置还可以包括用于基于用于执行计算作业的输入数据的存储器大小来确定与执行计算作业相关联的作业输入大小的部件。该装置还可以包括用于基于与执行计算作业相关联的作业输出大小来确定瓦片大小的部件,并且其中作业输出大小是基于由执行计算作业生成的输出数据的存储器大小来确定的。该装置还可以包括用于将通过执行该批计算作业中的每个计算作业而生成的输出数据写入第一存储器的部件。此外,该装置可以包括用于在该批计算作业的执行完成之后将所生成的输出数据从第一存储器存储到第二存储器的部件。该装置还可以包括用于将与第二批计算作业相关联的输入数据从第二存储器加载到第一存储器的部件。该装置还可以包括用于与将所生成的输出数据存储到第二存储器并行地加载与第二批计算作业相关联的输入数据的部件。该装置还可以包括用于将与执行第二批计算作业相关联的第二输入数据从第二存储器加载到第一存储器的部件。此外,该装置可以包括用于通过使用加载到第一存储器的第二输入数据执行第二批计算作业来生成第二批次输出数据的部件。此外,该装置可以包括用于将所生成的第二批次输出数据存储到第二存储器的部件。
102.这里描述的主题可以被实施来实现一个或多个益处或优点。例如,所描述的计算和/或ml处理技术可以由gpu、显示处理器、dpu或视频处理器或可以执行在此公开的基于瓦片的机器学习加速技术的一些其他处理器使用。此外,这里的计算和/或ml处理技术可以提高或加速数据处理或执行。此外,这里的计算和/或ml处理技术可以提高资源或数据利用率和/或资源效率。例如,本公开的各方面可以减少处理单元的读取存储器时延和/或写入存储器时延。
103.根据本公开,在上下文中没有另外指示的情况下,词语“或”可以被解释为“和/或”。此外,虽然诸如“一个或多个”或“至少一个”等短语可能已经用于在此公开的一些特征,而没有用于其它特征,但是在上下文没有另外指示的情况下,未使用这种语言的特征可以被解释为隐含地具有这种含义。
104.在一个或多个示例中,在此描述的功能可以用硬件、软件、固件或其任意组合来实现。例如,尽管术语“处理单元”已经在本公开中通篇使用,但是这样的处理单元可以用硬件、软件、固件或其任意组合来实现。如果在此描述的任何功能、处理单元、技术或其他模块
以软件实现,则在此描述的功能、处理单元、技术或其他模块可以作为计算机可读介质上的一个或多个指令或代码来存储或传输。计算机可读介质可以包括计算机数据存储介质或通信介质,包括便于将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)有形的计算机可读存储介质,其是非暂时性的,或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是能够被一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。作为示例而非限制,这种计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储装置、磁盘存储装置或其他磁存储设备。这里使用的盘和光盘包括压缩光盘(cd)、激光光盘、光盘、数字多功能盘(dvd)、软盘和蓝光盘,其中盘通常磁性地再现数据,而光盘用激光光学地再现数据。上述的组合也应该包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
105.代码可以由一个或多个处理器执行,例如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、算术逻辑单元(alu)、现场可编程逻辑阵列(fpga)或其他等效的集成或分立逻辑电路。相应地,这里使用的术语“处理器”可以指任何前述结构或者适合于实现这里描述的技术的任何其他结构。同样,这些技术可以完全在一个或多个电路或逻辑元件中实现。
106.本公开的技术可以在多种设备或装置中实现,包括无线手机、集成电路(ic)或一组ic(例如,芯片组)。在本公开中描述了各种组件、模块或单元,以强调被配置成执行所公开的技术的设备的功能方面,但是不一定需要由不同的硬件单元来实现。相反,如上所述,各种单元可以结合适当的软件和/或固件而与任何硬件单元组合,或者由互操作的硬件单元的集合提供,包括如上所述的一个或多个处理器。
107.已经描述了各种示例。这些和其他示例在以下权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1