CN116917927A - 用于机器学习工作负载中张量对象支持的方法和装置 - Google Patents
用于机器学习工作负载中张量对象支持的方法和装置 Download PDFInfo
- Publication number
- CN116917927A CN116917927A CN202280013472.3A CN202280013472A CN116917927A CN 116917927 A CN116917927 A CN 116917927A CN 202280013472 A CN202280013472 A CN 202280013472A CN 116917927 A CN116917927 A CN 116917927A
- Authority
- CN
- China
- Prior art keywords
- data
- tensor
- objects
- memory
- tensor objects
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 117
- 238000010801 machine learning Methods 0.000 title claims description 9
- 230000015654 memory Effects 0.000 claims abstract description 190
- 238000012545 processing Methods 0.000 claims abstract description 130
- 238000013528 artificial neural network Methods 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 7
- 239000011159 matrix material Substances 0.000 claims description 6
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000012856 packing Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 10
- 238000004806 packaging method and process Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 230000004913 activation Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Abstract
本公开涉及用于图形处理的方法和设备,包括例如GPU的装置。该装置可以修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构。该装置还可以基于修改的至少一个纹理存储器对象,来确定一个或多个张量对象的一个或多个支持的存储器布局。此外,该装置可以基于一个或多个支持的存储器布局,来访问与一个或多个张量对象相关联的数据,所述一个或多个张量对象中的每一者的数据对应于至少一个数据指令。该装置还可以基于所访问的与一个或多个张量对象相关联的数据,来执行所述至少一个数据指令。
Description
相关申请的交叉引用
本申请要求2021年2月11日提交的题为“METHODS AND APPARATUS FOR TENSOROBJECT SUPPORT IN MACHINE LEARNING WORKLOADS”的美国专利申请第17/173,643号的权益,其全部内容通过引用的方式明确并入本文中。
技术领域
本公开大体上涉及处理***,且更具体地,涉及一种或多种用于图形处理的技术。
背景技术
计算设备通常执行图形和/或显示处理(例如,利用图形处理单元(GPU)、中央处理单元(CPU)、显示处理器等)来渲染和显示视觉内容。此类计算设备可以包括,例如,计算机工作站、诸如智能电话的移动电话、嵌入式***、个人计算机、平板计算机和视频游戏控制台。GPU被配置成执行图形处理流水线,该流水线包括一个或多个处理阶段,这些处理阶段一起操作来执行图形处理命令并输出帧。中央处理单元(CPU)可以通过向GPU发布一个或多个图形处理命令,来控制GPU的操作。当今的CPU通常能够并发执行多个应用,每一应用可能需要在执行期间利用GPU。显示处理器被配置为将从CPU接收的数字信息转换成模拟值,并且可以向显示面板发布命令用于显示视觉内容。提供内容用于在显示器上视觉呈现的设备可以利用GPU和/或显示处理器。
设备的GPU可以被配置为执行图形处理流水线中的过程。此外,显示处理器或显示处理单元(DPU)可以被配置成执行显示处理的过程。然而,随着无线通信和较小的手持式设备的出现,已显露对改进图形处理或显示处理的增长需求。
发明内容
以下内容呈现一个或多个方面的简要总结以便提供对此类方面的基本理解。本发明内容不是对所有预期方面的广泛概述,并且既不旨在标识所有方面的关键或重要元素,也不旨在描绘任何或所有方面的范围。其唯一目的是以简化形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。
在本公开的一方面,提供了一种方法、计算机可读介质和装置。该装置可以是图形处理单元(GPU)或可以执行图形处理的任何装置。该装置可以修改至少一个纹理存储器对象,以支持一个或多个张量对象的数据结构。该装置还可以基于修改的至少一个纹理存储器对象,来确定一个或多个张量对象的一个或多个支持的存储器布局。该装置还可以基于一个或多个支持的存储器布局,来转换与一个或多个张量对象相关联的数据。此外,该装置可以实现一个或多个张量对象的一个或多个支持的存储器布局。该装置还可以基于一个或多个支持的存储器布局,来访问与一个或多个张量对象相关联的数据,一个或多个张量对象中的每一者的数据对应于至少一个数据指令。此外,该装置可以存储与一个或多个张量对象相关联的至少一些数据。该装置还可以基于所访问的与一个或多个张量对象相关联的数据,来执行至少一个数据指令。
在附图和以下描述中阐明了本公开的一个或多个示例的细节。本公开的其他特征、目的和优点将从描述和附图以及从权利要求而显而易见。
附图说明
图1是示出根据本公开的一个或多个技术的示例性内容生成***的框图。
图2示出根据本公开的一个或多个技术的示例性GPU。
图3是示出根据本公开的一个或多个技术的用于图形处理的数据存储过程的图。
图4A是示出根据本公开的一个或多个技术的用于图形处理的张量对象数据的图。
图4B是示出根据本公开的一个或多个技术的用于图形处理的张量对象数据的图。
图5A是示出根据本公开的一个或多个技术的用于图形处理的张量对象的图。
图5B是示出根据本公开的一个或多个技术的用于图形处理的张量对象的图。
图6是示出根据本公开的一个或多个技术的GPU与存储器之间的示例性通信的通信流程图。
图7是根据本公开的一个或多个技术的图形处理的示例性方法的流程图。
具体实施方式
在图形处理的一些方面,当处理来自张量对象的数据时,对应于存储器的数据布局可能不对应于纹理对象的数据布局。例如,为了有效地消耗存储器处的数据,数据采用特定格式可能是有益的。在一些情况下,纹理对象的数据格式可能不能有效地存储到用于存储器的数据格式中。为了利用预先存在的纹理对象来存储存储器数据,如果数据被转换以允许成功存储,这可能是有益的。一些维度/数据打包和数据交织的方案可能有许多限制。这些限制中的每一者都可能导致附加的着色器指令,这可能降低GPU处的性能和/或浪费功率。本发明的方面可以提供维度/数据打包和数据交织,其可减少或优化GPU处的着色器指令的量。例如,本公开的各方面可以允许张量对象例如使用着色器代码的原始3D或4D坐标直接访问着色器代码内部,诸如不考虑组合维度或存储器效率打包。此外,本公开的方面可以利用预先存在的纹理对象来存储存储器数据,诸如通过转换数据以便允许成功存储。例如,将3D或4D对象映射或转换到现有的纹理存储器对象上可以允许将数据存储在存储器中。
在下文参考附图更充分地描述***、装置、计算机程序产品和方法的各方面。然而,本公开可以许多不同形式来体现,并且不应被理解为限于贯穿本公开呈现的任何特定结构或功能。而是,提供这些方面使得本公开将是透彻且完整的,且将本公开的范围充分传达到本领域技术人员。基于本文的教示,本领域技术人员应了解,本公开的范围旨在覆盖本文公开的***、装置、计算机程序产品和方法的任何方面,无论是独立于本公开的其他方面实现还是与本公开的其他方面结合实现。例如,可以使用本文陈述的任何数量的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用除了或不同于本文陈述的本公开的各方面之外的其他结构、功能性或结构和功能性来实践的此类装置或方法。本文公开的任何方面可以由权利要求的一个或多个元素来体现。
尽管本文描述了各方面,但是这些方面的许多变化和置换都落入本公开的范围内。尽管提及了本公开各方面的一些潜在益处和优点,但是本公开的范围并不旨在限于特定的益处、用途或目标。相反,本公开的方面旨在广泛适用于不同的无线技术、***配置、网络和传输协议,其中一些在附图和以下描述中以示例的方式示出。具体实施方式和附图仅仅是对本公开的说明而不是限制,本公开的范围由所附权利要求及其等同物限定。
参考各种装置和方法来呈现若干方面。这些装置和方法将在以下具体实施方式中进行描述,并在附图中通过各种块、组件、电路、过程、算法等(统称为“元素”)进行说明。这些元素可以使用电子硬件、计算机软件或其任何组合来实现。此类元素是实现为硬件还是软件取决于特定应用和强加于整个***的设计约束。
举例来说,元素或元素的任何部分或元素的任何组合可以被实现为包括一个或多个处理器的“处理***”(还可以称作处理单元)。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上***(SoC)、基带处理器、特定用途集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、离散硬件电路以及被配置成执行贯穿本公开描述的各种功能性的其他合适硬件。处理***中的一个或多个处理器可以执行软件。软件可以广义地解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行程序、执行线程、过程、功能等,无论被称作软件、固件、中间件、微代码、硬件描述语言还是其他。术语应用可以指软件。如本文所描述,一个或多个技术可以指被配置成执行一个或多个功能的应用,即软件。在此类示例中,应用可以存储在存储器上,例如处理器的片上存储器、***存储器或任何其他存储器。本文所描述的硬件(诸如处理器)可以被配置成执行应用。例如,该应用可以被描述为包括代码,该代码在由硬件执行时使得硬件执行本文描述的一个或多个技术。作为示例,硬件可以从存储器存取代码,并执行从存储器存取的代码以执行本文描述的一个或多个技术。在一些示例中,组件在本公开中被识别。在此类示例中,组件可以是硬件、软件或其组合。组件可以是单独组件或单个组件的子组件。
因此,在本文描述的一个或多个示例中,所描述的功能可以用硬件、软件或其任何组合来实现。如果用软件实现,那么可以将功能作为一个或多个指令或代码存储或编码在计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是可以由计算机访问的任何可用介质。举例来说且非限制,此类计算机可读介质可以包含随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储器、磁盘存储器、其他磁性存储设备、上述类型的计算机可读介质的组合、或可以用以存储可以由计算机访问的呈指令或数据结构形式的计算机可执行代码的任何其他介质。
通常,本公开描述了用于在单个设备或多个设备中具有图形处理流水线、改进图形内容的渲染和/或减少处理单元(即,被配置成执行本文描述的一个或多个技术的任何处理单元,诸如GPU)的负载的技术。例如,本公开描述了利用图形处理的任何设备中的图形处理技术。本公开通篇描述了其他示例性益处。
如本文所使用,术语“内容”的实例可以指“图形内容”、“图像”,且反之亦然。不管这些术语是用作形容词、名词还是其他词性,都是如此。在一些示例中,如本文所使用,术语“图形内容”可以指由图形处理流水线的一个或多个过程产生的内容。在一些示例中,如本文所使用,术语“图形内容”可以指由被配置成执行图形处理的处理单元产生的内容。在一些示例中,如本文所使用,术语“图形内容”可以指由图形处理单元产生的内容。
在一些示例中,如本文所使用,术语“显示内容”可以指由被配置成执行显示处理的处理单元产生的内容。在一些示例中,如本文所使用,术语“显示内容”可以指由显示处理单元产生的内容。图形内容可以被处理成为显示内容。例如,图形处理单元可以向缓冲器(可以称作帧缓冲器)输出图形内容,诸如帧。显示处理单元可以从缓冲器读取图形内容,诸如一个或多个帧,并在其上执行一个或多个显示处理技术以产生显示内容。例如,显示处理单元可以被配置成在一个或多个渲染层上执行合成以产生帧。作为另一示例,显示处理单元可以被配置成将两层或更多层合成、混合或以其他方式组合成单个帧。显示处理单元可以被配置成对帧执行缩放,例如,放大或缩小。在一些示例中,帧可以指层。在其他示例中,帧可以指已经混合在一起以形成帧的两层或更多层,即,帧包括两层或更多层,并且包括两层或更多层的帧可以随后被混合。
图1是示出被配置成实现本公开的一个或多个技术的示例性内容产生***100的框图。内容产生***100包括设备104。设备104可以包括用于执行本文描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SOC的组件。设备104可以包括被配置成执行本公开的一个或多个技术的一个或多个组件。在所示示例中,设备104可以包括处理单元120、内容编码器/解码器122和***存储器124。在一些方面,设备104可以包括多个任选组件,例如通信接口126、收发器132、接收器128、发射器130、显示处理器127和一个或多个显示器131。对显示器131的指代可以指一个或多个显示器131。例如,显示器131可以包括单个显示器或多个显示器。显示器131可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器,并且第二显示器可以是右眼显示器。在一些示例中,第一和第二显示器可以接收不同的帧以在其上呈现。在其他示例中,第一和第二显示器可以接收相同的帧以在其上呈现。在其他示例中,图形处理的结果可以不显示在设备上,例如,第一和第二显示器可以不接收任何帧以在其上呈现。相反,帧或图形处理结果可以被传送到另一设备。在一些方面,这可以称作分割渲染。
处理单元120可以包括内部存储器121。处理单元120可以被配置成诸如在图形处理流水线107中执行图形处理。内容编码器/解码器122可以包括内部存储器123。在一些示例中,设备104可以包括显示处理器,诸如显示处理器127,以在由一个或多个显示器131呈现之前,对由处理单元120产生的一个或多个帧执行一个或多个显示处理技术。显示处理器127可以被配置成执行显示处理。例如,显示处理器127可以被配置成对由处理单元120产生的一个或多个帧执行一个或多个显示处理技术。一个或多个显示器131可以被配置成显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下各项中的一者或多者:液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
处理单元120和内容编码器/解码器122外部的存储器(诸如***存储器124)可以被处理单元120和内容编码器/解码器122访问。例如,处理单元120和内容编码器/解码器122可以被配置成从外部存储器(诸如***存储器124)读取和/或向外部存储器写入。处理单元120和内容编码器/解码器122可以通过总线通信地耦合到***存储器124。在一些示例中,处理单元120和内容编码器/解码器122可以通过总线或不同的连接彼此通信地耦合。
内容编码器/解码器122可以被配置成从任何源接收图形内容,诸如***存储器124和/或通信接口126。***存储器124可以被配置成存储所接收的编码或解码的图形内容。内容编码器/解码器122可以被配置成例如从***存储器124和/或通信接口126接收编码像素数据形式的编码或解码的图形内容。内容编码器/解码器122可以被配置成编码或解码任何图形内容。
内部存储器121或***存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或***存储器124可以包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据介质或光学存储介质、或任何其他类型的存储器。
根据一些示例,内部存储器121或***存储器124可以是非暂时性存储介质。术语“非暂时性”可以指示存储介质没有体现为载波或传播信号。然而,术语“非暂时性”不应被解释为意味着内部存储器121或***存储器124是不可移动的或者其内容是静态的。作为一个示例,***存储器124可以从设备104移除并移动到另一设备。作为另一示例,***存储器124可以不从设备104移除。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)、或可以被配置成执行图形处理的任何其他处理单元。在一些示例中,处理单元120可以集成到设备104的主板中。在一些示例中,处理单元120可以存在于安装在设备104的主板中的端口中的图形卡上,或者可以以其他方式并入到被配置成与设备104交互操作的***设备内。处理单元120可以包括一个或多个处理器,诸如一个或多个微处理器、GPU、特定用途集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其他等效集成或离散逻辑电路、或其任何组合。如果这些技术部分地用软件实现,则处理单元120可以将软件的指令存储在合适的非暂时性计算机可读存储介质中,例如内部存储器121,并且可以使用一个或多个处理器在硬件中执行指令以执行本公开的技术。任何前述内容,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置成执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可以集成到设备104的主板中。内容编码器/解码器122可以包括一个或多个处理器,诸如一个或多个微处理器、特定用途集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、离散逻辑、软件、硬件、固件、其他等效集成或离散逻辑电路、或其任何组合。如果这些技术部分地用软件实现,则内容编码器/解码器122可以将软件的指令存储在合适的非暂时性计算机可读存储介质中,例如内部存储器123,并且可以使用一个或多个处理器在硬件中执行指令以执行本公开的技术。任何前述内容,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
在一些方面,内容产生***100可以包括可选通信接口126。通信接口126可以包括接收器128和发射器130。接收器128可以被配置成执行本文关于设备104描述的任何接收功能。另外,接收器128可以被配置成从另一设备接收信息,例如眼睛或头部位置信息、渲染命令或定位信息。发射器130可以被配置成执行本文关于设备104描述的任何传输功能。例如,发射器130可以被配置成向另一设备传输信息,该信息可以包括对内容的请求。接收器128和发射器130可以组合成收发器132。在此类示例中,收发器132可以被配置成执行本文关于设备104描述的任何接收功能和/或传输功能。
再次参考图1,在某些方面,处理单元120可以包括确定组件198,其被配置成修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构。确定组件198还可以被配置成基于修改的至少一个纹理存储器对象,来确定一个或多个张量对象的一个或多个支持的存储器布局。确定组件198还可以被配置成基于一个或多个支持的存储器布局来转换与一个或多个张量对象相关联的数据。确定组件198还可以被配置成实现用于一个或多个张量对象的一个或多个支持的存储器布局。确定组件198还可以被配置成基于一个或多个支持的存储器布局,来访问与一个或多个张量对象相关联的数据,一个或多个张量对象中的每一者的数据对应于至少一个数据指令。确定组件198还可以被配置成存储与一个或多个张量对象相关联的至少一些数据。确定组件198还可以被配置成基于所访问的与一个或多个张量对象相关联的数据,来执行至少一个数据指令。虽然以下描述可能集中在图形处理上,但是本文描述的概念可以适用于其他类似的处理技术。
如本文所描述,诸如设备104的设备可以指被配置成执行本文描述的一个或多个技术的任何设备、装置或***。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、最终产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持式设备(例如,便携式视频游戏设备或个人数字助理(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、不可穿戴设备、显示器或显示设备、电视机、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置成产生图形内容的任何设备、或者被配置成执行本文描述的一个或多个技术的任何设备。本文的过程可以被描述为由特定组件(例如,GPU)执行,但在其他实施例中,可以使用与所公开的实施例一致的其他组件(例如,CPU)来执行。
GPU可以在GPU流水线中处理多种类型的数据或数据分组。例如,在一些方面,GPU可以处理两种类型的数据或数据分组,例如上下文寄存器分组和绘制调用数据。上下文寄存器分组可以是一组全局状态信息,例如,关于全局寄存器、着色程序或常量数据的信息,其可以调节图形上下文将如何被处理。例如,上下文寄存器分组可以包括关于颜色格式的信息。在上下文寄存器分组的一些方面,可以存在比特来指示哪个工作负荷属于上下文寄存器。此外,可以存在同时和/或并行运行的多个功能或编程。例如,功能或编程可以描述某些操作,例如颜色模式或颜色格式。因此,上下文寄存器可以定义GPU的多个状态。
上下文状态可以用于确定个别处理单元如何运作,例如顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何形状处理器,和/或处理单元以什么模式运作。为此,GPU可以使用上下文寄存器和编程数据。在一些方面,GPU可以基于模式或状态的上下文寄存器定义,在流水线中产生工作负载,例如顶点或像素工作负载。某些处理单元,例如VFD,可以使用这些状态来确定某些功能,例如顶点是如何组装的。由于这些模式或状态可以改变,GPU可能需要改变对应的上下文。另外,对应于模式或状态的工作负载可以跟随改变的模式或状态。
图2示出根据本公开的一个或多个技术的示例性GPU 200。如图2所示,GPU 200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS222、顶点缓存(VPC)224、三角形设置引擎(TSE)226、光栅化器(RAS)228、Z过程引擎(ZPE)230、像素插值器(PI)232、片段着色器(FS)234、渲染后端(RB)236、2级(L2)缓存(UCHE)238和***存储器240。尽管图2显示GPU200包括处理单元220-238,但GPU 200可以包括多个附加处理单元。此外,处理单元220-238仅是示例,并且根据本公开,处理单元的任何组合或顺序都可以由GPU使用。GPU 200还包括命令缓冲器250、上下文寄存器分组260和上下文状态261。
如图2所示,GPU可以利用CP(例如,CP 210)或硬件加速器将命令缓冲器解析成上下文寄存器分组(例如,上下文寄存器分组260)和/或绘制调用数据分组(例如,绘制调用分组212)。CP 210然后可以通过单独的路径向GPU中的处理单元或块发送上下文寄存器分组260或绘制调用数据分组212。此外,命令缓冲器250可以交替上下文寄存器和绘制调用的不同状态。例如,命令缓冲器可以以下述方式构造:上下文N的上下文寄存器、上下文N的(多个)绘制调用、上下文N+1的上下文寄存器和上下文N+1的(多个)绘制调用。
图形处理的一些方面可以利用许多不同的数据结构,例如张量对象或张量。张量对象是指在机器学习应用中使用的多维数据结构,例如,神经网络(NN)或深度神经网络(DNN)。张量对象可以对应于数据,诸如原始数据、预训练权重或神经网络层的结果。张量对象可以与任何类型的维度相关联,但典型的DNN应用使用一维(1D)、二维(2D)、三维(3D)和/或四维(4D)张量。
图3是示出用于图形处理的示例性数据存储过程的图300。图3展示用作典型DNN卷积层的输入的两种类型的张量:“激活”张量,例如激活张量310,和“权重”张量,例如权重张量阵列320。图300还包括UCHE 330、纹理管道(TP)332、着色器处理器(SP)340、通用寄存器(GPR)342、常量存储器344和算术逻辑单元(ALU)346。如图3所示,图300中的处理输出可以是另一张量对象。在图3的示例中,输入激活张量310是由其宽度、高度和特征数量(即,深度)表示的3D对象。如图3中进一步所示,权重张量320可以对应于4D对象,其被表示为3D权重的阵列。3D权重中的每一者可以具有相同的宽度、高度和特征数量。在这些情况下,单个3D权重在DNN术语中可以被称为“批次”。
图3展示用于激活张量310和权重张量320的数据正被硬件消耗,即硬件流。激活张量310的激活数据和权重张量320的权重数据可以由高速缓冲存储器(例如,UCHE 330)加载,并被发送到纹理管道(例如,TP 332)。激活数据然后可以被发送到通用寄存器(例如,GPR 342)或者着色器处理器的其他存储器(例如,SP 340)。权重数据可以作为加载命令被发送到SP 340中的常量存储器344中。一旦数据已被加载到GPU的SP 340中,GPU就可以例如使用ALU 346来执行一些算术逻辑单元(ALU)运算,诸如卷积运算或矩阵乘法。因此可以将激活数据和权重数据加载到SP 340中,并且然后可以对数据执行一些ALU运算。这些运算的输出可以被处理,以便输出用于所述过程中另一步骤的张量对象。
在图形处理的一些方面中,某些方案可能不利用显式张量对象抽象层。然而,如果纹理存储器对象被映射到标准的1D、2D或3D纹理存储器对象,则有可能使用纹理存储器对象来存储张量数据。此外,由于卷积层算法的性质,3D和4D张量可以使用特殊的交织或打包数据格式在存储器中表示。
图4A和图4B分别是示出用于图形处理的张量对象数据的图400和410。更具体地,图4A和图4B示出可以存储在GPU处的存储器中的张量对象数据。图4A展示在存储器中使用不同的数据打包格式表示的3D张量对象的数据,例如,从3D打包类型到2D打包类型。图4A还展示包括宽度(W)、高度(H)和特征(F)(例如,深度)的实际3D张量对象维度。图4A还展示了纹理存储器对象2D表示,这可以对应于将来自3D对象的数据打包成2D表示。如图4A所示,纹理存储器对象2D表示可被分割以映射数据,诸如通过将宽度乘以因子4,以及将特征除以因子4。
图4B示出在存储器中使用不同的数据打包格式表示的4D张量对象的数据,例如,将4D纹理对象打包成2D阵列。图4B还展示包括四个维度的实际4D张量对象,例如,宽度(W)、高度(H)、特征(F)(例如,深度)和批次(B)。此外,图4B展示在数据打包之后的纹理存储器对象3D表示。纹理存储器对象3D表示可被分割以映射数据,诸如通过将宽度乘以因子4,以及将特征或批次除以因子4。在一些方面,如果第四维不可用,则可以利用图4B所示的数据打包格式。
在图形处理的一些方面,当处理来自张量对象的数据时,对应于存储器的数据布局可能不对应于纹理对象的数据布局。例如,为了有效地消耗存储器处的数据,数据采用特定格式可能是有益的。在一些情况下,纹理对象的数据格式可能不能有效地存储到用于存储器的数据格式中。为了利用预先存在的纹理对象来存储存储器数据,如果数据被转换以允许成功存储,这可能是有益的。
一些维度/数据打包和数据交织的方案可能有许多限制。例如,可能需要在着色器处理器(SP)中明确执行特殊的寻址计算,以便将每一3D或4D张量坐标向下映射到其2D或3D表示。此外,可能需要在着色器处理器中显式执行越界(OOB)检查。此外,虽然纹理处理器(TP)可以包含多个边缘模式条件检查器,但是这些条件检查器不能被充分利用,因为多个维度可以被打包到单个维度中。这些限制中的每一者都可能导致附加的着色器指令,这可能降低GPU处的性能和/或浪费功率。因此,提供可减少或优化GPU处着色器指令的量的维度打包和数据交织可能是有益的。
本发明的方面可以提供维度/数据打包和数据交织,其可减少或优化GPU处的着色器指令的量。例如,本公开的各方面可以允许张量对象例如使用着色器代码的原始3D或4D坐标直接访问着色器代码内部,诸如不考虑组合维度或存储器效率打包。此外,本公开的方面可以利用预先存在的纹理对象来存储存储器数据,诸如通过转换数据以便允许成功存储。例如,将3D或4D对象映射或转换到现有的纹理存储器对象上可以允许将数据存储在存储器中。
在本公开的一些方面,张量对象结构可以使用现有纹理存储器对象来定义。此外,张量对象结构可以用于利用现有或附加的着色器指令来有效地读取和写入数据。例如,这些现有或附加的着色器指令可以是利用纹理管道(TP)的指令。其他着色器指令可以是加载/存储(LOAD/STORE)指令,其使用着色器管道(SP)来输出到GPR、本地存储器、常数缓冲器或全局存储器。
在一些情况下,为了避免纹理存储器对象的某些限制,本公开的方面可以允许纹理存储器对象支持张量存储器对象的数据。例如,纹理存储器对象可以允许添加第四维,这可以用于支持张量对象。因此,本公开的各方面可以允许某些数据或维度与纹理对象和张量对象一起使用。因此,用于张量对象的某些存储器布局也可以用于纹理对象。
在一些方面,可以修改或调整纹理存储器对象,以便支持张量对象的数据结构。例如,可以调整或修改纹理存储器对象,例如2D对象或图片,以支持张量对象的数据结构,例如3D或4D对象。因此,纹理存储器对象的能力可以例如通过修改纹理存储器对象而被扩展以支持张量对象。因此,本公开的方面可以允许使用现有纹理存储器对象来定义张量对象结构。
此外,在一些方面,为了允许张量对象直接访问着色器代码内部,例如,使用着色器代码的原始3D或4D坐标,本公开的各方面可以执行多个指令。例如,本公开的各方面可以对纹理存储器对象结构执行修改,这可以允许在常规纹理存储器对象与张量对象之间进行区分。这也可以允许添加支持的布局和/或打包类型的列表,用于存储器高效数据访问。因此,本公开的各方面可以将纹理存储器对象设置或标记为张量对象。因此,可以修改或调整纹理存储器对象以支持一个或多个张量对象的数据结构。
本公开还可以基于将纹理存储器对象设置或标记为张量对象来提供对应于存储器访问的布局列表。布局和打包类型的该列表可以允许本公开的各方面映射数据打包的维度。例如,在一些情况下,纹理存储器对象可以被视为张量对象,诸如如果激活了某个模式。因而,如果某个模式被激活,纹理存储器对象可以对应于张量对象。
本公开的方面还可以基于可用的对象支持(例如,2D阵列对象支持)而允许在多个维度(例如,宽度、高度和特征维度)上有效使用TP越界(OOB)检查。这种OOB检查可能是由于数据被解包的事实。此外,本公开的方面可以允许通过一定量的标量值(例如,四个(4)标量值)对张量数据进行分组,以便形成不同的类似像素的格式,例如,向量4或红绿蓝阿尔法(RGBA)类似像素的格式。这些类似像素的格式可以被TP和SP的ALU单元利用,以允许合并的读取和写入访问。
图5A和图5B分别是示出根据本公开的一个或多个技术的用于图形处理的张量打包过程的图500和550。图5A和图5B展示了张量打包过程的示例,该过程开始于图5A中的原始3D张量510,且结束于图5B中的打包3D张量560。图5A示出包括不同维度(例如,宽度、高度和特征)的原始3D张量510。图5B展示包括不同维度(例如,宽度、高度和特征)的打包3D张量560。如图5B中所示,打包3D张量560可以包括原始3D张量510的多个特征。另外,图5B展示打包张量560的纹理元素562,例如单个RGBA纹理元素,打包张量560可以保存来自原始张量510的多个特征,例如四个(4)特征。例如,特征维度可以除以一个数,例如四(4),因为纹理元素562在深度维度上可以具有该数量的特征,例如四个(4)特征。
在一些方面,图5B中的纹理元素562可以包括图5A中张量510中的特征或维度中的每一者的数据。例如,如果存在多个特征,例如四个特征,则纹理元素562可以包括这些特征中的每一者。通过这样做,GPU中的不同单元(例如,ALU)可以开始处理每一特征的信息。因此,本公开的各方面可以包括硬件友好的布局,以将多个特征一起打包成单元,例如像素或纹理元素,以便将这些特征映射到硬件上。因此,本公开的各方面可以优化或改进GPU的效率。
如图5A和图5B中所示,原始张量对象中的多个特征的数据可以对应于存储器布局或支持的存储器布局。原始张量对象中的维度数量的数据(例如,宽度、高度和/或特征维度)可以对应于打包张量对象中的特定单元,例如像素或纹理元素。打包张量对象中的每一单元,例如像素或纹理元素,可以处理每一维度的数据,使得数据在逐个维度的基础上被处理。因此,原始张量对象中每一维度的数据可以在打包张量对象中以单元为基础进行处理,例如像素或纹理元素单元,并且数据可以在打包张量对象中的每一单元内以逐维度为基础进行处理。
图6是根据本公开的一个或多个技术的图形处理的通信流程图600。如图6所示,根据本公开的一个或多个技术,图600包括GPU 602(例如,GPU处的着色器处理器或纹理处理器)与存储器604(例如,GPU处的存储器)之间的示例性通信。
在610,GPU 602可以修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构。在一些方面,修改至少一个纹理存储器对象可以包括重新布置一个或多个张量对象的数据或映射一个或多个张量对象的数据中的至少一者。此外,至少一个纹理存储器对象可以对应于二维(2D)结构或三维(3D)结构,并且一个或多个张量对象可以对应于三维(3D)结构或四维(4D)结构。
在620,GPU 602可以基于修改的至少一个纹理存储器对象来确定一个或多个张量对象的一个或多个支持的存储器布局。一个或多个支持的存储器布局可以对应于一个或多个张量对象的数据结构。此外,一个或多个支持的存储器布局可以与一个或多个张量对象的一个或多个打包类型相关联。此外,一个或多个支持的存储器布局可以与至少一个维度相关联,所述至少一个维度包括宽度、高度、特征或批次中的至少一者。
在630,GPU 602可以基于一个或多个支持的存储器布局来转换与一个或多个张量对象相关联的数据(例如,数据662)。与一个或多个张量对象相关联的数据(例如,数据662)可以由着色器处理器(SP)或纹理处理器(TP)访问。
在640,GPU 602可以实现一个或多个张量对象的一个或多个支持的存储器布局。
在650,GPU 602可以基于一个或多个支持的存储器布局来访问与一个或多个张量对象相关联的数据(例如,数据662),一个或多个张量对象中的每一者的数据对应于至少一个数据指令。可以基于对数据的至少一个请求来访问与一个或多个张量对象相关联的数据(例如,数据662)。
在660,GPU 602可以存储与一个或多个张量对象相关联的至少一些数据(例如,数据662)。在一些情况下,至少一些数据(例如,数据662)可以存储在一个或多个通用寄存器(GPR)或片上存储器中。
在670,GPU 602可以基于所访问的与一个或多个张量对象相关联的数据(例如,数据662)来执行至少一个数据指令。在一些方面,执行至少一个数据指令可以包含执行一个或多个运算,其中一个或多个运算可以包括矩阵乘法运算或卷积运算中的至少一者。至少一个数据指令可以对应于代码或着色器代码。此外,至少一个数据指令可以基于机器学习应用或神经网络(NN)来执行。
图7是根据本公开的一个或多个技术的图形处理的示例性方法的流程图700。该方法可以由装置(诸如用于图形处理的装置)、GPU或其他图形处理器、着色器处理器、纹理处理器、无线通信设备和/或可以执行结合图1-6的示例使用的图形处理的任何装置来执行。
在702,该装置可以修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构,如结合图1-6中的示例所描述。例如,GPU 602可以修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构。此外,处理单元120可以执行702。在一些方面,修改至少一个纹理存储器对象可以包括重新布置一个或多个张量对象的数据或映射一个或多个张量对象的数据中的至少一者,如结合图1-6中的示例所描述。此外,至少一个纹理存储器对象可以对应于二维(2D)结构或三维(3D)结构,并且一个或多个张量对象可以对应于三维(3D)结构或四维(4D)结构,如结合图1-6中的示例所描述。
在704,该装置可以基于修改的至少一个纹理存储器对象,来确定一个或多个张量对象的一个或多个支持的存储器布局,如结合图1-6中的示例所描述。例如,GPU 602可以基于修改的至少一个纹理存储器对象,来确定一个或多个张量对象的一个或多个支持的存储器布局。此外,处理单元120可以执行704。一个或多个支持的存储器布局可以对应于一个或多个张量对象的数据结构,如结合图1-6中的示例所描述。此外,一个或多个支持的存储器布局可以与一个或多个张量对象的一个或多个打包类型相关联,如结合图1-6中的示例所描述。此外,一个或多个支持的存储器布局可以与至少一个维度相关联,至少一个维度包括宽度、高度、特征或批次中的至少一者,如结合图1-6中的示例所描述。
在706,该装置可以基于一个或多个支持的存储器布局来转换与一个或多个张量对象相关联的数据,如结合图1-6中的示例所描述。例如,GPU 602可以基于一个或多个支持的存储器布局来转换与一个或多个张量对象相关联的数据。此外,处理单元120可以执行706。与一个或多个张量对象相关联的数据由着色器处理器(SP)或纹理处理器(TP)访问,如结合图1-6中的示例所描述。
在708,该装置可以实现一个或多个张量对象的一个或多个支持的存储器布局,如结合图1-6中的示例所描述。例如,GPU 602可以实现一个或多个张量对象的一个或多个支持的存储器布局。此外,处理单元120可以执行708。
在710,该装置可以基于一个或多个支持的存储器布局来访问与一个或多个张量对象相关联的数据,一个或多个张量对象中的每一者的数据对应于至少一个数据指令,如结合图1-6中的示例所描述。例如,GPU 602可以基于一个或多个支持的存储器布局来访问与一个或多个张量对象相关联的数据。此外,处理单元120可以执行710。可以基于对数据的至少一个请求来访问与一个或多个张量对象相关联的数据,如结合图1-6中的示例所描述。
在712,该装置可以存储与一个或多个张量对象相关联的至少一些数据,如结合图1-6中的示例所描述。例如,GPU 602可以存储与一个或多个张量对象相关联的至少一些数据。此外,处理单元120可以执行712。在一些情况下,至少一些数据可以存储在一个或多个通用寄存器(GPR)或片上存储器中,如结合图1-6中的示例所描述。
在714,该装置可以基于所访问的与一个或多个张量对象相关联的数据来执行至少一个数据指令,如结合图1-6中的示例所描述。例如,GPU 602可以基于与一个或多个张量对象相关联的访问数据来执行至少一个数据指令。此外,处理单元120可以执行714。在一些方面,执行至少一个数据指令可以包含执行一个或多个运算,其中一个或多个运算可以包括矩阵乘法运算或卷积运算中的至少一者,如结合图1-6中的示例所描述。至少一个数据指令可以对应于代码或着色器代码,如结合图1-6中的示例所描述。此外,至少一个数据指令可以基于机器学习应用或神经网络(NN)来执行,如结合图1-6中的示例所描述。
在配置中,提供用于图形处理的方法或装置。该装置可以是GPU、图形处理器或可以执行图形处理的某一其他处理器。在各方面,该装置可以是设备104内的处理单元120,或可以是设备104或另一设备内的某一其他硬件。该装置可以包括用于修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构的部件。该装置可以还包括用于基于修改的至少一个纹理存储器对象来确定一个或多个张量对象的一个或多个支持的存储器布局的部件。该装置可以还包括用于基于一个或多个支持的存储器布局来访问与一个或多个张量对象相关联的数据的部件,一个或多个张量对象中的每一者的数据对应于至少一个数据指令。该装置可以还包括用于基于所访问的与一个或多个张量对象相关联的数据来执行至少一个数据指令的部件。该装置可以还包括用于基于一个或多个支持的存储器布局来转换与一个或多个张量对象相关联的数据的部件。该装置可以还包括用于实现用于一个或多个张量对象的一个或多个支持的存储器布局的部件。该装置可以还包括用于存储与一个或多个张量对象相关联的至少一些数据的部件。
本文描述的主题可以被实现来实现一个或多个益处或优点。例如,所描述的图形处理技术可以由GPU、图形处理器或可以执行图形处理的某一其他处理器使用,以实现本文所述的数据打包技术。与其他图形处理技术相比,这也可以以较低的成本实现。此外,本文的图形处理技术可以改进或加速数据处理或执行。此外,本文的图形处理技术可以改进资源或数据利用和/或资源效率。此外,本公开的各方面可以利用数据打包以便改进张量对象支持和/或降低性能开销。
应理解,所公开的过程/流程图中的块的特定顺序或层次体系是示例性方法的说明。基于设计偏好,应理解,过程/流程图中的块的特定顺序或层次体系可以重新布置。此外,一些块可以组合或省略。所附方法权利要求以样本顺序呈现各种块的元素,并且不意味着限于所呈现的特定顺序或层次体系。
提供先前描述以使得所属领域的技术人员能够实践本文所描述的各方面。对这些方面的各种修改对于本领域技术人员来说将是显而易见的,并且本文中所定义的一般原理可以应用于其他方面。因此,权利要求并不旨在限于本文所示的方面,而是要符合与权利要求语言一致的全部范围,其中除非特别说明,否则单数形式的元件并不意味着“一个且仅一个”,而是“一个或多个”。本文使用词“示例性”意味着“充当示例、实例或说明”。本文中描述为“示例性”的任何方面不一定被解释为优于或有利于其他方面。
除非特别声明,否则术语“一些”指一个或多个,并且术语“或”可以被解释为“和/或”,其中上下文没有另外规定。诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”和“A、B、C或其任何组合”的组合包括A、B和/或C的任何组合,并且可以包括多个A、多个B或多个C。具体来说,诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”和“A、B、C或其任何组合”的组合可以是仅A、仅B、仅C、A和B、A和C、B和C、或A和B和C,其中任何此类组合可以含有A、B或C中的一个或多个成员。本领域普通技术人员已知的或以后将会知道的贯穿本公开描述的各方面的元件的所有结构和功能等同物通过引用的方式明确并入本文中,并且旨在被权利要求所涵盖。此外,本文公开的任何内容都不旨在专用于公众,无论此类公开是否在权利要求中明确陈述。词语“模块”、“机构”、“元件”、“设备”等不能代替词语“部件”。因此,除非使用短语“用于……的部件”明确地陈述了权利要求元件,否则没有权利要求元件应被解释为手段加功能。
在一个或多个示例中,本文所描述的功能可以用硬件、软件、固件或其任何组合来实现。例如,尽管术语“处理单元”已经在本公开中到处使用,但是此类处理单元可以用硬件、软件、固件或其任何组合来实现。如果本文描述的任何功能、处理单元、技术或其他模块用软件实现,则本文描述的功能、处理单元、技术或其他模块可以作为一个或多个指令或代码存储在计算机可读介质上或通过其传输。
根据本公开,术语“或”可以被解释为“和/或”,其中上下文没有另外规定。此外,虽然诸如“一个或多个”或“至少一个”等短语可能已用于本文公开的一些特征而不是其他特征,但是没有使用此类语言的特征可以被解释为在上下文没有另外规定的情况下具有隐含的含义。
在一个或多个示例中,本文所描述的功能可以用硬件、软件、固件或其任何组合来实现。例如,尽管术语“处理单元”已经在本公开中到处使用,但是此类处理单元可以用硬件、软件、固件或其任何组合来实现。如果本文描述的任何功能、处理单元、技术或其他模块用软件实现,则本文描述的功能、处理单元、技术或其他模块可以作为一个或多个指令或代码存储在计算机可读介质上或通过其传输。计算机可读介质可以包括计算机数据存储介质或通信介质,包括有助于将计算机程序从一处传递到另一处的任何介质。以此方式,计算机可读介质通常可以对应于:(1)有形计算机可读存储介质,其为非暂时性的;或者(2)通信介质,诸如信号或载波。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。举例来说(且非限制),此类计算机可读介质可以包含RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器、或其他磁性存储设备。如本文所使用,磁盘和光盘包括紧密光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘使用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
代码可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、特定用途集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程逻辑阵列(FPGA),或其他等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可以指代上述结构或适于实现本文所描述的技术的任何其他结构中的任一者。而且,可以将这些技术充分实现在一个或多个电路或逻辑元件中。
本公开的技术可以实现在各种设备或装置中,包括无线手机、集成电路(IC)或一组IC(例如,芯片集)。在本公开中描述各种组件、模块或单元以强调被配置成执行所公开的技术的设备的功能方面,但未必需要通过不同的硬件单元来实现。相反,如上所述,各种单元可以结合合适的软件和/或固件组合在任何硬件单元中,或由可相互的操作硬件单元的集合(包括如上所述的一个或多个处理器)来提供。因此,如本文中所使用的术语“处理器”可以指代上述结构或适于实现本文所描述的技术的任何其他结构中的任一者。而且,可以将这些技术充分实现在一个或多个电路或逻辑元件中。
以下方面仅是说明性的,并且可以与本文描述的其他方面或教示组合,而没有限制。
方面1是一种图形处理的方法。该方法包括:修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构;基于该修改的至少一个纹理存储器对象来确定一个或多个张量对象的一个或多个支持的存储器布局;基于一个或多个支持的存储器布局来访问与一个或多个张量对象相关联的数据,一个或多个张量对象中的每一者的数据对应于至少一个数据指令;以及基于所访问的与一个或多个张量对象相关联的数据来执行至少一个数据指令。
方面2是方面1的方法,还包括基于一个或多个支持的存储器布局来转换与一个或多个张量对象相关联的数据。
方面3是方面1和2中的任一者的方法,其中修改至少一个纹理存储器对象包括重新布置一个或多个张量对象的数据或映射一个或多个张量对象的数据中的至少一者。
方面4是方面1至3中的任一者的方法,还包括实现用于一个或多个张量对象的一个或多个支持的存储器布局。
方面5是方面1至4中的任一者的方法,其中一个或多个支持的存储器布局对应于一个或多个张量对象的数据结构。
方面6是方面1至5中的任一者的方法,其中一个或多个支持的存储器布局与一个或多个张量对象的一个或多个打包类型相关联。
方面7是方面1至6中的任一者的方法,还包括存储与一个或多个张量对象相关联的数据中的至少一些。
方面8是方面1至7中的任一者的方法,其中数据中的至少一些存储在一个或多个通用寄存器(GPR)或片上存储器中。
方面9是方面1至8中的任一者的方法,其中执行至少一个数据指令包含执行一个或多个运算,所述一个或多个运算包括矩阵乘法运算或卷积运算中的至少一者。
方面10是方面1至9中的任一者的方法,其中一个或多个支持的存储器布局与至少一个维度相关联,所述至少一个维度包括宽度、高度、特征或批次中的至少一者。
方面11是方面1至10中的任一者的方法,其中至少一个数据指令对应于代码或着色器代码。
方面12是方面1至11中的任一者的方法,其中基于对数据的至少一个请求来访问与一个或多个张量对象相关联的数据。
方面13是方面1至12中的任一者的方法,其中至少一个纹理存储器对象对应于二维(2D)结构或三维(3D)结构,并且其中一个或多个张量对象对应于三维(3D)结构或四维(4D)结构。
方面14是方面1至13中的任一者的方法,其中与一个或多个张量对象相关联的数据由着色器处理器(SP)或纹理处理器(TP)访问。
方面15是方面1至14中的任一者的方法,其中至少一个数据指令基于机器学习应用或神经网络(NN)来执行。
方面16是一种用于图形处理的装置,包括耦合到存储器并被配置成实现如方面1至15中的任一者的方法的至少一个处理器。
方面17是一种用于图形处理的装置,包括用于实现如方面1至15中的任一者的方法的部件。
方面18是一种存储计算机可执行代码的计算机可读介质,该代码在由至少一个处理器执行时,促使所述至少一个处理器实现如方面1至15中的任一者的方法。
Claims (32)
1.一种图形处理的方法,包含:
修改至少一个纹理存储器对象,以支持一个或多个张量对象的数据结构;
基于所述修改的至少一个纹理存储器对象,来确定所述一个或多个张量对象的一个或多个支持的存储器布局;
基于所述一个或多个支持的存储器布局,来访问与所述一个或多个张量对象相关联的数据,所述一个或多个张量对象中的每一者的所述数据对应于至少一个数据指令;以及
基于所访问的与所述一个或多个张量对象相关联的数据,来执行所述至少一个数据指令。
2.根据权利要求1所述的方法,还包含:
基于所述一个或多个支持的存储器布局,来转换与所述一个或多个张量对象相关联的所述数据。
3.根据权利要求1所述的方法,其中,修改所述至少一个纹理存储器对象包括以下至少一者:重新布置所述一个或多个张量对象的数据、或映射所述一个或多个张量对象的数据。
4.根据权利要求1所述的方法,还包含:
实现所述一个或多个张量对象的所述一个或多个支持的存储器布局。
5.根据权利要求1所述的方法,其中所述一个或多个支持的存储器布局对应于所述一个或多个张量对象的所述数据结构。
6.根据权利要求1所述的方法,其中,所述一个或多个支持的存储器布局与所述一个或多个张量对象的一个或多个打包类型相关联。
7.根据权利要求1所述的方法,还包含:
存储与所述一个或多个张量对象相关联的所述数据中的至少一些。
8.根据权利要求7所述的方法,其中,所述数据中的所述至少一些被存储在一个或多个通用寄存器(GPR)或片上存储器中。
9.根据权利要求1所述的方法,其中,执行所述至少一个数据指令包含执行一个或多个运算,所述一个或多个运算包括矩阵乘法运算或卷积运算中的至少一者。
10.根据权利要求1所述的方法,其中,所述一个或多个支持的存储器布局与至少一个维度相关联,所述至少一个维度包括宽度、高度、特征或批次中的至少一者。
11.根据权利要求1所述的方法,其中,所述至少一个数据指令对应于代码或着色器代码。
12.根据权利要求1所述的方法,其中,基于对所述数据的至少一个请求,来访问与所述一个或多个张量对象相关联的所述数据。
13.根据权利要求1所述的方法,其中,所述至少一个纹理存储器对象对应于二维(2D)结构或三维(3D)结构,并且其中所述一个或多个张量对象对应于三维(3D)结构或四维(4D)结构。
14.根据权利要求1所述的方法,其中,与所述一个或多个张量对象相关联的所述数据由着色器处理器(SP)或纹理处理器(TP)访问。
15.根据权利要求1所述的方法,其中,所述至少一个数据指令基于机器学习应用或神经网络(NN)来执行。
16.一种用于图形处理的装置,包含:
存储器;以及
至少一个处理器,耦合到所述存储器且被配置为:
修改至少一个纹理存储器对象以支持一个或多个张量对象的数据结构;
基于所述修改的至少一个纹理存储器对象,来确定所述一个或多个张量对象的一个或多个支持的存储器布局;
基于所述一个或多个支持的存储器布局,来访问与所述一个或多个张量对象相关联的数据,所述一个或多个张量对象中的每一者的所述数据对应于至少一个数据指令;以及
基于所访问的与所述一个或多个张量对象相关联的数据,来执行所述至少一个数据指令。
17.根据权利要求16所述的装置,其中,所述至少一个处理器还被配置为:
基于所述一个或多个支持的存储器布局,来转换与所述一个或多个张量对象相关联的所述数据。
18.根据权利要求16所述的装置,其中,修改所述至少一个纹理存储器对象包括以下至少一者:重新布置所述一个或多个张量对象的数据、或映射所述一个或多个张量对象的数据。
19.根据权利要求16所述的装置,其中,所述至少一个处理器还被配置为:
实现所述一个或多个张量对象的所述一个或多个支持的存储器布局。
20.根据权利要求16所述的装置,其中,所述一个或多个支持的存储器布局对应于所述一个或多个张量对象的所述数据结构。
21.根据权利要求16所述的装置,其中,所述一个或多个支持的存储器布局与所述一个或多个张量对象的一个或多个打包类型相关联。
22.根据权利要求16所述的装置,其中,所述至少一个处理器还被配置为:
存储与所述一个或多个张量对象相关联的所述数据中的至少一些。
23.根据权利要求22所述的装置,其中,所述数据中的所述至少一些被存储在一个或多个通用寄存器(GPR)或片上存储器中。
24.根据权利要求16所述的装置,其中,执行所述至少一个数据指令包含:所述至少一个处理器被配置为执行一个或多个运算,所述一个或多个运算包括矩阵乘法运算或卷积运算中的至少一者。
25.根据权利要求16所述的装置,其中,所述一个或多个支持的存储器布局与至少一个维度相关联,所述至少一个维度包括宽度、高度、特征或批次中的至少一者。
26.根据权利要求16所述的装置,其中,所述至少一个数据指令对应于代码或着色器代码。
27.根据权利要求16所述的装置,其中,基于对所述数据的至少一个请求,来访问与所述一个或多个张量对象相关联的所述数据。
28.根据权利要求16所述的装置,其中,所述至少一个纹理存储器对象对应于二维(2D)结构或三维(3D)结构,并且其中所述一个或多个张量对象对应于三维(3D)结构或四维(4D)结构。
29.根据权利要求16所述的装置,其中,与所述一个或多个张量对象相关联的所述数据由着色器处理器(SP)或纹理处理器(TP)访问。
30.根据权利要求16所述的装置,其中,所述至少一个数据指令基于机器学习应用或神经网络(NN)来执行。
31.一种用于图形处理的装置,包含:
用于修改至少一个纹理存储器对象、以支持一个或多个张量对象的数据结构的部件;
用于基于所述修改的至少一个纹理存储器对象、来确定所述一个或多个张量对象的一个或多个支持的存储器布局的部件;
用于基于所述一个或多个支持的存储器布局、来访问与所述一个或多个张量对象相关联的数据的部件,所述一个或多个张量对象中的每一者的所述数据对应于至少一个数据指令;以及
用于基于所访问的与所述一个或多个张量对象相关联的数据、来执行所述至少一个数据指令的部件。
32.一种计算机可读介质,存储有用于图形处理的计算机可执行代码,所述代码在由处理器执行时促使所述处理器:
修改至少一个纹理存储器对象,以支持一个或多个张量对象的数据结构;
基于所述修改的至少一个纹理存储器对象,来确定所述一个或多个张量对象的一个或多个支持的存储器布局;
基于所述一个或多个支持的存储器布局,来访问与所述一个或多个张量对象相关联的数据,所述一个或多个张量对象中的每一者的所述数据对应于至少一个数据指令;以及
基于所访问的与所述一个或多个张量对象相关联的数据,来执行所述至少一个数据指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/173,643 US11481865B2 (en) | 2021-02-11 | 2021-02-11 | Methods and apparatus for tensor object support in machine learning workloads |
US17/173,643 | 2021-02-11 | ||
PCT/US2022/012166 WO2022173545A1 (en) | 2021-02-11 | 2022-01-12 | Methods and apparatus for tensor object support in machine learning workloads |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116917927A true CN116917927A (zh) | 2023-10-20 |
Family
ID=81327710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280013472.3A Pending CN116917927A (zh) | 2021-02-11 | 2022-01-12 | 用于机器学习工作负载中张量对象支持的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11481865B2 (zh) |
EP (1) | EP4292040A1 (zh) |
JP (1) | JP7463626B2 (zh) |
KR (1) | KR20230127345A (zh) |
CN (1) | CN116917927A (zh) |
BR (1) | BR112023015620A2 (zh) |
TW (1) | TW202303515A (zh) |
WO (1) | WO2022173545A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
CN104969289B (zh) | 2013-02-07 | 2021-05-28 | 苹果公司 | 数字助理的语音触发器 |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
US11204787B2 (en) * | 2017-01-09 | 2021-12-21 | Apple Inc. | Application integration with a digital assistant |
DK201770429A1 (en) | 2017-05-12 | 2018-12-14 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
US20180336275A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Intelligent automated assistant for media exploration |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
US11227599B2 (en) | 2019-06-01 | 2022-01-18 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339443B1 (en) * | 2017-02-24 | 2019-07-02 | Gopro, Inc. | Systems and methods for processing convolutional neural network operations using textures |
CN108010113B (zh) | 2017-11-21 | 2021-07-27 | 成都品果科技有限公司 | 一种基于像素着色器的深度学习模型执行方法 |
-
2021
- 2021-02-11 US US17/173,643 patent/US11481865B2/en active Active
-
2022
- 2022-01-12 TW TW111101287A patent/TW202303515A/zh unknown
- 2022-01-12 BR BR112023015620A patent/BR112023015620A2/pt unknown
- 2022-01-12 JP JP2023547669A patent/JP7463626B2/ja active Active
- 2022-01-12 CN CN202280013472.3A patent/CN116917927A/zh active Pending
- 2022-01-12 KR KR1020237026725A patent/KR20230127345A/ko active IP Right Grant
- 2022-01-12 EP EP22704032.6A patent/EP4292040A1/en active Pending
- 2022-01-12 WO PCT/US2022/012166 patent/WO2022173545A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
TW202303515A (zh) | 2023-01-16 |
WO2022173545A1 (en) | 2022-08-18 |
KR20230127345A (ko) | 2023-08-31 |
US11481865B2 (en) | 2022-10-25 |
US20220253969A1 (en) | 2022-08-11 |
JP2024506037A (ja) | 2024-02-08 |
JP7463626B2 (ja) | 2024-04-08 |
BR112023015620A2 (pt) | 2023-10-31 |
EP4292040A1 (en) | 2023-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11481865B2 (en) | Methods and apparatus for tensor object support in machine learning workloads | |
KR102590644B1 (ko) | 증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 | |
KR102614847B1 (ko) | 그래픽스 프로세싱 유닛 하이브리드 렌더링을 위한 장치 및 방법 | |
US20210240524A1 (en) | Methods and apparatus to facilitate tile-based gpu machine learning acceleration | |
US11037358B1 (en) | Methods and apparatus for reducing memory bandwidth in multi-pass tessellation | |
US20220058872A1 (en) | Compressed geometry rendering and streaming | |
KR20230079374A (ko) | 디스플레이 패널 fps 스위칭을 위한 방법 및 장치 | |
US11257277B2 (en) | Methods and apparatus to facilitate adaptive texture filtering | |
US20220114694A1 (en) | Methods and apparatus for optimizing gpu kernel with simo approach for downscaling utilizing gpu cache | |
US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
US11790478B2 (en) | Methods and apparatus for mapping source location for input data to a graphics processing unit | |
US11727631B2 (en) | Dynamic variable rate shading | |
US11087431B2 (en) | Methods and apparatus for reducing draw command information | |
CN117616446A (zh) | 基于图块的架构中的深度和阴影通道渲染的优化 | |
KR20230130157A (ko) | 인트라-웨이브 텍스처 루핑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |