CN110574044A - 用于使用依赖树来增强二进制权重神经网络的方法和装置 - Google Patents

用于使用依赖树来增强二进制权重神经网络的方法和装置 Download PDF

Info

Publication number
CN110574044A
CN110574044A CN201880026996.XA CN201880026996A CN110574044A CN 110574044 A CN110574044 A CN 110574044A CN 201880026996 A CN201880026996 A CN 201880026996A CN 110574044 A CN110574044 A CN 110574044A
Authority
CN
China
Prior art keywords
graphics
tree
binary
memory
processor
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
Application number
CN201880026996.XA
Other languages
English (en)
Inventor
郭怡文
姚安邦
赵昊
陆鸣
陈玉荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN110574044A publication Critical patent/CN110574044A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/042Knowledge-based neural networks; Logical representations of neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Databases & Information Systems (AREA)

Abstract

公开了用于使用依赖树来增强二进制权重神经网络的方法和装置。一种增强具有二进制权重的卷积神经网络(CNN)的方法包括为所获得的二进制张量构建树,该树具有多个节点,这些节点开始于CNN的每层中的根节点。在该树的根节点处计算输入特征图与输入二进制张量的卷积。从树的根节点搜索下一节点,并且使用在该树的根节点处所计算出的先前的卷积结果在下一节点处计算卷积。从根节点开始,对于从树的根节点开始的所有节点重复对下一节点的搜索,并且使用先前的卷积结果在每个下一节点处计算卷积。

Description

用于使用依赖树来增强二进制权重神经网络的方法和装置
优先权
本申请要求2017年5月23日提交的题为“METHODS AND APPARATUS FORENHANBCING A BINARY WEIGHT NEURAL NETWORK USING A DEPENDENCY TREE(用于使用依赖树来增强二进制权重神经网络的方法和装置”的美国临时专利申请第62/510,075号的优先权和权益,该申请通过引用被结合于此并被共同分配。
技术领域
实施例总体上涉及数据处理,并且更具体地涉及经由通用图形处理单元的数据处理。具体而言,实施例涉及用于使用依赖树来增强二进制权重神经网络的系统和方法。
背景技术
当前的并行图形数据处理包括被开发为用于对图形数据执行特定操作的系统和方法,这些特定操作诸如例如,线性插值、曲面细分、栅格化、纹理映射、深度测试等。传统上,图形处理器使用固定功能计算单元来处理图形数据;然而,最近,部分图形处理器已经变得可编程,使得此类处理器能够支持用于处理顶点和片段数据的更多种操作。
为了进一步提高性能,图形处理器典型地实现诸如流水线操作之类的处理技术,这些处理技术尝试贯穿图形流水线的不同部分并行地处理尽可能多的图形数据。具有单指令多线程(SIMT)架构的并行图形处理器被设计成使图形流水线中的并行处理量最大化。在SIMT架构中,多组并行线程尝试尽可能经常地一起同步执行程序指令,以提高处理效率。可以在Shane Cook的CUDA编程(CUDA Programming)第三章,第37-51页(2013)中找到对SIMT架构的软件和硬件的总体概述。
机器学习已经在解决许多种类的任务方面取得成功。当训练和使用机器学习算法(例如,神经网络)时产生的计算自然地适合于高效的并行实现。因此,诸如通用图形处理单元(GPGPU)之类的并行处理器在深度神经网络的实际实现中扮演着重要角色。具有单指令多线程(SIMT)架构的并行图形处理器被设计成使图形流水线中的并行处理量最大化。在SIMT架构中,多组并行线程尝试尽可能经常地一起同步执行程序指令,以提高处理效率。由并行机器学习算法实现所提供的效率允许使用高容量网络并且使这些网络能在较大的数据集上进行训练。
深度学习神经网络(DNN)典型地被构造为某种类型的卷积神经网络并且被用来执行复杂的关联任务。在使用已知输入的训练阶段之后,DNN能够识别与原始训练输入类似的新的输入。这有助于对象检测技术、自动语音识别、用户认证、图像理解、以及机器视觉使用等等。可以使用视频序列来进行对象跟踪以及识别。
附图说明
所附附图图示出示例,并且因此是示例性实施例而不认为是对范围的限制。
图1是图示出被配置成用于实现本文中所描述的示例性实施例的一个或多个方面的计算机系统的框图。
图2A-图2D图示出根据示例性实施例的并行处理器组件。
图3A-图3B是根据示例性实施例的图形多处理器的框图。
图4A-图4F图示出其中多个图形处理单元(GPU)通信地耦合至多个多核处理器的示例性架构。
图5图示出根据示例性实施例的图形处理流水线。
图6图示出根据示例性实施例的机器学习软件栈。
图7图示出根据示例性实施例的高度并行的通用图形处理单元。
图8图示出根据示例性实施例的多GPU计算系统。
图9A-图9B图示出示例性深度神经网络的层。
图10图示出示例性递归神经网络。
图11图示出深度神经网络的训练和部署的示例性实施例。
图12是图示出分布式学习的示例性框图。
图13图示出适用于使用经训练的模型执行推断的示例性推断芯片上系统(SOC)。
图14是将RGB和CNN通道数据存储为深度通道图像的部分的示例性图,是使用卷积神经网络(CNN)存储深度通道图像的图像捕捉系统的示例性框图。
图15是根据示例性实施例的通过采用二进制结构来对网络模型进行速写的概览图。
图16是根据示例性实施例的利用经缩放二进制张量的总和来对实值权重张量进行近似的图。
图17是二进制张量卷积的直接实现方式中的重复的浮点加法和减法的图。
图18A是根据示例性实施例的为关联卷积提供次序的依赖树的图。
图18B是根据示例性实施例的二进制张量卷积的关联实现方式的图。
图18C是根据示例性实施例的针对通过各层的一系列操作的累积能量相对于所要求的存储器的一系列图。
图19图示出根据示例性实施例的处理系统的框图。
图20图示出处理器的实施例的示例性框图,该处理器具有一个或多个处理器核、集成存储器控制器以及集成图形处理器。
图21图示出图形处理器的示例性框图。
图22图示出根据示例性实施例的图形处理器的图形处理引擎的框图。
图23图示出图形处理器的另一示例性实施例的框图。
图24图示出在图形处理引擎(GPE)的示例性实施例中采用的包括处理元件阵列的线程执行逻辑。
图25图示出根据示例性实施例的图形处理器指令格式的框图。
图26图示出图形处理器的示例性实施例的框图。
图27A图示出根据示例性实施例的图形处理器命令格式的框图。
图27B图示出根据示例性实施例的图形处理器命令序列的框图。
图28图示出根据示例性实施例的数据处理系统的示例性图形软件架构。
图29图示出根据示例性实施例的可用于制造集成电路(IC)以执行操作的IP核开发系统的框图。
图30图示出根据示例性实施例的可使用一个或多个IP核来制造的示例性芯片上系统IC的框图。
图31图示出根据示例性实施例的可使用一个或多个IP核来制造的芯片上系统IC上的示例性图形处理器的框图。
图32图示出根据示例性实施例的可使用一个或多个IP核来制造的芯片上系统IC的示例性附加图形处理器的框图。
具体实施方式
在一些实施例中,图形处理单元(GPU)通信地耦合至主机/处理器核以加速图形操作、机器学习操作、模式分析操作、以及各种通用GPU(GPGPU)功能。GPU可通过总线或另一互连(例如,诸如PCIe或NVLink之类的高速互连)而通信地耦合至主机处理器/核。在其他实施例中,GPU可与核集成在同一封装或芯片上,并且通过内部处理器总线/互连(即,在封装或芯片的内部)通信地耦合至核。不论连接GPU所采用的方式如何,处理器核都可以采取工作描述符中所包含的命令/指令序列的形式将工作分配给GPU。GPU随后使用专用电路/逻辑来有效地处理这些命令/指令。
在一些实施例中,图像捕捉设备是独立设备。然而,图像捕捉设备可以是要求图像捕捉能力的另一计算设备的部分或其子组件,该计算设备诸如,具有用于捕捉图像的数字相机的便携式或手持式计算设备。
在下列描述中,阐述了众多特定细节来提供更全面的理解。然而,将会显而易见的是,可在没有这些特定细节中的一个或多个细节的情况下实施本文中所描述的实施例。在其他实例中,未描述公知的特征以避免使示例性实施例的细节变得模糊。
计算系统概览
图1是图示出被配置成用于实现本文中所描述的示例性实施例的一个或多个方面的计算系统100的框图。计算系统100包括具有一个或多个处理器102和系统存储器104的处理子系统101,该一个或多个处理器102与系统存储器104经由可包括存储器中枢105的互连路径进行通信。存储器中枢105可以是芯片组组件内的单独组件或者可被集成在一个或多个处理器102内。存储器中枢105经由通信链路106而与I/O子系统111耦合。I/O子系统111包括I/O中枢107,该I/O中枢107可以使得计算系统100能够从一个或多个输入设备108接收输入。另外,I/O中枢107可以使得显示控制器能够向一个或多个显示设备110A提供输出,该显示控制器可包括在一个或多个处理器102中。在一个实施例中,与I/O中枢107耦合的一个或多个显示设备110A可以包括本地的、内部的、或嵌入式的显示设备。
在一个实施例中,处理子系统101包括经由总线或其他通信链路113耦合至存储器中枢105的一个或多个并行处理器112。通信链路113可以是任何数量的基于标准的通信链路技术或协议中的一种,诸如但不限于PCI Express,或者可以是供应方特定的通信接口或通信结构。在一个实施例中,一个或多个并行处理器112形成包括大量处理核和/或处理集群的集中于计算的并行或向量处理系统,诸如,集成众核(MIC)处理器。在一个实施例中,一个或多个并行处理器112形成可以向经由I/O中枢107耦合的一个或多个显示设备110A中的一个输出像素的图形处理子系统。一个或多个并行处理器112还可以包括显示控制器以及用于实现到一个或多个显示设备110B的直接连接的显示接口(未示出)。
在I/O子系统111内,系统存储单元114可以连接至I/O中枢107,从而为计算系统100提供存储机制。I/O开关116可被用来提供实现I/O中枢107与其他组件之间的连接的接口机制,这些其他组件诸如,可被集成到平台中的网络适配器118和/或无线网络适配器119、以及可以经由一个或多个插入式设备120被添加的各种其他设备。网络适配器118可以是以太网适配器或另一有线网络适配器。无线网络适配器119可以包括Wi-Fi、蓝牙、近场通信(NFC)或包括一个或多个无线电装置的其他网络设备中的一者或多者。
计算系统100可以包括未显式地示出的其他组件,包括USB或其他端口连接、光学存储驱动器、视频捕捉设备等等,这些组件也可连接至I/O中枢107。使图1中的各组件互连的通信路径可使用任何合适的协议来实现,这些协议诸如,基于PCI(外围组件互连)的协议(例如,PCI-Express)或任何其他总线或点对点通信接口和/或(多个)协议,诸如NV-Link高速互连或本领域已知的互连协议。
在一个实施例中,一个或多个并行处理器112包含针对图形和视频处理进行优化的电路(包括例如,视频输出电路)并构成图形处理单元(GPU)。在另一实施例中,本文中更详细地描述,一个或多个并行处理器112包含针对通用处理进行优化同时保留底层计算架构的电路。在又一实施例中,计算系统100的组件可与一个或多个其他系统元件集成在单个集成电路上。例如,一个或多个并行处理器112、存储器中枢105、处理器102、以及I/O中枢107可以被集成在芯片上系统(SoC)集成电路中。替代地,计算系统100的组件可被集成到单个封装中,以形成系统级封装(SIP)配置。在一个实施例中,计算系统100的组件中的至少部分可被集成到多芯片模块(MCM)中,该多芯片模块可以与其他多芯片模块互连成为模块化计算系统。
将会领会,本文中所示出的计算系统100是说明性的,并且变型和修改是可能的。可按需要修改连接拓扑,包括桥接器的数量和布置、(多个)处理器102的数量、以及(多个)并行处理器112的数量。例如,在一些实施例中,系统存储器104直接地而不是通过桥接器连接至(多个)处理器102,而其他设备通过存储器中枢105和(多个)处理器102而与系统存储器104进行通信。在其他替代拓扑中,(多个)并行处理器112连接至I/O中枢107或直接连接至一个或多个处理器102中的一个,而不是连接至存储器中枢105。在其他实施例中,I/O中枢107和存储器中枢105可被集成到单个芯片中。一些实施例可包括经由多个插槽附连的两组或更多组(多个)处理器102,这些处理器102可以与(多个)并行处理器112的两个或更多个实例耦合。
本文中所示出的特定组件中的一些是可选的,并且并非在计算系统100的所有实现方式中都包括这些组件。例如,可支持任何数量的插入式卡或外围设备,或者可消除一些组件。此外,一些架构可针对类似于图1中所图示的那些组件的组件使用不同的术语。例如,在一些架构中,存储器中枢105可被称为北桥,而I/O中枢107可被称为南桥。
图2A图示出根据示例性实施例的并行处理器200。并行处理器200的各组件可使用诸如可编程处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)之类的一个或多个集成电路设备来实现。所图示的并行处理器200是根据示例性实施例的图1中所示出的一个或多个并行处理器112的变型。
在一个实施例中,并行处理器200包括并行处理单元202。并行处理单元包括实现与其他设备的通信的I/O单元204,这些其他设备包括并行处理单元202的其他实例。I/O单元204可直接连接至其他设备。在一个实施例中,I/O单元204通过使用中枢或开关接口(诸如,存储器中枢105)而与其他设备连接。存储器中枢105与I/O单元204之间的连接形成通信链路113。在并行处理单元202内,I/O单元204与主机接口206以及存储器交叉开关216连接,其中,主机接口206接收涉及执行处理操作的命令,并且存储器交叉开关216接收涉及执行存储器操作的命令。
当主机接口206经由I/O单元204接收命令缓冲器时,主机接口206可以将用于执行那些命令的工作操作引导至前端208。在一个实施例中,前端208与调度器210耦合,该调度器210被配置成用于将命令或其他工作项目分发给处理集群阵列212。在一个实施例中,调度器210确保在将任务分发给处理集群阵列212中的处理集群之前处理集群阵列212被恰当地配置并且处于有效状态。在一个实施例中,经由在微控制器上执行的固件逻辑来实现调度器210。微控制器实现的调度器210可配置成在粗粒度和细粒度下执行复杂的调度和工作分发操作,从而实现对在处理阵列212上执行的线程的快速抢占和上下文切换。在一个实施例中,主机软件可以经由多个图形处理门铃机制中的一者来证实用于在处理阵列212上调度的工作负荷。工作负荷随后可以由调度器微控制器内的调度器210逻辑跨处理阵列212自动地分发。
处理集群阵列212可以包括高达“N”个处理集群(例如,集群214A、集群214B至集群214N)。处理集群阵列212中的每个集群214A-214N可以执行大量的并发线程。调度器210可以使用各种调度和/或工作分发算法将工作分配给处理集群阵列212中的集群214A-214N,这些调度和/或工作分发算法可取决于针对每种类型的程序或计算出现的工作负荷而变化。调度可以由调度器210动态地处置,或可以在对于被配置成供处理集群阵列212执行的程序逻辑的编译期间部分地由编译器逻辑协助。在一个实施例中,处理集群阵列212中的不同的集群214A-214N可以被分配用于处理不同类型的程序或用于执行不同类型的计算。
处理集群阵列212可以被配置成用于执行各种类型的并行处理操作。在一个实施例中,处理集群阵列212被配置成用于执行通用并行计算操作。例如,处理集群阵列212可以包括用于执行处理任务的逻辑,这些处理任务包括对视频和/或音频数据的过滤、执行建模操作(包括物理操作)以及执行数据变换。
在一个实施例中,处理集群阵列212被配置成用于执行并行图形处理操作。在其中并行处理器200被配置成用于执行图形处理操作的实施例中,处理集群阵列212可以包括用于支持此类图形处理操作的执行的附加逻辑,包括但不限于,用于执行纹理操作的纹理采样逻辑以及曲面细分逻辑和其他顶点处理逻辑。另外,处理集群阵列212可以被配置成用于执行与图形处理有关的着色器程序,诸如但不限于,顶点着色器、曲面细分着色器、几何着色器以及像素着色器。并行处理单元202可以经由I/O单元204从系统存储器传输数据以供处理。在处理期间,可在处理期间将所传输的数据存储到芯片上存储器(例如,并行处理器存储器222),随后将该数据写回到系统存储器。
在一个实施例中,当使用并行处理单元202来执行图形处理时,调度器210可以被配置成用于将处理工作负荷分成近似相等尺寸的任务,以更好地实现图形处理操作到处理集群阵列212中的多个集群214A-214N的分发。在一些实施例中,处理集群阵列212的部分可以被配置成用于执行不同类型的处理。例如,第一部分可被配置成用于执行顶点着色和拓扑生成,第二部分可被配置成用于执行曲面细分和几何着色,并且第三部分可被配置成用于执行像素着色或其他屏幕空间操作,以产生用于显示的经渲染的图像。由集群214A-214N中的一个或多个集群产生的中间数据可被存储在缓冲器中,以允许该中间数据在集群214A-214N之间传送,以供进行进一步处理。
在操作期间,处理集群阵列212可以经由调度器210接收将要被执行的处理任务,该调度器210从前端208接收定义处理任务的命令。对于图形处理操作,处理任务可以包括将要被处理的数据以及定义将如何处理该数据(例如,将执行什么程序)的状态参数和命令的索引,该数据例如,表面(补片(patch))数据、基元数据、顶点数据和/或像素数据。调度器210可被配置成用于取出与任务相对应的索引,或者可从前端208接收索引。前端208可以被配置成用于确保在由传入命令缓冲器(例如,批量缓冲器、推入缓冲器等)指定的工作负荷被发起之前处理集群阵列212被配置成有效状态。
并行处理单元202的一个或多个实例中的每个实例可以与并行处理器存储器222耦合。可以经由存储器交叉开关216来访问并行处理器存储器222,该存储器交叉开关216可以接收来自处理集群阵列212以及I/O单元204的存储器请求。存储器交叉开关216可以经由存储器接口218来访问并行处理器存储器222。存储器接口218可以包括多个分区单元(例如,分区单元220A、分区单元220B至分区单元220N),这些分区单元可以各自耦合至并行处理器存储器222的部分(例如,存储器单元)。在一种实现方式中,分区单元220A-220N的数量被配置成等于存储器单元的数量,以使得第一分区单元220A具有对应的第一存储器单元224A,第二分区单元220B具有对应的存储器单元224B,并且第N分区单元220N具有对应的第N存储器单元224N。在其他实施例中,分区单元220A-220N的数量可以不等于存储器设备的数量。
在各实施例中,存储器单元224A-224N可以包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如,同步图形随机存取存储器(SGRAM),包括图形双数据速率(GDDR)存储器。在一个实施例中,存储器单元224A-224N还可以包括3D堆叠式存储器,包括但不限于高带宽存储器(HBM)。本领域技术人员将会领会,存储器单元224A-224N的具体实现方式可以有所不同,并且可以从各种常规设计中的一种设计进行选择。诸如帧缓冲器或纹理映射之类的渲染目标可跨存储器单元224A-224N进行存储,从而允许分区单元220A-220N并行地写入每个渲染目标的部分,以高效地使用并行处理器存储器222的可用带宽。在一些实施例中,可排除并行处理器存储器222的本地实例,以有利于利用与本地高速缓存存储器结合的系统存储器的统一存储器设计。
在一个实施例中,处理集群阵列212中的集群214A-214N中的任一者可以处理将被写入到并行处理器存储器222内的存储器单元224A-224N中的任一者的数据。存储器交叉开关216可以被配置成用于将每个集群214A-214N的输出传输到任一分区单元220A-220N或传输到另一集群214A-214N,该另一集群214A-214N可以对该输出执行附加的处理操作。每个集群214A-214N可以通过存储器交叉开关216而与存储器接口218进行通信,以从各种外部存储器设备进行读取或写入到各种外部存储器设备。在一个实施例中,存储器交叉开关216具有到存储器接口218的连接以与I/O单元204进行通信,以及具有到并行处理器存储器222的本地实例的连接,从而使得不同处理集群214A-214N内的处理单元能够与系统存储器或对于并行处理单元202而言不是本地的其他存储器通信。在一个实施例中,存储器交叉开关216可以使用虚拟通道来分离集群214A-214N与分区单元220A-220N之间的业务流(trafficstream)。
尽管在并行处理器200内图示出并行处理单元202的单个实例,但可以包括并行处理单元202的任何数量的实例。例如,并行处理单元202的多个实例可以被设置在单个插入式卡上,或者多个插入式卡可以是互连的。并行处理单元202的不同实例可以被配置成用于互操作,即使不同的实例具有不同数量的处理核、不同的本地并行处理器存储器量、和/或其他配置差别。例如,并且在一个实施例中,并行处理单元202的一些实例可以包括相对于其他实例更高精度的浮点单元。包含并行处理单元202或并行处理器200的一个或多个实例的系统能以各种配置和形状因数来实现,这些配置和形状因子包括但不限于,台式计算机、膝上型计算机、或手持式个人计算机、服务器、工作站、游戏控制台和/或嵌入式系统。
图2B是根据示例性实施例的分区单元220的框图。在一个实施例中,分区单元220是图2A的分区单元220A-220N中的一个分区单元的实例。如所图示,分区单元220包括L2高速缓存221、帧缓冲器接口225、以及ROP 226(栅格操作单元)。L2高速缓存221是被配置成用于执行从存储器交叉开关216和ROP 226接收的加载和存储操作的读取/写入高速缓存。读取未命中和紧迫写回请求由L2高速缓存221输出到帧缓冲器接口225以供处理。还可以经由帧缓冲器接口225将更新发送至帧缓冲器以供处理。在一个实施例中,帧缓冲器接口225与并行处理器存储器中的存储器单元中的一者对接,该存储器单元诸如图2的存储器单元224A-224N(例如,在并行处理器存储器222内)。
在图形应用中,ROP 226是执行栅格操作(诸如,模板印制(stencil)、z测试、混合等等)的处理单元。ROP 226随后输出经处理的图形数据,经处理的图形数据被存储在图形存储器中。在一些实施例中,ROP 226包括用于压缩被写入至存储器的深度或颜色数据并解压缩从存储器读取的深度或颜色数据的压缩逻辑。压缩逻辑可以是利用多种压缩算法中的一种或多种的无损压缩逻辑。由ROP 226执行的压缩的类型可以基于将要被压缩的数据的统计特性而变化。例如,在一个实施例中,逐片(tile)地对深度和颜色数据执行Δ色彩压缩。
在一些实施例中,ROP 226被包括在每个处理集群(例如,图2的集群214A-214N)内而非被包括在分区单元220内。在此类实施例中,通过存储器交叉开关216来传送像素数据而非像素片段数据的读取和写入请求。经处理的图形数据可被显示在显示设备(诸如,图1的一个或多个显示设备110中的一个显示设备)上,可被路由以供(多个)处理器102进一步处理,或者可被路由以供图2A的并行处理器200内的处理实体中的一个处理实体进一步处理。
图2C是根据示例性实施例的并行处理单元内的处理集群214的框图。在一个实施例中,处理集群是图2的处理集群214A-214N中的一个处理集群的实例。处理集群214可以被配置成用于并行地执行多个线程,其中,术语“线程”是指在特定的输入数据集合上执行的特定程序的实例。在一些实施例中,使用单指令多数据(SIMD)指令发布技术来支持大量线程的并行执行而无需提供多个独立的指令单元。在其他实施例中,使用单指令多线程(SIMT)技术来使用被配置成用于向处理集群中的每个处理集群内的处理引擎集合发布指令的公共指令单元来支持大量总体上同步的线程的并行执行。与其中所有处理引擎典型地执行相同指令的SIMD执行机制不同,SIMT执行允许不同的线程更容易地遵循通过给定的线程程序的发散的执行路径。本领域技术人员将理解,SIMD处理机制表示SIMT处理机制的功能子集。
可以经由将处理任务分发给SIMT并行处理器的流水线管理器232来控制处理集群214的操作。流水线管理器232从图2的调度器210接收指令,并且经由图形多处理器234和/或纹理单元236来管理那些指令的执行。所图示的图形多处理器234是SIMT并行处理器的示例性实例。然而,可将不同架构的各种类型的SIMT并行处理器包括在处理集群214内。可以将图形多处理器234的一个或多个实例包括在处理集群214内。图形多处理器234可以处理数据,并且数据交叉开关240可以用于将经处理的数据分发到多个可能的目的地中的一个目的地,包括其他着色器单元。流水线管理器232可以通过为将要经由数据交叉开关240分发的经处理的数据指定目的地来促进对经处理的数据的分发。
处理集群214内的每个图形多处理器234可以包括相同的功能执行逻辑集合(例如,算术逻辑单元、加载-存储单元等)。能以流水线化的方式配置功能执行逻辑,在该流水线化的方式中,可以在完成先前指令之前发布新的指令。功能执行逻辑支持各种操作,包括整数和浮点算术、比较操作、布尔操作、位移位、以及各种代数函数的计算。在一个实施例中,可以利用同一功能单元硬件来执行不同的操作,并且可能存在功能单元的任何组合。
被传送至处理集群214的指令构成线程。跨并行处理引擎集合执行的线程集合是线程组。线程组对不同的输入数据执行同一程序。线程组内的每个线程可以被分派给图形多处理器234内的不同处理引擎。线程组可包括比图形多处理器234内的处理引擎的数量更少的线程。当线程组包括比处理引擎的数量更少的线程时,处理引擎中的一个或多个在处理该线程组所在的周期期间可能是空闲的。线程组也可包括比图形多处理器234内的处理引擎的数量更多的线程。当线程组包括比图形多处理器234内的处理引擎的数量更多的线程时,可在连续的时钟周期上执行处理。在一个实施例中,可在图形多处理器234上同时执行多个线程组。
在一个实施例中,图形多处理器234包括内部高速缓存存储器,以执行加载和存储操作。在一个实施例中,图形多处理器234可以放弃内部高速缓存并且使用处理集群214内的高速缓存存储器(例如,L1高速缓存308)。每个图形多处理器234还具有对分区单元(例如,图2的分区单元220A-220N)内的L2高速缓存的访问,这些L2高速缓存在所有处理集群214之间共享并且可被用来在线程之间传输数据。图形多处理器234还可访问芯片外全局存储器,该芯片外全局存储器可以包括本地并行处理器存储器和/或系统存储器中的一者或多者。并行处理单元202外部的任何存储器可被用作全局存储器。其中处理集群214包括图形多处理器234的多个实例的实施例可以共享公共指令和数据,这些公共指令和数据可被存储在L1高速缓存308中。
每个处理集群214可包括被配置成用于将虚拟地址映射到物理地址的MMU 245(存储器管理单元)。在其他实施例中,MMU 245的一个或多个实例可驻留在图2的存储器接口218内。MMU 245包括用于将虚拟地址映射到片(更多地关于分片进行讨论)的物理地址的页表条目(PTE)的集合并且可选地包括高速缓存行索引。MMU 245可包括可驻留在图形多处理器234或L1高速缓存或处理集群214内的地址转换后备缓冲器(TLB)或高速缓存。对物理地址进行处理,以分发表面数据访问局部性,从而允许分区单元之间的高效的请求交织。可使用高速缓存行索引来确定针对高速缓存行的请求是命中还是未命中。
在图形和计算应用中,处理集群214可被配置以使得每个图形多处理器234耦合至纹理单元236以供执行纹理映射操作,例如,确定纹理样本位置、读取纹理数据、以及过滤纹理数据。纹理数据读取自内部纹理L1高速缓存(未示出),或者在一些实施例中,读取自图形多处理器234内的L1高速缓存,并按需要从L2高速缓存、本地并行处理器存储器或系统存储器取出。每个图形多处理器234向数据交叉开关240输出经处理的任务,以向另一处理集群214提供经处理的任务以供进一步处理,或者经由存储器交叉开关216将经处理的任务存储在L2高速缓存、本地并行处理器存储器或系统存储器中。preROP 242(预先栅格操作单元)被配置成用于从图形多处理器234接收数据、将数据引导至ROP单元,这些ROP单元可与如本文中所描述的分区单元(例如,图2的分区单元220A-220N)一起被定位。preROP 242单元可针对颜色混合执行优化、组织像素颜色数据、并且执行地址转换。
将会领会,本文中所描述的核架构是说明性的,并且变型和修改是可能的。可将任何数量的处理单元(例如,图形多处理器234、纹理单元236、preROP 242等)包括在处理集群214内。进一步地,尽管仅示出了一个处理集群214,但是如本文中所描述的并行处理单元可包括处理集群214的任何数量的实例。在一个实施例中,每个处理集群214可以被配置成用于使用单独且不同的处理单元、L1高速缓存等来独立于其他处理集群214进行操作。
图2D示出了根据一个示例性实施例的图形多处理器234。在此类实施例中,图形多处理器234与处理集群214的流水线管理器232耦合。图形多处理器234具有执行流水线,该执行流水线包括但不限于,指令高速缓存252、指令单元254、地址映射单元256、寄存器堆258、一个或多个通用图形处理单元(GPGPU)核262、以及一个或多个加载/存储单元266。GPGPU核262和加载/存储单元266经由存储器和高速缓存互连268而与高速缓存存储器272以及共享存储器270耦合。
在一个实施例中,指令高速缓存252从流水线管理器232接收要执行的指令流。指令被高速缓存在指令高速缓存252中并被分派以供指令单元254执行。指令单元254可以将指令作为线程组(例如,经线)进行分派,其中,线程组中的每个线程被指派给GPGPU核262内的不同执行单元。指令可以通过指定统一地址空间内的地址来访问本地、共享或全局地址空间中的任一者。可以使用地址映射单元256将统一地址空间中的地址转换为可以由加载/存储单元266访问的不同的存储器地址。
寄存器堆258为图形多处理器324的功能单元提供寄存器集合。寄存器堆258为连接至图形多处理器324的功能单元(例如,GPGPU核262、加载/存储单元266)的数据路径的操作数提供临时存储。在一个实施例中,寄存器堆258在功能单元中的每个功能单元之间划分,以使得给每个功能单元分配寄存器堆258中的专用部分。在一个实施例中,寄存器堆258在由图形多处理器324执行的不同经线之间划分。
GPGPU核262可以各自包括用于执行图形多处理器324的指令的浮点单元(FPU)和/或整数算术逻辑单元(ALU)。根据实施例,GPGPU核262在架构上可能类似,或者可能在架构上相区别。例如,并且在一个实施例中,GPGPU核262的第一部分包括单精度FPU和整数ALU,而GPGPU核的第二部分包括双精度FPU。在一个实施例中,FPU可以实现针对浮点算术的IEEE754-2008标准,或实现可变精度浮点算术。图形多处理器324可以附加地包括用于执行特定功能(诸如,复制矩形或像素混合操作)的一个或多个固定功能单元或专门功能单元。在一个实施例中,GPGPU核中的一个或多个还可以包括固定或专门功能逻辑。
在一个实施例中,GPGPU核262包括能够对多个数据集合执行单个指令的SIMD逻辑。在一个实施例中,GPGPU核262可以物理地执行SIMD4、SIMD8和SIMD16指令,并且逻辑地执行SIMD1、SIMD2和SIMD32指令。针对GPGPU核的SIMD指令可以由着色器编译器在编译时生成,或在执行针对单程序多数据(SPMD)或SIMT架构而编写并且编译的程序时自动地生成。可以经由单个SIMD指令来执行被配置成用于SIMT执行模型的程序的多个线程。例如,并且在一个实施例中,可以经由单个SIMD8逻辑单元来并行执行八个SIMT线程,这八个SIMT线程执行相同或类似的操作。
存储器和高速缓存互连268是将图形多处理器324的功能单元中的每个功能单元连接至寄存器堆258并连接至共享存储器270的互连网络。在一个实施例中,存储器和高速缓存互连268是允许加载/存储单元266实现共享存储器270与寄存器堆258之间的加载和存储操作的交叉开关互连。寄存器堆258能以与GPGPU核262相同的频率进行操作,因此GPGPU核262与寄存器堆258之间的数据传输是非常低等待时间的。可以使用共享存储器270来实现在图形多处理器234内的功能单元上执行的线程之间的通信。高速缓存存储器272可以被用作数据高速缓存,例如,用于对在功能单元与纹理单元236之间传输的纹理数据进行高速缓存。共享存储器270还可以被用作所高速缓存的受管理的程序。除被存储在高速缓存存储器272内的自动高速缓存的数据之外,在GPGPU核262上执行的线程还能以编程方式将数据存储在共享存储器内。
图3A-图3B图示出根据示例性实施例的附加图形多处理器。所图示的图形多处理器325、350是图2C的图形多处理器234的变型。所图示的图形多处理器325、350可以被配置成能够同时执行大量执行线程的流式多处理器(SM)。
图3A示出了根据附加示例性实施例的图形多处理器325。相对于图2D的图形多处理器234,图形多处理器325包括执行资源单元的多个附加实例。例如,图形多处理器325可以包括指令单元332A-332B、寄存器堆334A-334B和(多个)纹理单元344A-344B的多个实例。图形多处理器325还包括多个图形或计算执行单元集合(例如,GPGPU核336A-336B、GPGPU核337A-337B、GPGPU核338A-338B)以及多个加载/存储单元集合340A-340B。在一个实施例中,执行资源单元具有公共指令高速缓存330、纹理和/或数据高速缓存存储器342、以及共享存储器346。
各组件可以经由互连结构(interconnect fabric)327进行通信。在一个实施例中,互连结构327包括一个或多个交叉开关以实现在图形多处理器325的各组件之间的通信。在一个实施例中,互连结构327是单独的、高速网络结构层,图形多处理器325的每个组件堆叠在该网络结构层上。图形多处理器325的组件经由互连结构327与远程组件进行通信。例如,GPGPU核336A-336B、337A-337B以及3378A-338B可以各自经由互连结构327与共享存储器346通信。互连结构327可以对图形多处理器325内的通信进行仲裁,以确保组件之间公平的带宽分配。
图3B示出了根据附加示例性实施例的图形多处理器350。图形处理器包括多个执行资源集合356A-356D,其中,如图2D和图3A中所图示,每个执行资源集合包括多个指令单元、寄存器堆、GPGPU核、以及加载存储单元。执行资源356A-356D可以与用于纹理操作的(多个)纹理单元360A-360D协同工作,同时共享指令高速缓存354和共享存储器362。在一个实施例中,执行资源356A-356D可以共享指令高速缓存354和共享存储器362以及纹理和/或数据高速缓存存储器358A-358B的多个实例。各组件可以经由类似于图3A的互连结构327的互连结构352进行通信。
本领域技术人员将会理解,图1、图2A-图2D以及图3A-图3B中所描述的架构是描述性的并且不限制本实施例的范围,这些实施例是示例性的。因此,在不背离本文中所描述的实施例的范围的情况下,本文中所描述的技术可在任何恰当配置的处理单元上实现,该处理单元包括但不限于一个或多个移动应用处理器、一个或多个台式机或服务器中央处理单元(CPU)(包括多核CPU)、一个或多个并行处理单元(诸如,图2的并行处理单元202)、以及一个或多个图形处理器或专用处理单元。
在一些实施例中,本文中所描述的并行处理器或GPGPU通信地耦合至主机/处理器核以加速图形操作、机器学习操作、模式分析操作、以及各种通用GPU(GPGPU)功能。GPU可通过总线或其他互连(例如,诸如PCIe或NVLink之类的高速互连)而通信地耦合至主机处理器/核。在其他实施例中,GPU可与核集成在同一封装或芯片上,并且通过内部处理器总线/互连(即,在封装或芯片内部)通信地耦合至核。不论连接GPU所采用的方式如何,处理器核都可以采用工作描述符中所包含的命令/指令序列的形式将工作分配给GPU。GPU随后使用专用电路/逻辑来有效地处理这些命令/指令。
用于GPU到主机处理器互连的技术
图4A图示出其中多个GPU 410-413通过高速链路440-443(例如,总线、点对点互连等)通信地耦合至多个多核处理器405-406的示例性架构。在一个实施例中,取决于实现方式,高速链路440-443支持4GB/s、30GB/s、80GB/s或更高的通信吞吐量。可使用各种互连协议,这些互连协议包括但不限于,PCIe4.0或5.0以及NVLink 2.0。然而,本发明的基本原理不限于任何特定的通信协议或吞吐量。
另外,并且在一个实施例中,GPU 410-413中的两个或更多个通过高速链路444-445进行互连,这可使用与用于高速链路440-443的那些协议/链路相同或不同的协议/链路来实现。类似地,多核处理器405-406中的两个或更多个可通过高速链路433进行连接,该高速链路433可以是在20GB/s、30GB/s、120GB/s或更高速度下进行操作的对称多处理器(SMP)总线。替代地,图4A中示出的各种系统组件之间的所有通信可使用相同的协议/链路(例如,通过公共互连结构)来完成。如所提到,然而,本发明的基本原理不限于任何特定类型的互连技术。
在一个实施例中,每个多核处理器405-406分别经由存储器互连430-431通信地耦合至处理器存储器401-402,并且每个GPU 410-413分别通过GPU存储器互连450-453通信地耦合至GPU存储器420-423。存储器互连430-431和450-453可利用相同或不同的存储器访问技术。作为示例并且不作为限制,处理器存储器401-402和GPU存储器420-423可以是诸如动态随机存取存储器(DRAM)(包括堆叠的DRAM)、图形DDR SDRAM(GDDR)(例如,GDDR5、GDDR6)、或高带宽存储器(HBM)之类的易失性存储器,并且/或者可以是诸如3D XPoint或Nano-Ram之类的非易失性存储器。在一个实施例中,这些存储器中的某个部分可以是易失性存储器并且另一部分可以是非易失性存储器(例如,使用两级存储器(2LM)层级结构)。
如下文中所描述,尽管各处理器405-406和GPU 410-413可分别物理地耦合至特定的存储器401-402、420-423,但是可实现其中同一虚拟系统地址空间(也被称为“有效地址”空间)在所有的各种物理存储器之间进行分布的统一存储器架构。例如,处理器存储器401-402可各自包括64GB的系统存储器地址空间,并且GPU存储器420-423可各自包括32GB的系统存储器地址空间(在该示例中,得到总计256GB可寻址的存储器)。
图4B图示出根据一个示例性实施例的多核处理器407和图形加速模块446之间的互连的附加细节。图形加速模块446可包括集成在线卡上的一个或多个GPU芯片,该线卡经由高速链路440耦合至处理器407。替代地,可将图形加速模块446集成在与处理器407相同的封装或芯片上。
所图示的处理器407包括多个核460A-460D,各自具有转换后备缓冲器461A-461D以及一个或多个高速缓存462A-462D。核可包括用于执行指令并处理数据的各种其他组件,未图示出这些组件以避免使本发明的基本原理模糊(例如,指令取出单元、分支预测单元、解码器、执行单元、重排序缓冲器等)。高速缓存462A-462D可包括第1级(L1)高速缓存和第2级(L2)高速缓存。另外,一个或多个共享高速缓存426可被包括在高速缓存层级结构中并由核集合460A-460D共享。例如,处理器407的一个实施例包括24个核,各自具有其自己的L1高速缓存、十二个共享L2高速缓存、以及十二个共享L3高速缓存。在该实施例中,L2高速缓存和L3高速缓存中的一者由两个相邻的核共享。处理器407和图形加速器集成模块446与系统存储器441连接,该系统存储器441可包括处理器存储器401-402。
经由通过一致性总线464的核间通信为存储在各高速缓存462A-462D、456和系统存储器441中的数据和指令维持一致性。例如,每个高速缓存可具有与其相关联的高速缓存一致性逻辑/电路,以响应于检测到的对特定高速缓存行的读取或写入而通过一致性总线464进行通信。在一种实现方式中,通过一致性总线464实现高速缓存监听协议,以监听高速缓存访问。高速缓存监听/一致性技术为本领域技术人员很好地理解并且将不在此详细描述,以避免使本发明的基本原理模糊。
在一个实施例中,代理电路425将图形加速模块446通信地耦合至一致性总线464,从而允许图形加速模块446作为核的对等体参与高速缓存一致性协议。具体而言,接口435通过高速链路440(例如,PCIe总线、NVLink等)提供到代理电路425的连接性,并且接口437将图形加速模块446连接至链路440。
在一种实现方式中,加速器集成电路436代表图形加速模块446的多个图形处理引擎431、432、N提供高速缓存管理、存储器访问、上下文管理、以及中断管理服务。图形处理引擎431、432、N可各自包括单独的图形处理单元(GPU)。替代地,图形处理引擎431、432、N可包括GPU内的不同类型的图形处理引擎,诸如,图形执行单元、媒体处理引擎(例如,视频编码器/解码器)、采样器以及位引擎。换言之,图形加速模块可以是具有多个图形处理引擎431-432、N的GPU,或者图形处理引擎431-432、N可以是集成在公共封装、线卡或芯片上的单独的GPU。
在一个实施例中,加速器集成电路436包括存储器管理单元(MMU)439,该MMU 439用于执行诸如虚拟到物理存储器转换(也称为有效到实际存储器转换)之类的各种存储器管理功能以及用于访问系统存储器441的存储器访问协议。MMU 439还可包括用于对虚拟/有效到物理/实际地址转换进行高速缓存的转换后备缓冲器(TLB)(未示出)。在一种实现方式中,高速缓存438存储用于由图形处理引擎431-432、N高效访问的命令和数据。在一个实施例中,使高速缓存438和图形存储器433-434、N中存储的数据与核高速缓存462A-462D、456以及系统存储器411保持一致。如所提到,这可经由代理电路425来完成,该代理电路425代表高速缓存438和存储器433-434、N参与高速缓存一致性机制(例如,向高速缓存438发送与处理器高速缓存462A-462D、456上的高速缓存行的修改/访问相关的更新并从高速缓存438接收更新)。
寄存器集合445存储针对由图形处理引擎431-432、N执行的线程的上下文数据,并且上下文管理电路448管理这些线程上下文。例如,上下文管理电路448可在上下文切换期间执行用于保存和恢复各线程的上下文的保存和恢复操作(例如,其中,第一线程被保存并且第二线程被存储,以使得第二线程可以由图形处理引擎执行)。例如,在上下文切换时,上下文管理电路448可将当前寄存器值存储到存储器中的指定区域(例如,由上下文指针标识)。当返回到该上下文时,其随后可恢复寄存器值。在一个实施例中,中断管理电路447接收并处理接收自系统设备的中断。
在一种实现方式中,由MMU 439将来自图形处理引擎431的虚拟/有效地址转换为系统存储器411中的实际/物理地址。加速器集成电路436的一个实施例支持多个(例如,4个、8个、16个)图形加速器模块446和/或其他加速器设备。图形加速器模块446可专用于在处理器407上执行的单个应用,或者可在多个应用之间共享。在一个实施例中,存在虚拟化图形执行环境,其中,图形处理引擎431-432、N的资源与多个应用或虚拟机(VM)共享。这些资源可被细分为“切片(slice)”,这些切片基于处理要求以及与VM和/或应用相关联的优先级而被分配给不同的VM和/或应用。
因此,加速器集成电路充当用于图形加速模块446的到系统的桥接器,并且提供地址转换和系统存储器高速缓存服务。另外,加速器集成电路436可为主机处理器提供虚拟化设施,以管理对图形处理引擎、中断和存储器管理的虚拟化。
因为图形处理引擎431-432、N的硬件资源被显式地映射到由主机处理器407查看的实际地址空间,所以任何主机处理器可以使用有效地址值直接对这些资源进行寻址。在一个实施例中,加速器集成电路436的一个功能是对图形处理引擎431-432、N的物理分离,以使得它们对系统看起来是独立单元。
如所提到,在所图示的实施例中,一个或多个图形存储器433-434、M分别耦合至图形处理引擎431-432、N中的每个图形处理引擎。图形存储器433-434、M存储由图形处理引擎431-432、N中的每个图形处理引擎处理的指令和数据。图形存储器433-434、M可以是诸如DRAM(包括堆叠的DRAM)、GDDR存储器(例如,GDDR5、GDDR6)或HBM之类的易失性存储器,和/或可以是诸如3D XPoint或Nano-Ram之类的非易失性存储器。
在一个实施例中,为了降低链路440上的数据通信量,使用偏置技术来确保存储在图形存储器433-434、M中的数据是将由图形处理引擎431-432、N最频繁地使用并且优选地不由核460A-460D使用(至少不频繁地使用)的数据。类似地,偏置机制尝试将核(并且优选地,不是图形处理引擎431-432、N)所需要的数据保持在这些核的高速缓存462A-462D、456和系统存储器411内。
图4C图示出其中加速器集成电路436被集成在处理器407内的另一示例性实施例。在该实施例中,经由接口437和接口435(其同样可利用任何形式的总线或接口协议),图形处理引擎431-432、N通过高速链路440与加速器集成电路436直接通信。加速器集成电路436可执行与参考图4B所描述的那些操作相同的操作,但是考虑到该加速器集成电路436与一致性总线462和高速缓存462A-462D、426紧密邻近,其潜在地可在较高的吞吐量下执行操作。
一个实施例支持不同的编程模型,这些编程模型包括专用进程编程模型(无图形加速模块虚拟化)和共享编程模型(具有虚拟化)。后者可包括受加速器集成电路436控制的编程模型以及受图形加速模块446控制的编程模型。
在专用进程模型的一个实施例中,图形处理引擎431-432、N在单个操作系统下专用于单个应用或进程。该单个应用可以将其他应用请求汇集至图形引擎431-432、N,从而提供VM/分区内的虚拟化。
在专用进程编程模型中,图形处理引擎431-432、N可由多个VM/应用分区共享。共享模型要求系统管理程序使图形处理引擎431-432、N虚拟化,以允许由每个操作系统访问。对于不具有管理程序的单分区系统,图形处理引擎431-432、N由操作系统所有。在这两种情况下,操作系统可以使图形处理引擎431-432、N虚拟化,以提供对每个进程或应用的访问。
对于共享编程模型,图形加速模块446或各个图形处理引擎431-432、N使用进程句柄来选择进程要素。在一个实施例中,进程要素被存储在系统存储器411中,并且是使用本文中所描述的有效地址到实际地址转换技术可寻址的。进程句柄可以是在向图形处理引擎431-432、N注册其上下文(即,调用系统软件以将进程要素添加到进程要素链表)时提供给主机进程的实现方式特定的值。进程句柄的较低的16位可以是进程要素在进程要素链表内的偏移。
图4D图示出示例性加速器集成切片490。如本文中所使用,“切片”包括加速器集成电路436的处理资源的指定部分。系统存储器411内的应用有效地址空间482存储进程要素483。在一个实施例中,进程要素483响应于来自在处理器407上执行的应用480的GPU调用481而被存储。进程要素483包含对应应用480的进程状态。包含在进程要素483中的工作描述符(WD)484可以是由应用请求的单个作业,或者可包含指向作业队列的指针。在后一种情况中,WD 484是指向应用的地址空间482中的作业请求队列的指针。
图形加速模块446和/或各个图形处理引擎431-432、N可以由系统中的进程的全部或其子集共享。本发明的实施例包括用于建立进程状态并将WD 484发送至图形加速模块446以在虚拟化环境中开始作业的基础设施。
在一种实现方式中,专用进程编程模型是实现方式特定的。在该模型中,单个进程拥有图形加速模块446或单独的图形处理引擎431。因为图形加速模块446为单个进程所拥有,所以在指派图形加速模块446时,管理程序针对拥有的分区对加速器集成电路436进行初始化,并且操作系统针对拥有的进程对加速器集成电路436进行初始化。
在操作中,加速器集成切片490中的WD取出单元491取出包括对将要由图形加速模块446的图形处理引擎中的一个完成的工作的指示的下一WD484。如所图示,来自WD 484的数据可被存储在寄存器445中,并且由MMU439、中断管理电路447和/或上下文管理电路446使用。例如,MMU 439的一个实施例包括用于访问OS虚拟地址空间485内的段表/页表486的段/页走查电路。中断管理电路447可处理从图形加速模块446接收的中断事件492。当执行图形操作时,由图形处理引擎431-432、N生成的有效地址493由MMU 439转换成实际地址。
在一个实施例中,相同的寄存器集合445针对每个图形处理引擎431-432、N和/或图形加速模块446被复制并且可由管理程序或操作系统初始化。这些复制的寄存器中的每一个可被包括在加速器集成切片490中。在表1中示出可由管理程序初始化的示例性寄存器。
表1-管理程序初始化的寄存器
表2-操作系统初始化的寄存器
在一个实施例中,每个WD 484对于特定的图形加速模块446和/或图形处理引擎431-432、N是特定的。其包含图形处理引擎431-432、N进行其工作所要求的所有信息,或者其可以是指向应用已经建立将要完成的工作的命令队列所在的存储器位置的指针。
图4E图示出共享模型的一个示例性实施例的附加细节。该实施例包括进程要素列表499被存储在其中的管理程序实际地址空间498。管理程序实际地址空间498是经由管理程序496可访问的,该管理程序496使用于操作系统495的图形加速模块引擎虚拟化。
共享编程模型允许来自系统中的分区的全部或其子集的进程的全部或其子集使用图形加速模块446。存在其中图形加速模块446由多个进程和分区共享的两种编程模型:时分共享和图形定向共享。
在该模型中,系统管理程序496拥有图形加速模块446并使其功能对所有的操作系统495可用。为了使图形加速模块446支持由系统管理程序496进行的虚拟化,图形加速模块446可遵守下列要求:1)应用的作业请求必须是自主的(即,不需要在作业之间维持状态),或者图形加速模块446必须提供上下文保存和恢复机制。2)由图形加速模块446保证在所指定的时间量内完成应用的作业请求,包括任何转换错误,或者图形加速模块446提供抢占对作业的处理的能力。3)当在定向共享编程模型下进行操作时,必须保证图形加速模块446在进程之间的公平性。
在一个实施例中,对于共享模型,要求应用480利用图形加速模块446类型、工作描述符(WD)、权限掩码寄存器(AMR)值和上下文保存/恢复区域指针(CSRP)作出操作系统495系统调用。图形加速模块446类型描述系统调用的目标加速功能。图形加速模块446类型可以是系统特定的值。特别针对图形加速模块446对WD进行格式化,并且WD可以采用图形加速模块446命令、指向用户定义的结构的有效地址指针、指向命令队列的有效地址指针、或用于描述将要由图形加速模块446完成的工作的任何其他数据结构的形式。在一个实施例中,AMR值是用于当前进程的AMR状态。传递至操作系统的值类似于设置AMR的应用。如果加速器集成电路436和图形加速模块446实现方式不支持用户权限掩码覆盖寄存器(UAMOR),则操作系统可在管理程序调用中传递AMR之前将当前UAMOR值应用到AMR值。管理程序496可在将AMR放置到进程要素483中之前可选地应用当前权限掩码覆盖寄存器(AMOR)值。在一个实施例中,CSRP是寄存器445中的包含应用地址空间482中用于图形加速模块446保存和恢复上下文状态的区域的有效地址的一个寄存器。如果不要求在作业之间对状态进行保存或者在作业被抢占时,则该指针是可选的。上下文保存/恢复区域可以是固定的系统存储器。
一旦接收系统调用,则操作系统495可验证应用480已注册并且已给予该应用480使用图形加速模块446的权限。操作系统495随后利用表3中示出的信息来调用管理程序496。
表3-OS对管理程序的调用参数
在一个实施例中,管理程序使多个加速器集成切片490寄存器445初始化。
如图4F中所图示,本发明的一个示例性实施例采用经由公共虚拟存储器地址空间可寻址的统一存储器,该公共虚拟存储器地址空间被用来访问物理处理器存储器401-402和GPU存储器420-423。在该实现方式中,在GPU 410-413上执行的操作利用同一虚拟/有效存储器地址空间来访问处理器存储器401-402并且反之亦然,由此简化可编程性。在一个实施例中,虚拟/有效地址空间的第一部分被分配给处理器存储器401,第二部分被分配给第二处理器存储器402,第三部分被分配给GPU存储器420,依此类推。整个虚拟/有效存储器空间(有时被称为有效地址空间)由此跨处理器存储器401-402和GPU存储器420-423中的每一个分布,从而允许任何处理器或GPU利用映射到该存储器的虚拟地址来访问任何物理存储器。
在一个实施例中,MMU 439A-439E中的一个或多个内的偏置/一致性管理电路494A-494E确保主机处理器(例如,405)的高速缓存与GPU 410-413的高速缓存之间的高速缓存一致性,并且实现指示某些类型的数据应当被存储在其中的物理存储器的偏置技术。尽管在图4F中图示出偏置/一致性管理电路494A-494E的多个实例,但偏置/一致性电路可在一个或多个主机处理器405的MMU内和/或在加速器集成电路436内实现。
一个实施例允许GPU附连的存储器420-423被映射为系统存储器的部分并使用共享虚拟存储器(SVM)技术来访问,但是不会遭受与完全系统高速缓存一致性相关联的典型性能缺陷。GPU附连的存储器420-423作为系统存储器被访问、并且没有繁重的高速缓存一致性开销的能力为GPU卸载提供了有益的操作环境。此种布置允许主机处理器405软件设置操作数并访问计算结果,而没有传统I/O DMA数据复制的开销。此类传统复制涉及驱动程序调用、中断和存储器映射的I/O(MMIO)访问,这些相对于简单存储器访问都是低效的。同时,访问GPU附连的存储器420-423而没有高速缓存一致性开销的能力对于被卸载的计算的执行时间可能是关键的。例如,在具有大量流式的写存储器业务的情况下,高速缓存一致性开销可以显著地降低GPU 410-413看到的有效写入带宽。操作数设置的效率、结果访问的效率以及GPU计算的效率在确定GPU卸载的有效性时都发挥作用。
在一种实现方式中,GPU偏置与主机处理器偏置之间的选择由偏置跟踪程序数据结构驱动。例如,可使用偏置表,该偏置表可以是页粒度的结构(即,在存储器页粒度下受控制),该页粒度的结构包括每GPU附连的存储器页的1或2个位。偏置表可在一个或多个GPU附连的存储器420-423的偷取的存储器范围中实现,在GPU 410-413中具有或不具有偏置高速缓存(例如,用于对频繁/最近使用的偏置表条目进行高速缓存)。替代地,可将整个偏置表维持在GPU内。
在一种实现方式中,在对GPU存储器的实际访问之前,访问与对GPU附连的存储器420-423的每次访问相关联的偏置表条目,导致下列操作。首先,来自GPU 410-413的在GPU偏置中发现它们的页的本地请求直接被转发至对应的GPU存储器420-423。来自GPU的在主机偏置中发现它们的页的本地请求被转发至处理器405(例如,如以上所讨论,通过高速链路)。在一个实施例中,来自处理器405的在主机处理器偏置中发现所请求的页的请求像正常存储器读取那样完成该请求。替代地,涉及GPU偏置的页的请求可被转发至GPU410-413。如果GPU当前不是正在使用该页,则GPU随后可将该页转变为主机处理器偏置。
可以通过基于软件的机制、硬件辅助的基于软件的机制、或对于有限的情况的集合而言通过基于纯硬件的机制来改变页的偏置状态。
一种用于改变偏置状态的机制采用API调用(例如,OpenCL),其进而调用GPU的设备驱动程序,该设备驱动程序进而向GPU发送消息(或将命令描述符入列)以指引其改变偏置状态、并针对一些转变在主机中执行高速缓存转储清除操作。高速缓存转储清除操作对于从主机处理器405偏置到GPU偏置的转变是必需的,但对于相反的转变不是必需的。
在一个实施例中,通过临时渲染不可由主机处理器405高速缓存的GPU偏置的页来维持高速缓存一致性。为了访问这些页,处理器405可请求来自GPU 410的访问,取决于实现方式,GPU 410可以或可以不立即授权访问。因此,为了减少处理器405与GPU 410之间的通信,确保GPU偏置的页是GPU而不是主机处理器405要求的那些页是有益的,并且反之亦然。
图形处理流水线
图5图示出根据示例性实施例的图形处理流水线500。在一个实施例中,图形处理器可以实现所图示的图形处理流水线500。可以将图形处理器包括在如本文中所描述的并行处理子系统内,该并行处理子系统诸如图2的并行处理器200,在一个实施例中,该并行处理器是图1的(多个)并行处理器112的变型。各种并行处理系统可以通过本文中所描述的并行处理单元(例如,图2的并行处理单元202)的一个或多个实例来实现图形处理流水线500。例如,着色器单元(例如,图3的图形多处理器234)可被配置成用于执行顶点处理单元504、曲面细分控制处理单元508、曲面细分评估处理单元512、几何处理单元516、以及片段/像素处理单元524中的一者或多者的功能。数据组装器502、基元组装器506、514、518、曲面细分单元510、栅格化器522、以及栅格操作单元526的功能也可由处理集群(例如,图3的处理集群214)内的其他处理引擎和对应的分区单元(例如,图2的分区单元220A-220N)执行。图形处理流水线500还可使用针对一个或多个功能的专用处理单元来实现。在一个实施例中,图形处理流水线500的一个或多个部分可由通用处理器(例如,CPU)内的并行处理逻辑执行。在一个实施例中,图形处理流水线500的一个或多个部分可以经由存储器接口528来访问芯片上存储器(例如,如图2中的并行处理器存储器222),该存储器接口528可以是图2的存储器接口218的实例。
在一个实施例中,数据组装器502是收集表面和基元的顶点数据的处理单元。数据组装器502随后将包括顶点属性的顶点数据输出到顶点处理单元504。顶点处理单元504是可编程的执行单元,该可编程的执行单元执行顶点着色器程序,从而按照顶点着色器程序所指定地来照明以及变换顶点数据。顶点处理单元504读取高速缓存、本地或系统存储器中所存储的数据以供在处理顶点数据时使用,并且可被编程为用于将顶点数据从基于对象的坐标表示变换为世界空间坐标空间或规范化设备坐标空间。
基元组装器506的第一实例从顶点处理单元50接收顶点属性。基元组装器506按需要读取所存储的顶点属性并且构建图形基元以供曲面细分控制处理单元508进行处理。图形基元包括如由各种图形处理应用编程接口(API)支持的三角形、线段、点、补片等。
曲面细分控制处理单元508将输入顶点视为几何补片的控制点。将控制点从来自补片的输入表示(例如,补片的基础)变换为适合于在由曲面细分评估处理单元512进行的表面评估中使用的表示。曲面细分控制处理单元508还可以计算几何补片的边缘的曲面细分因子。曲面细分因子应用于单个边缘,并量化与该边缘相关联的依赖于视图的细节等级。曲面细分单元510被配置成用于接收补片的边缘的曲面细分因子,并且用于将补片曲面细分成多个几何基元(诸如,线、三角形或四边形基元),这些几何基元被传送到曲面细分评估处理单元512。曲面细分评估处理单元512对经细分的补片的参数化坐标进行操作,以生成与几何基元相关联的每个顶点的表面表示和顶点属性。
基元组装器514的第二实例从曲面细分评估处理单元512接收顶点属性,根据需要读取所存储的顶点属性,并且构建图形基元以供几何处理单元516进行处理。几何处理单元516是可编程的执行单元,该可编程的执行单元执行几何着色器程序以如几何着色器程序所指定地变换从基元组装器514接收到的图形基元。在一个实施例中,几何处理单元516被编程为用于将图形基元细分为一个或多个新的图形基元并计算被用来对这些新的图形基元进行栅格化的参数。
在一些实施例中,几何处理单元516可以在几何流中添加或删除元素。几何处理单元516向基元组装器518输出指定新的图形基元的参数和顶点。基元组装器518从几何处理单元516接收参数和顶点并构建图形基元以供视口缩放、剔除和裁剪单元520进行处理。几何处理单元516读取存储在并行处理器存储器或系统存储器中的数据以供处理几何数据时使用。视口缩放、剔除和裁剪单元520执行裁剪、剔除和视口缩放,并且将经处理的图形基元输出到栅格化器522。
栅格化器522可以执行深度剔除和其他基于深度的优化。栅格化器522还对新的图形基元执行扫描转换以生成片段并将那些片段及相关联的覆盖数据输出到片段/像素处理单元524。片段/像素处理单元524是被配置成执行片段着色器程序或像素着色器程序的可编程的执行单元。片段/像素处理单元524按照片段或像素着色器程序所指定地变换从栅格化器522接收的片段或像素。例如,片段/像素处理单元524可被编程为用于执行包括但不限于纹理映射、着色、混合、纹理校正和透视校正的操作,以产生被输出到栅格操作单元526的经着色的片段或像素。片段/像素处理单元524可以读取存储在并行处理器存储器或系统存储器中的数据以供处理片段数据时使用。片段或像素着色器程序可被配置成用于取决于为处理单元配置的采样率而以样本、像素、片或其他粒度来进行着色。
栅格操作单元526是处理单元,该处理单元执行栅格操作并将像素数据输出为将要被存储在图形存储器(例如,如图2中的并行处理器存储器222和/或如图1中的系统存储器104)中、将要在一个或多个显示设备110上显示或用于由一个或多个处理器102或并行处理器112中的一个进一步处理的经处理的图形数据,这些栅格操作包括但不限于模版印制、z测试、混合等等。在一些实施例中,栅格操作单元526被配置成用于压缩被写入到存储器的z或颜色数据并解压缩从存储器读取的z或颜色数据。
机器学习概览
机器学习算法是可以基于数据集合进行学习的算法。机器学习算法的实施例可以被设计成用于对数据集内的高级抽象进行建模。例如,可以使用图像识别算法来确定给定的输入属于若干类别中的哪个类别;给定输入,回归算法可以输出数字值;并且可以使用模式识别算法来生成经转换的文本或者执行文本到语音和/或语音识别。
示例性类型的机器学习算法是神经网络。存在许多类型的神经网络;简单类型的神经网络是前馈网络。前馈网络可以被实现为在其中按层来布置节点的非循环图。典型地,前馈网络拓扑包括由至少一个隐藏层分离的输入层和输出层。隐藏层将由输入层接收的输入变换为对在输出层中生成输出有用的表示。网络节点经由边被完全连接到相邻层中的节点,但在每个层内的节点之间不存在边。在前馈网络的输入层的节点处接收的数据经由激活函数被传播(即,“前馈”)至输出层的节点,该激活函数基于分别与连接这些层的边中的每一条边相关联的系数(“权重”)来计算网络中每个连续层的节点的状态。取决于由正被执行的算法表示的特定模型,来自神经网络算法的输出可以采用各种形式。
在可使用机器学习算法对特定问题建模之前,使用训练数据集来训练算法。训练神经网络涉及:选择网络拓扑;使用表示正由网络建模的问题的训练数据的集合;以及调整权重,直到网络模型针对训练数据集的所有实例都以最小误差执行。例如,在针对神经网络的有监督学习训练过程期间,由网络响应于表示训练数据集中的实例的输入而产生的输出与那个实例的“正确的”标记输出进行比较,计算表示输出与标记输出之间的差异的误差信号,并且随着误差信号通过网络的各层被向后传播,调整与连接相关联的权重以使那个误差最小化。当根据训练数据集的实例生成的输出中每个输出的误差被最小化时,网络被认为是“经训练的”。
机器学习算法的准确度会显著地由用于训练算法的数据集的质量影响。训练过程可能是计算密集型的,并且在常规通用处理器上可能需要大量的时间。因此,使用并行处理硬件来训练许多类型的机器学习算法。这对于优化神经网络的训练是特别有用的,因为在调整神经网络中的系数时执行的计算本身自然地适于并行实现方式。具体地,许多机器学习算法和软件应用已被适配成利用通用图形处理设备内的并行处理硬件。
图6是机器学习软件栈600的广义图。机器学习应用602可以被配置成使用训练数据集来训练神经网络或使用经训练的深度神经网络来实现机器智能。机器学习应用602可包括用于神经网络的训练和推断功能和/或可用于在部署之前训练神经网络的专业软件。机器学习应用602可实现任何类型的机器智能,包括但不限于:图像识别、绘图和定位、自主导航、语音合成、医学成像或语言翻译。
可以经由机器学习框架602来启用用于机器学习应用604的硬件加速。机器学习框架604可提供机器学习基元的库。机器学习基元是常由机器学习算法执行的基本操作。在没有机器学习框架604的情况下,将需要机器学习算法的开发者创建和优化与机器学习算法相关联的主计算逻辑,随后在开发新的并行处理器时重新优化计算逻辑。相反,机器学习应用可以被配置成使用由机器学习框架604提供的基元来执行必要的计算。示例性基元包括张量卷积、激励激活函数和池化,它们是在训练卷积神经网络(CNN)时执行的计算操作。机器学习框架604还可以提供基元以实现由许多机器学习算法执行的基本线性代数子程序,诸如,矩阵和向量操作。
机器学习框架604可以处理从机器学习应用602接收的输入数据,并生成至计算框架606的适当输入。计算框架606可抽象出提供给GPGPU驱动器608的底层指令,以使得机器学习框架604能够经由GPGPU硬件610来利用硬件加速而无需机器学习框架604非常熟悉GPGPU硬件610的架构。另外,计算框架606可以跨各种类型和世代的GPGPU硬件610来启用用于机器学习框架604的硬件加速。
GPGPU机器学习加速
图7图示根据示例性实施例的高度并行的通用图形处理单元700。在一个实施例中,通用处理单元(GPGPU)700可以被配置成在处理与训练深度神经网络相关联的类型的计算工作负荷时尤其高效。另外,GPGPU 700可以直接链接到GPGPU的其他实例以创建多GPU集群,从而改善尤其是深度神经网络的训练速度。
GPGPU 700包括用于启用与主机处理器的连接的主机接口702。在一个实施例中,主机接口702是PCI Express接口。然而,主机接口还可以是供应方专用的通信接口或通信结构。GPGPU 700从主机处理器接收命令,并且使用全局调度器704将与那些命令相关联的执行线程分发给计算集群的集合706A-706H。计算集群706A-706H共享高速缓存存储器708。高速缓存存储器708可以充当用于计算集群706A-706H内的高速缓存存储器的较高级别的高速缓存。
GPGPU 700包括经由存储器控制器的集合712A-712B与计算集群706A-706H耦合的存储器714A-714B。在各实施例中,存储器714A-714B可包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如,同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。在一个实施例中,存储器单元224A-224N还可包括3D堆叠式存储器,包括但不限于高带宽存储器(HBM)。
在一个实施例中,每个计算集群706A-706H包括图形多处理器的集合,图形多处理器诸如图4A的图形多处理器400。这些计算集群的图形多处理器包括多种类型的整数逻辑单元和浮点逻辑单元,这些多种类型的整数逻辑单元和浮点逻辑单元可以在一定精度范围内执行包括适于机器学习计算的计算操作。例如,并且在一个实施例中,计算集群706A-706H中的每一个计算集群中的浮点单元的至少子集可以被配置成执行16位或32位浮点操作,而浮点单元的不同子集可以被配置成执行64位浮点操作。
GPGPU 700的多个实例可以被配置成作为计算集群进行操作。由计算集群用于同步和数据交换的通信机制跨实施例而有所不同。在一个实施例中,GPGPU 700的多个实例通过主机接口702进行通信。在一个实施例中,GPGPU700包括I/O中枢708,该I/O中枢708将GPGPU 700与GPU链路710耦合,该GPU链路启用至GPGPU的其他实例的直接连接。在一个实施例中,GPU链路710耦合至专用GPU-GPU桥接器,该GPU-GPU桥接器实现GPGPU 700的多个实例之间的通信和同步。在一个实施例中,GPU链路710与高速互连耦合,以将数据传输和接收至其他GPGPU或并行处理器。在一个实施例中,GPGPU 700的多个实例位于单独的数据处理系统中,并且经由网络设备进行通信,该网络设备可经由主机接口702来访问。在一个实施例中,附加于或替代于主机接口702,GPU链路710可以被配置成启用至主机处理器的连接。
尽管GPGPU 700的所图示配置可以被配置成训练神经网络,但是一个实施例提供GPGPU 700的替代配置,该替代配置可以被配置成用于在高性能或低功率推断平台内的部署。在推断配置中,相对于训练配置,GPGPU 700包括计算集群706A-706H中的更少的计算集群。另外,与存储器714A-714B相关联的存储器技术在推断配置与训练配置之间可以不同。在一个实施例中,GPGPU 700的推断配置可以支持推断专用指令。例如,推断配置可提供对一个或多个8位整数点积指令的支持,这一个或多个8位整数点积指令通常在用于经部署的神经网络的推断操作期间使用。
图8图示根据示例性实施例的多GPU计算系统800。多GPU计算系统800可包括处理器802,该处理器802经由主机接口开关804耦合至多个GPGPU806A-806D。在一个实施例中,主机接口开关804是将处理器802耦合至PCI Express总线的PCI Express开关设备,处理器802可通过该PCI Express总线与GPGPU的集合806A-806D通信。多个GPGPU 806A-806D中的每一个可以是图7的GPGPU 700的实例。GPGPU 806A-806D可以经由高速点对点GPU-GPU链路的集合816进行互连。高速GPU-GPU链路可经由专用GPU链路连接至GPGPU 806A-806D中的每一个,该专用GPU链路诸如,如图7中的GPU链路710。P2P GPU链路816启用GPGPU 806A-806D中的每个GPGPU之间的直接通信,而无需通过处理器802连接到的主机接口总线进行的通信。利用定向到P2P GPU链路的GPU-GPU通信量,主机接口总线保持可用于系统存储器访问,或用于例如经由一个或多个网络设备与多GPU计算系统800的其他实例通信。虽然在所图示的实施例中,GPGPU 806A-806D经由主机接口开关804连接至处理器802,但是在一个实施例中,处理器802包括对P2P GPU链路816的直接支持并且可以直接连接至GPGPU 806A-806D。
机器学习神经网络实现方式
由本文中描述的实施例提供的计算架构可以被配置成执行特别适合于训练和部署用于机器学习的神经网络的这些类型的并行处理。可以将神经网络概括为具有图关系的函数网络。如本领域中所公知,存在机器学习中所使用的多种类型的神经网络实现方式。一种示例性类型的神经网络是如先前描述的前馈网络。
第二示例性类型的神经网络是卷积神经网络(CNN)。CNN是用于处理具有已知的、网格状拓扑的数据(诸如,图像数据)的专业的前馈神经网络。因此,CNN通常用于计算机视觉和图像识别应用,但是它们也可用于其他类型的模式识别,诸如,语音和语言处理。CNN输入层中的节点被组织为“过滤器”的集合(由视网膜中发现的感受野激发的特征检测器),并且每个过滤器集合的输出被传播至网络的连续层中的节点。用于CNN的计算包括将卷积数学运算应用于每个过滤器以产生那个过滤器的输出。卷积是由两个函数执行以产生第三函数的一种专业的数学运算,该第三函数是两个原始函数中的一个的修改版本。在卷积网络术语中,卷积的第一函数可以被称为输入,而第二个函数可以被称为卷积核。输出可被称为特征图。例如,至卷积层的输入可以是定义输入图像的各种颜色分量的多维数据数组。卷积核可以是多维参数数组,其中通过用于神经网络的训练过程来使参数适配。
递归神经网络(RNN)是包括层之间的反馈连接的一类前馈神经网络。RNN通过跨神经网络的不同部分共享参数数据来启用对序列化数据进行建模。用于RNN的架构包括循环。这些循环表示变量的当前值在未来时刻对其自身值的影响,因为来自RNN的输出数据的至少一部分被用作反馈以用于处理序列中的后续输入。由于语言数据可被组成的可变本质,这个特征使RNN变得对语言处理特别有用。
下文描述的图呈现了示例性前馈网络、CNN网络和RNN网络,并且描述了用于分别训练和部署那些类型的网络中的每一种的一般过程。将理解,这些描述就本文中描述的任何特定实施例而论是示例性且非限制性的,并且一般说来所图示的概念一般可应用于深度神经网络和机器学习技术。
上文描述的示例性神经网络可以用于执行深度学习。深度学习是使用深度神经网络的机器学习。与仅包括单个隐藏层的浅层神经网络相反,深度学习中使用的深度神经网络是由多个隐藏层组成的人工神经网络。更深的神经网络通常训练起来更具计算密集性。然而,网络的附加隐藏层启用多步模式识别,该多步模式识别产生相对于浅层机器学习技术的减小的输出误差。
深度学习中使用的深度神经网络典型地包括用于执行特征识别的前端网络,该前端网络耦合至后端网络,该后端网络表示数学模型,该数学模型可基于提供给模型的特征表示来执行操作(例如,对象分类、语音识别等)。深度学习使得在无需针对模型执行手工特征工程的情况下执行机器学习。相反,深度神经网络可以基于输入数据内的统计结构或相关性来学习特征。所学习的特征可以提供给数学模型,该数学模型可以将所检测的特征映射至输出。由网络使用的数学模型通常专用于待执行的特定任务,并且将使用不同的模型来执行不同的任务。
一旦将神经网络结构化,就可以将学习模型应用于网络以将网络训练成执行特定任务。学习模型描述如何调整模型内的权重以减小网络的输出误差。反向传播误差是用于训练神经网络的常用方法。输入向量被呈现给网络以供处理。使用损失函数将网络的输出与期望输出进行比较,并且为输出层中的神经元中的每个神经元计算误差值。随后,向后传播误差值,直到每个神经元具有粗略地表示该神经元对原始输出的贡献的相关联的误差值。随后,网络可以使用算法(诸如,随机梯度下降算法)通过那些误差进行学习,以更新神经网络的权重。
图9A-图9B图示示例性卷积神经网络。图9A图示CNN内的各个层。如图9A中所示,用于对图像处理进行建模的示例性CNN可接收输入902,该输入902描述输入图像的红、绿和蓝(RGB)分量。输入902可由多个卷积层(例如,卷积层904、卷积层906)处理。来自多个卷积层的输出任选地可由全连接层的集合908处理。如先前针对前馈网络所描述,全连接层中的神经元具有至前一层中的所有激活的完全连接。来自全连接层908的输出可用于从网络生成输出结果。可使用矩阵乘法而不是卷积来计算全连接层908内的激活。并非所有的CNN实现方式都利用全连接层906。例如,在一些实现方式中,卷积层906可生成CNN的输出。
卷积层被稀疏地连接,这不同于在全连接层908中发现的传统神经网络配置。传统神经网络层完全被连接,使得每个输出单元与每个输入单元相互作用。然而,如所图示,卷积层被稀疏地连接,因为感受野的卷积的输出(而不是感受野中的每个节点的相应状态值)被输入到后续层的节点。与卷积层相关联的核执行卷积操作,该卷积操作的输出被发送至下一层。在卷积层内执行的降维是使得CNN能够缩放以处理大图像的一个方面。
图9B图示在CNN的卷积层内的示例性计算级。可以在卷积层914的三个级中处理至CNN的卷积层的输入912。这三个级可以包括卷积级916、检测器级918和池化级920。随后,卷积层914可将数据输出至连续的卷积层。网络的最终卷积层可以生成输出特征图数据或提供至全连接层的输入,例如以生成用于至CNN的输入的分类值。
在卷积级916中,卷积层914可以并行地执行若干个卷积,以产生线性激活的集合。卷积级916可以包括仿射变换,该仿射变换是可被指定为线性变换加平移的任何变换。仿射变换包括旋转、平移、缩放和这些变换的组合。卷积级计算连接至输入中的特定区域的函数(例如,神经元)的输出,这些特定区域可以被确定为与神经元相关联的局部区域。神经元计算神经元的权重与局部输入中神经元被连接到的区域的权重之间的点积。来自卷积级916的输出定义由卷积层914的连续级处理的线性激活的集合。
线性激活可由检测器级918处理。在检测器级918中,每个线性激活由非线性激活函数处理。非线性激活函数增加整体网络的非线性性质,而不影响卷积层的感受野。可使用若干种类型的非线性激活函数。一个特定的类型是修正线性单元(ReLU),其使用被定义为f(x)=max(0,x)的激活函数,使得激活函数的阈值为零。
池化级920使用池化函数,该池化函数用附近输出的概括统计来替换卷积层906的输出。池化函数可用于将平移不变性引入到神经网络中,使得至输入的小平移不改变经池化的输出。局部平移的不变性在其中特征在输入数据中的存在比该特征的精确位置更重要的场景下可以是有用的。可以在池化级920期间使用各种类型的池化函数,包括最大池化、平均池化和l2范数池化。另外,一些CNN实现方式不包括池化级。相反,此类实现方式代用相对于先前的卷积级具有增加的跨步的附加卷积级。
随后,来自卷积层914的输出可由下一层922处理。下一层922可以是一个附加的卷积层或是全连接层908中的一个层。例如,图9A的第一卷积层904可以输出至第二卷积层906,而第二卷积层可以输出至全连接层908中的第一层。
图10图示示例性递归神经网络1000。在递归神经网络(RNN)中,网络的先前状态影响网络的当前状态的输出。可以使用各种函数以各种方式来建立RNN。RNN的使用通常围绕使用数学模型以基于先前的输入序列来预测未来。例如,RNN可用于执行统计语言建模以在给定先前的字序列的情况下预测即将来临的字。可以将所图示的RNN 1000描述为具有以下各项:输入层1002,其接收输入向量;隐藏层1004,用于实现递归函数;反馈机制1005,用于启用先前状态的“记忆”;以及输出层1006,用于输出结果。RNN 1000基于时间步长来操作。RNN在给定时间步长的状态经由反馈机制1005基于先前的时间步长被影响。针对给定的时间步长,由先前状态和在当前时间步长的输入来限定隐藏层1004的状态。在第一时间步长的初始输入(x1)可由隐藏层1004处理。第二输入(x2)可由隐藏层1004使用在处理初始输入(x1)期间所确定的状态信息来处理。给定的状态可被计算为st=f(Uxt+Ws(t-1)),其中,U和W是参数矩阵。该函数f一般是非线性的,诸如,双曲正切函数(Tanh)或修正函数f(x)=max(0,x)的变体。然而,隐藏层1004中使用的特定数学函数可以取决于RNN 1000的特定实现方式细节而有所不同。
除所描述的基本CNN网络和RNN网络之外,还可实现那些网络的变化。一个示例RNN变体是长短期记忆(LSTM)RNN。LSTM RNN能够学习对于处理较长的语言序列可能必要的长期依赖性。CNN的变体是卷积深度信念网络,该卷积深度信念网络具有类似于CNN的结构并且以类似于深度信念网络的方式被训练。深度信念网络(DBN)是由随机性(随机)变量的多个层组成的生成式神经网络。可以使用贪婪式无监督学习来逐层训练DBN。随后,DBN的所学习的权重可以用于通过确定用于神经网络的最佳初始权重集合来提供预训练神经网络。
图11图示示例性深度神经网络的训练和部署。一旦已针对任务将给定的网络结构化,就使用训练数据集1102来训练神经网络。已开发出各种训练框架1104来启用对训练过程的硬件加速。例如,图6的机器学习框架604可被配置为训练框架604。训练框架604可以跟未经训练的神经网络1106挂钩,并且使得能够使用本文中描述的并行处理资源来训练未经训练的神经网以生成经训练的神经网1108。
为了开始训练过程,可随机地或通过使用深度信念网络进行预训练来选择初始权重。随后,以有监督或无监督方式执行训练循环。
有监督学习是在其中将训练被执行为中介操作的学习方法,诸如,当训练数据集1102包括与输入的期望输出配对的该输入时,或在训练数据集包括具有已知输出的输入并且神经网络的输出被手动分级的情况下。网络处理输入,并且将所得的输出与预期输出或期望输出的集合进行比较。随后,通过系统反向传播误差。训练框架1104可以进行调整,以调整控制未经训练的神经网络1106的权重。训练框架1104可以提供工具以监测未经训练的神经网络1106在多好地收敛于适合基于已知的输入数据生成正确的答案的模型。随着网络的权重被调整以改良由神经网络生成的输出,训练过程反复地发生。训练过程可以继续,直到神经网络达到与经训练的神经网1108相关联的统计上期望的准确度。随后,可以部署经训练的神经网络1108以实现任何数量的机器学习操作。
无监督学习是在其中网络试图使用未标记数据来训练其自身的学习方法。因此,针对无监督学习,训练数据集1102将包括不具有任何相关联的输出数据的输入数据。未经训练的神经网络1106可以学习未标记输入内的分组,并且可以确定单独的输入如何与整个数据集相关。无监督训练可以用于生成自组织图,该自组织图是能够执行有助于数据降维的操作的一类的经训练的神经网络1107。无监督训练还可以用于执行异常检测,该异常检测允许识别输入数据集中偏离数据正常模式的数据点。
还可采用有监督训练和无监督训练的变体。半监督学习是在其中在训练数据集1102中包括具有相同分布的经标记数据和未标记数据的混合的技术。渐进式学习是有监督学习的变体,其中连续地使用输入数据以进一步训练模型。渐进式学习使得经训练的神经网络1108能够适配于新数据1112,而不忘记在初始训练期间根植在网络内的知识。
无论是有监督还是无监督的,用于特别深的神经网络的训练过程对于单个计算节点可能是过于计算密集的。可以使用计算节点的分布式网络而不是使用单个计算节点来加速训练过程。
图12是图示分布学习的示例性框图。分布式学习是使用多个分布式计算节点来执行神经网络的有监督训练或无监督训练的训练模型。分布式计算节点可以各自包括一个或多个主机处理器以及通用处理节点中的一个或多个通用处理节点,该通用处理节点诸如,如图7中的高度并行的通用图形处理单元700。如所图示,分布式学习可被执行模型并行性1202、数据并行性1204、或模型并行性和数据并行性1204的组合。
在模型并行性1202中,分布式系统中的不同计算节点可以针对单个网络的不同部分执行训练计算。例如,可以由分布式系统的不同的处理节点训练神经网络的每个层。模型并行性的益处包括缩放到特别大的模型的能力。分割与神经网络的不同层相关联的计算使得能够训练非常大的神经网络,其中所有层的权重将不拟合到单个计算节点的记忆中。在一些实例中,模型并行性在执行大型神经网络的无监督训练中可以是特别有用的。
在数据并行性1204中,分布式网络的不同节点具有模型的完整实例,并且每个节点接收数据的不同部分。随后,组合来自不同节点的结果。虽然用于数据并行性的不同方法是可能的,但是数据并行训练方法全都需要组合结果并使每个节点之间的模型参数同步的技术。用于组合数据的示例性方法包括参数求平均和基于更新的数据并行性。参数求平均对训练数据的子集训练每个节点,并且将全局参数(例如,权重、偏差)设定为来自每个节点的参数的平均值。参数求平均使用维持参数数据的中央参数服务器。基于更新的数据并行性类似于参数求平均,例外在于,传递对模型的更新而不是将来自节点的参数传送到参数服务器。另外,能以分散的方式执行基于更新的数据并行性,其中更新被压缩并且在节点之间传送。
可以例如在其中每个计算节点包括多个GPU的分布式系统中实现组合式模型和数据并行性1206。每个节点可以具有模型的完整实例,其中每个节点内的多个单独的GPU用于训练模型的不同部分。
分布训练相对于在单个机器上的训练具有增加的开销。然而,本文中描述的并行处理器和GPGPU可以各自实现各种技术以用于减少分布训练的开销,这些技术包括用于启用高带宽GPU-GPU数据传送和加速的远程数据同步的技术。
示例性机器学习应用
可以应用机器学习以解决各种技术问题,包括但不限于计算机视觉、自主驾驶和导航、语音识别以及语言处理。计算机视觉在传统上已是机器学习应用的最活跃研究领域之一。计算机视觉的应用范围为从重现人类视觉能力(诸如,识别人脸)到创建新类别的视觉能力。例如,计算机视觉应用可以被配置成从视频中可见的物体中诱发的振动来识别声波。并行处理器加速的机器学习使得能够使用比先前可行的训练数据集明显大得多的训练数据集来训练计算机视觉应用,并且使得能够使用低功率并行处理器来部署推断系统。
并行处理器加速的机器学习具有自主驾驶应用,包括车道和道路标志识别、障碍回避、导航和驾驶控制。加速的机器学习技术可以用于基于定义对特定训练输入的适当响应的数据集来训练驾驶模型。本文中描述的并行处理器能够对用于自主驾驶解决方案的日益复杂的神经网络进行快速训练,并且能够将低功率推断处理器部署在适合于集成到自主车辆中的移动平台中。
并行处理器加速的深度神经网络已实现用于自动语音识别(ASR)的机器学习方法。ASR包括创建在给定的输入声序列的情况下计算最可能的语言序列的函数。使用深度神经网络的加速的机器学习已实现代替先前用于ASR的隐马尔可夫模型(HMM)和高斯混合模型(GMM)。
并行处理器加速的机器学习还可以用于加速自然语言处理。自动学习程序可以利用统计推断算法以产生对于有误差的或不熟悉的输入强健的模型。示例性自然语言处理器应用包括人类语言之间的自动机器翻译。
可以将用于机器学习的并行处理平台划分为训练平台和部署平台。训练平台通常是高度并行的,并且包括用于加速多GPU单节点训练和多节点多GPU训练的优化。适合于训练的示例性并行处理器包括图7的高度并行的通用图形处理单元700和图8的多GPU计算系统800。相反,部署的机器学习平台通常包括适合于在诸如相机、自主机器人和自主车辆的产品中使用的低功率并行处理器。
图13图示适合于使用经训练的模型执行推断的示例性推断芯片上系统(SOC)1300。SOC 1300可以集成多个处理组件,包括媒体处理器1302、视觉处理器1304、GPGPU1306和多核处理器1308。SOC 1300可附加地包括芯片上存储器1305,该芯片上存储器1305可启用可由处理组件中的每个处理组件访问的共享芯片上数据池。处理组件可以针对低功率操作被优化,以使得能够部署到各种机器学习平台,包括自主车辆和自主机器人。例如,可以将SOC1300的一种实现方式用作用于自主车辆的主控制系统的一部分。在SOC 1300被配置成在自主车辆中使用的情况下,SOC被设计和配置成用于符合部署管辖权的相关功能安全标准。
在操作期间,媒体处理器1302和视觉处理器1304可以一致地工作以加速计算机视觉操作。媒体处理器1302可以使得能够对多个高分辨率(例如,4K、8K)视频流进行低等待时间解码。可以将经解码的视频流写入到芯片上存储器1305中的缓冲器。随后,视觉处理器1304可以解析经解码的视频,并且对经解码视频的帧执行初步处理操作以准备使用经训练的图像识别模型来处理帧。例如,视觉处理器1304可以加速用于CNN的卷积操作,该CNN用于对高分辨率视频数据执行图像识别,而后端模型计算由GPGPU 1306执行。
多核处理器1308可以包括控制逻辑,该控制逻辑用于辅助数据传送的定序和同步以及由媒体处理器1302和视觉处理器1304执行的共享存储器操作。多核处理器1308还可以充当应用处理器,以执行可利用GPGPU 1306的推断计算能力的软件应用。例如,可以于在多核处理器1308上执行的软件中实现导航和驾驶逻辑的至少一部分。此类软件可以直接将计算工作负载发布至GPGPU 1306,或者可以将计算工作负载发布至多核处理器1308,该多核处理器可以将那些操作的至少一部分转移到GPGPU 1306。
GPGPU 1306可以包括计算集群,诸如,高度并行的通用图形处理单元700内的计算集群706A706H的低功率配置。GPGPU 1306内的计算集群可支持专门经优化以对经训练的神经网络执行推断计算的指令。例如,GPGPU 1306可支持用于执行低精度计算的指令,低精度计算诸如8位和4位整数向量操作。
图14图示出用于图像捕捉设备的示例性图像捕捉系统。在一些实施例中,图像捕捉设备是诸如数字相机之类的独立设备。在其他实施例中,图像捕捉设备是要求图像捕捉能力的另一计算设备的部分或其子组件,该计算设备诸如,具有用于捕捉图像的数字相机的便携式或手持式计算设备。在示例性实施例中,图像捕捉设备与卷积神经网络(CNN)计算处理集成,该卷积神经网络计算处理诸如可以实时地或者与由图像捕捉设备进行的图像捕捉和存储同时地或者在由图像捕捉设备进行图像捕捉和存储时提供深度学习神经网络(DNN)数据的DNN。因此,本文中所公开的图像捕捉设备可以提供图像和颜色信息以及深度机器学习信息(诸如,使用CNN的特征检测)两者。
图14图示出将RGB和CNN通道数据存储为深度通道图像的部分的示例性图示。示例性系统被示出为具有深度通道相机1400和深度通道存储器1420。深度通道相机1400包括颜色传感器1402和FPGA单元1404。颜色传感器1402包括被布置成阵列以捕捉图像1403A的颜色数据的多个传感器。图像1403A可以针对RGB图像或YUV图像。颜色传感器1402向深度通道存储器1420和FPGA单元1404输出图像值或数据。
颜色传感器可以是任何类型的光电传感器、光电检测器、CMOS传感器、或具有光传感器阵列以检测形成由颜色传感器阵列捕捉的彩色图像的光能的像素阵列。替代地,颜色传感器可以被配置成用于检测非彩色图像。每个颜色分量的数据或值形成诸如RGB颜色通道1414之类的单独的输出通道。
在一个实施例中,颜色传感器阵列1402的输出是被编程在FPGA 1404中的神经网络1406的输入。网络可以是具有任何数量的卷积层并在每一层具有任何数量的节点的任何类型的网络,其可以执行如关于图9A和图9B的示例性实施例中所公开的神经网络处理。在其他示例中,硬连线电路或可编程逻辑阵列(PLA)可以代替于FPGA 1406而以相同的方式与被编程或硬连线在相应的电路或阵列中的神经网络一起使用。在其他实施例中,可以利用如图6中所描述的关于机器学习应用602、机器学习框架604和计算框架606的硬件加速来对FPGA 1404进行编程。
在一个实施例中,利用被标记为标准视觉几何组(VGG)网络1406的标准的非常深的CNN(诸如VGG CNN)来对FPGA单元1404进行编程。在其他实施例中,如本文中所公开,诸如DNN之类的其他类型的CNN可被编程在FPGA单元1404中。在该示例中,VGG网络1406被编程有五(5)个卷积层,这些卷积层被标记为“Conv1”到“Conv5”。每个卷积层Conv2到Conv5包括提供对附近输出的概括统计的数据的“池化”。在其他实施例中,可以使用任何数量的卷积层,包括单个卷积层。每个Conv1到Conv5层执行卷积操作,这些卷积操作提供被标记为“Conv1的数据”到“Conv5的数据”的经过滤的图像或特征图数据。在该前馈CNN网络中,每个卷积层的输出传递至下一层到最终预测层1425。在预测层1425处,可基于CNN处理和CNN数据作出分类1430,诸如确定图像的类型。
深度通道存储器1420存储从图像1403A推导出的针对RGB通道1414的图像1403B。为CNN通道1418存储Conv1的数据(1410A)到Conv5的数据(1410E)。在该实施例中,每个卷积通道Conv1到Conv5表示具有针对CNN通道1418的五个通道的CNN通道。取决于每一层处执行的卷积处理,Conv1的数据(1410A)到Conv5的数据(1410E)可以是图像1403A的不同的经过滤的图像或特征图。在深度通道存储器1420中,针对RGB颜色通道1414和CNN通道的图像被存储在相邻的存储器中或被串接在一起。
网络速写:利用深度CNN中的二进制结构
具有深度架构的卷积神经网络(CNN)已大大提高了计算机视觉任务中的最新水平。然而,深度网络是典型地资源密集型的,并且因此难以被部署在移动设备上。最近,具有二进制权重的CNN已经向社群展现出引人注目的效率,而在实践中此类模型的准确性往往不令人满意。
参考图15-图18C,公开了网络速写(network sketching)的示例和实施例,这些示例和实施例描述了追求二进制权重CNN、针对更忠实的推断的新颖技术,并为实际应用提供了更好的权衡。下列示例和实施例可以直接在经预先训练的过滤器区块中采用二进制结构,并且经由张量扩展产生二进制权重模型。可将该过程视为粗到细模型近似,类似于描绘轮廓和打阴影的铅笔绘制步骤。为了进一步加速所生成的模型(即,素描(sketch)),示例和实施例提出了二进制张量卷积的相关联的实现方式。实验结果论证了在ImageNet大规模分类任务上,AlexNet(或ResNet)的适当素描大幅度地优于现有的二进制权重模型,而用于网络参数的提交的存储器仅超出少量。
给定具有任何种类的网络架构的经预先训练的全精度(即,32位浮点)卷积神经网络(CNN)模型,所公开的技术可以高效地将该模型转换为无损二进制版本(该版本的权重被约束成仅为1或-1)。虽然已经投入各种努力来解决该任务,但仍有两个关键问题尚未良好解决并且保留为未解决的问题,这两个关键问题即显著的准确性损失和低效率的训练程序。下列示例和实施例因此提供用于从密集的全精度对应物回归到无损且高效的二进制卷积神经网络的优秀的粗到细技术。
所公开的技术提供有原则且有效的关联方案(即相关联的实现方式),该关联方案可以智能地提供新的策略来以层级式且渐进式的方式执行多个卷积,因此适当地避免二进制张量模型的冗余操作。所公开的技术和方法还可以使用简单但非常有效的方案,即依赖树,该方案适当地对二进制张量模型进行重新布置并以随机的方式实现它们,因此显著地加速了剩余的计算。相关联的实现方式和依赖树的组合提供了相关联的依赖树技术。该方法可以解决如何实现并加速二进制张量模型计算的问题。
开发具有二进制权重的无损CNN是解决针对密集全精度CNN模型(针对建模保存和模型实现两者)的密集型计算负担困境(尤其对于在FPGA、DSP和其他专用深度学习硬件上的使用)的有前途的方式。然而,尤其对于二进制张量模型,可能难以有效地实现二进制CNN模型。所公开的相关联的依赖树技术可以弥合此类差距。
(介绍)
在过去的十年中,卷积神经网络(CNN)已经作为许多计算机视觉解决方案的核心被接受。在大量数据上训练的深度模型已经在各种任务上实现了令人印象深刻的准确性,这些任务包括但不限于语义分割、面部识别、对象检测和识别。
尽管取得了成功,但移动设备无法充分利用这些模型,这主要是由于它们计算资源的不足。如所知,基于相机的游戏与对象识别和检测技术一起进行操作是令人眼花缭乱的,因此迫切地期望部署先进的CNN(参见例如,关于平板计算机和智能电话的参考文献,诸如,AlexNet[15]、VGG-Net[25]和ResNet[10])。然而,作为ILSVRC-2012竞争的优胜者,AlexNet伴随有将近6100万个实值参数和15亿个浮点操作(FLOP)来对图像进行分类,使得其在不同方面中是资源密集型的。为实时应用运行AlexNet将需要相当高的CPU/GPU工作负荷和存储器占用,这在典型的移动设备上是禁止性的。类似的情形在像VGG-Net和ResNet之类的更深的网络上发生。
最近,具有二进制权重的CNN已经被设计成用于解决该问题。通过将连接权重强制为仅两个可能的值(通常为+1和-1),研究人员试图消除网络推断所要求的浮点乘法(FMUL),因为这些浮点乘法被认为是最昂贵的操作。另外,由于实值权重被转换为二进制的,因此这些网络将提交少得多的空间用于存储它们的参数,这引起存储器占用的极大的节省并因此引起能量成本的极大节省[8]。已经提出用于训练此类网络的若干种方法,诸如,参考文献[1]、[2]和[22]。然而,获得的模型的所报告的准确度在大型数据集上是不令人满意的(例如,参考文献[22]ImageNet)。甚至更糟的是,如在参考文献[14]中所描述,由于直接拓宽网络无法保证准确度的任何提高。同样不清楚可以如何利用这些方法在模型精度和所期望的准确度之间作出权衡。
图15示出了根据示例性实施例通过在经预先训练的过滤器区块内采用二进制结构来对网络模型进行速写,在此之后,全精度模型可以被转换为具有二进制连接的高效模型。
所公开的示例和实施例介绍了作为寻求二进制权重CNN的新的方式的网络速写,其中,二进制结构在经预先训练的模型中被采用而不是从头开始被训练。为了寻求产生最先进模型的可能性,所公开的示例和实施例提出了两种以理论为基础的算法,使得调整速写的精度以用于更准确的推断成为可能。而且,为了进一步改善所生成的模型(也称为素描)的效率,所公开的示例和实施例提出了用于相关联地实现二进制张量卷积的算法,利用该算法同样减少所要求的浮点加法和减法(FADD)的数量。实验结果论证了我们的方法对AlexNet和ResNet两者均极其有效。也就是说,在要求多一点FLOP并提交多一些存储器空间的情况下,所生成的素描大大优于现有的二进制权重AlexNet和ResNet,从而在ImageNet数据集上产生接近最先进的识别准确度。
(相关工作)
深度CNN的部署问题已成为多年关注的问题。可以从头开始或从经预先训练的模型学习高效的模型。一般而言,从头开始训练需要如在参考文献[18]中所描述的网络架构和训练策略的强集成。早先的工作通常是硬件特定的。不限于CNN,Vanhoucke等人的参考文献[28]描述了程序化优化对x86CPU产生3倍速度提高的优势。另一方面,Mathieu等人的参考文献[20]描述了在GPU上执行快速傅立叶变换(FFT)并提出在频域中高效地计算卷积。另外,Vasilache等人的参考文献[29]介绍了两种用于更显著的加速的新的基于FFT的实现方式。
最近,已将基于低秩的矩阵(或张量)分解用作完成该任务的替代方式。主要受来自Denil等人的参考文献[4]和Rigamonti等人的参考文献[23]的开创性工作启发,基于低秩的方法试图采用不同的特征通道和过滤器之间的参数冗余。通过恰当地对经预先训练的过滤器进行分解,这些方法(诸如,参考文献[5]、[12]、[16]、[19]和[32]中所描述的那些方法)能以可接受的准确度下降(≤1%)实现有吸引力的速度提高(例如,2倍到4倍)。
与上文提到的工作不同,一些研究工作将存储器节约视为当务之急。为了应付深度网络的存储问题,诸如Gong等人的参考文献[6]、Wu等人的参考文献[31]、以及Lin等人的参考文献[18]之类的参考文献考虑将量化技术应用于经预先训练的CNN并尝试以对推断准确度的微小让步作出网络压缩。该范围内另一类强大的方法是网络修剪。从LeCun等人的参考文献[17]以及Hassibi和Stork的参考文献[9]的早先的工作开始,修剪方法已在一系列CNN上实现了令人惊讶良好的压缩,包括像如在参考文献[7]、[8]和[26]中所描述的AlexNet和VGGnet的一些高级CNN。另外,由于模型复杂度的降低,可以观察到作为副产品的相当大的加速。
作为一种用于生成二进制权重CNN的方法,所公开的示例、实施例和技术公开了如与大部分现有压缩和加速方法不相关的网络速写。例如,通过首先将权重张量分解为低秩分量并随后对它们进行速写,所公开的示例、实施例和技术可以与基于低秩的方法联合应用。对于与基于量化的方法的协作,首先进行速写并在此后进行乘积量化是一种良好的设计特征。
(网络速写)
一般而言,卷积层和全连接层是深度CNN中最耗费资源的组成部分。幸运的是,如在参考文献[4]和[30]中所描述,这两者被认为是过参数化的。例如,所公开的技术可以被实现在卷积层上,并且能以类似的方式对全连接层进行操作。
假设卷积层L的可学习权重可以被布置并被表示为{W(i):0≤i<n},其中,n指示特征图的目标数量,并且w(i)∈Rc×w×h是其第i个过滤器的权重张量。存储所有这些权重将要求32×c×w×h×n位存储器,并且卷积的直接实现方式将要求s×c×w×h×n个FMUL(与相同数量的FADD),其中,s指示目标特征图的空间尺寸。
由于相信许多卷积模型是信息冗余的,因此为了更高的效率寻求它们的低精度且紧凑的对应物是可能的。考虑到这一点,对于一个实施例,所公开的技术可以通过使用分治策略在L内采用二进制结构。对于一个实施例,首先利用某个二进制基础的线性跨度对经预先训练的过滤器进行近似,并且随后对相同基础的张量进行分组以寻求最大网络效率。下文为示例性技术的细节,其中上标(i)从W删除,因为自变量适用于所有n个权重张量。
(对过滤器进行近似)
如上文所描述,第一目标是找到对其进行良好近似的W的二进制扩展(如在图16中所图示),这意指其中,B∈{+1,-1}c×w×h×m和a∈Rm分别是m个二进制张量{B0,…,Bm-1}和相同数量的缩放因子{a0,…,am-1}的串接。可以探讨固定m的情况下B和a的适当选择。具体而言,图16示出了利用经缩放的二进制张量的总和来对实值权重张量进行近似。
(直接近似)
为了易于理解,首先描述直接近似算法。一般而言,应当使重构误差(或近似误差、舍入误差)e2:=||W-<B,a>||2最小化,以保持扩展后的模型准确度。然而,作为具体的决策问题,直接使e2最小化看起来是NP困难的,并且因此解决该问题可能是非常耗时的[3]。为了在合理时间内完成,提出一种试探性算法,在该试探性算法中,依次对Bj和aj进行学习并且参考e2最小化准则将它们中的每一个选择为当前最优。即,
其中Bj∈{+1,-1}c×w×h,对于任何3-D张量X,范数运算符||·||被定义为||X||:=<X,X>1/2,并且指示将所有先前所生成的(多个)张量进行组合之后的近似残差。具体而言,如果j=0,则并且如果j≥1,则
。可以容易地知晓,通过导数计算,在此情况下,等式(1)与下列等式等同
其中,函数sgn(·)计算输入张量的逐元素的符号,并且t=c×w×h。
以上算法被概括在算法1中。在每个Bj被选择为当前最优的意义上,该算法被认为是试探性的(或贪心的),而不论其之后是否将排除更好的近似。此外,一些简单推论给出了下列理论结果。
定理1:
对于任何m≥0,算法1实现满足下式的重构误差e2
e2≤||W||2(1-1/t)m。(4)
证明:由于我们可以得出
其中,的条目,其中上标(l)指示其索引。根据等式(2)和(5),我们有
对于从0变到m–1的j,通过应用公式(6)获得结果。
(利用细化的近似)
参考定理1,通过利用直接近似算法,重构误差e2以与1/t成比例的速率指数地衰减。也就是说,给定具有小尺寸的W(即,在t很小的情况下),算法1中的近似可以仅利用少量的二进制张量来提供良好的结果。然而,在t相对较大的情况下,重构误差将缓慢降低,并且近似可能甚至利用大量的二进制张量也无法令人满意。所公开的技术可以针对更好的重构属性而对直接近似算法进行细化。
考虑在算法1中,Bj和aj两者被选择以利用固定的对应物使e2最小化。然而,在大多数情况下,B和a是否在整体上最优是可疑的。如果不是,则出于更好的近似起见对它们中的至少一者进行细化。为了计算简单,可以参考B为固定时的特定情况。
即,假设直接近似已经产生了可以寻求满足的另一缩放向量a。为了实现这一点,遵循最小二乘回归法来获得
其中,运算符vec(·)获得列向量,该列向量的元素取自输入张量,并且Bj得到[vec(B0),...,vec(Bj)]。
以上利用缩放因子细化的算法被概括为算法2。直观地,细化操作将类存储器特征归于我们的方法所公开的技术,并且下列定理确保相比于算法1,其可以更快地收敛。
定理2:
对于任何m≥0,算法2实现满足下式的重构误差e2
其中,对于0≤j≤m-1,λ(j,t)≥0。
证明:为了简化记法,让我们进一步表示wj:=vec(Wj)和bj+1:=vec(Bj+1),随后通过块矩阵乘法和求逆获得:
其中,并且
因此,通过限定对于j=0,...,m-1,可以获得下列等式:
。给定半正定矩阵X和Y,tr(XY)≤tr(X)tr(Y),则等式(10)提供:
显然,其遵循:
其中,由于λ(j,t)表示bj+l的正交投影的平方欧几里德范数,因此不难证明λ(j,t)≥0,并且随后得到结果。
(几何解释)
在对经预先训练的过滤器进行扩展之后,对于一个实施例,对相同的二进制张量进行分组以节省更多的存储器占用。在所公开的示例和实施例中,技术被称为网络速写,并且所生成的二进制权重模型直接被称为素描。对于一个实施例,从几何的观点解释速写过程。
最初,等式(1)本质上寻求由一组t维二进制向量跨越的线性子空间以使其到vec(W)的欧几里德距离最小化。从概念上讲,在该问题中存在两个变量要确定。算法(1)和(2)两者能以试探性方式来解决该问题,并且第j个二进制向量始终可通过使其自身与当前近似残差之间的距离最小化来进行估计。使得它们不同的是,算法(2)利用其先前的j-1个估计的线性跨度来进行更好的近似,而算法(1)没有。
参考定理2,等式(8)与定理1中的等式(4)相比的区别主要在于λ(j,t)的存在。清楚地,只要λ(j,t)>0对于任何j∈[0,m-1]成立,算法2就将比算法1更快地收敛。在几何学上说,如果我们将认为是矩阵或到Sj:=span(b0,...,bj)上的正交投影,则λ(j,t)等于向量投影的平方欧几里德范数。因此,如果并且只有向量bj+1正交于Sj(或者换言之,正交于{b0,…,bj}的每个元素)(其以极低的概率并仅在t∈{2k:k∈N}的条件下发生),则λ(j,t)=0成立。也就是说,算法2在实践中将可能胜过算法1。
加速素描模型
使用算法1或2,可以在L上获得mn个二进制张量的集合,这意味着可学习的权重的存储要求被降低了因子32t/(32m+tm)倍。
当应用该模型时,所要求的FMUL的数量也显著地降低了因子(t/m)倍。可能速写仅有的负面影响是FADD数量的一些增加,因为其对计算单元造成了额外的负担。
所公开的技术可以缓解该缺陷并引入一种用于进一步加速二进制权重网络的算法。开始于所要求的FADD的数量随m单调增长的观察,在L的给定输入的情况下,加数和被加数的固有数量是固定的。也就是说,在二进制张量卷积的直接实现方式中存在一些重复的FADD。让我们将X∈Rc×w×h表示为输入子特征图并且根据示例性实施例在图17中出于示意性说明示出。具体而言,如以圆角矩形突出显示,图17示出了在示例性实施例中在二进制张量卷积的直接实现方式中存在重复的FADD的高概率。
(关联实现方式)
为了恰当地避免冗余操作,对于一个实施例,存在一种在L上的多个卷积X*B0,...,X*Bmn-1的关联实现方式,其中,不同卷积之间的连接完全被采用。更具体的,对于一个实施例,以层级式且渐进式的方式来执行卷积。也就是说,将卷积结果中的每一个用作接下来的计算的基线。假设提前计算第j0个卷积,并且其产生则可以通过使用下式推导出X与Bj1的卷积:
或者替代地使用下式:
其中,表示逐元素的非运算符,并且∨表示其行为依照表1的逐元素的运算符。
表1。逐元素运算符∨的真值表。
由于在每个索引位置上生成三元输出,因此可以自然地将视为switch...case...语句的迭代。以此种方式,对于一个实施例,仅中与±1对应的条目需要与X进行运算,并且因此获得加速。假定的内积等于r,则为了计算等式(12)和(13)仍然分别要求(t-r)/2+1和(t+r)/2+1个FADD。在所公开的实现方式和技术中,为了更少的FADD的可能性以及由此更快的卷积,可以预期实数r∈[-t,+t]接近t或-t。具体而言,如果r≥0,则为了更好的效率而选择等式(12);否则,可以选择等式(13)。
(构建依赖树)
对于一个实施例,所公开的实现方式和技术可以通过恰当地重新布置二进制张量并以间接的方式实现二进制张量卷积来工作。出于此原因,连同等式(12)和(13),还需要依赖树来对其进行驱动。具体而言,依赖是对某些二进制张量进行链接以指定首先执行哪个卷积以及随后执行哪个卷积的概念。例如,利用深度优先搜索(depth-first-search)策略,图18A中的T示出指示以下内容的依赖树:首先计算X*B1,随后从先前结果推导出X*B0,随后在X*B0的基础上计算X*B3,并且依此类推。通过对整个树进行遍历,将渐进地且高效地计算所有的mn个卷积。
图18A示出了针对我们的算法的依赖树。其暗示要执行关联卷积的次序。
对于一个实施例,所公开的技术和算法利用随机给定的树进行工作,但是为了其最佳性能仍然需要专用的T。使G={V,E}为具有顶点集合V和权重矩阵E∈imn×mn的无向的经加权的图。V的每个元素可以表示单个二进制张量,并且E的每个元素测量两个所选择的张量之间的距离。为了与先前的小节保持一致,可以采用下列形式定义距离函数
其中,指示的内积。清楚地,所定义的函数是{-1,+1}c×w×h上的度量,并且其范围被限制在[0,t]中。回想一下,先前的小节中,可以预期r接近于±t。因此,最优依赖树应当从根到其顶点中的每个顶点具有最短距离,并且因此所期望的是G的最小生成树(MST)。
从该角度来看,可以使用现成的(off-the-shell)算法来构建此类树。将其相对于|E|的线性时间复杂度(即,在L上O(m2n2))考虑在内,可以选择普里姆算法(Prim’salgorithm)[1]。利用所获得的T,可以容易地实现所公开的技术和算法,并且整个过程可以被概括在算法3中。注意,虽然全连接层计算向量-矩阵乘法,但它们可以被认为是一串张量卷积。因此,在二进制情况下,可以通过使用算法3在全连接层中进行加速。
(实验结果)
可以在利用高级CNN的如在参考文献[24]中所描述的公知的ImageNet ILSVRC-2012数据库以及如参考文献[13]中所描述的开源Caffe框架上经验地分析并进行所公开的算法。训练集可以由120万个经标记的图像组成,并且测试集可以由50,000个验证图像组成。
(速写算法的效力)
作为开始实验,可以对著名的AlexNet模型[15]进行速写。虽然其被认为是ILSVRC-2012的冠军解决方案,但AlexNet看起来是非常资源密集的。因此,寻求其低精度和高效率的对应物确实是有吸引力的。然而,AlexNet是具有61M个可学习参数的8层模型。在表2中示出逐层细节,并且经预先训练的参考模型可在线获得。
表2。AlexNet[15]中可学习的层的细节,其中,“Conv2”是计算上最昂贵的层,并且“Fc6”提交最多存储器(以位为单位)。在所有这些层中,FLOP由相同数量的FADD和FMUL组成。
使用所公开的算法1和算法2,能以不同精度生成二进制权重AlexNet。关于这些算法,上文已提到理论分析。还可以经验地分析这些算法。参考图18C,其论证了“能量”如何可以随着针对不同近似器的变化的尺寸的存储器提交进行累积。被定义为1-∑e2/∑||W||2,如参考文献[32]中所描述,累积的能量可以与重构误差负相关,因此累积的能量增加越快则越好。如图18C中所示,算法1和算法2可以被缩写为“速写(直接的)”和“速写(细化的)”。为了与其他策略进行比较,可以测试如在参考文献[14]中所使用的随机地生成的二进制基础(称为“Sketching_random(速写_随机的)”,以及可以测试如参考文献[8]中所描述的网络修剪技术,该技术并非自然地与所公开的技术不相关。用于“速写(随机的)”的标量因子可以通过等式(7)来计算,以确保其最佳性能。
这与在所有可学习层上算法1均比算法2收敛得慢得多的理论结果一致,使得算法1在过滤器近似任务中不太有效。然而,另一方面,当与“速写(随机的)”和修剪技术比较时,算法1可以改善。在小型工作存储器的情况下,所公开的直接近似算法技术可以更好地进行近似。然而,如果存储器尺寸增加,则修剪技术可更快地收敛至其最优情况。
如本文中所讨论,在所公开的算法中,参数m对模型准确度和效率进行平衡。图18C示出了很小的m(例如)对于AlexNet在其细化素描中获得超过80%的累积能量应当是足够的。让我们将层“Conv5”和“Fc6”作为示例并且参看表3以获得更多的细节。
表3。在仅分配3个位的情况下,AlexNet的细化素描在“Conv2”和“Fc6”上均获得超过80%的能量以及用于网络参数的所提交的存储器的多于10倍的减少。同时,在这两层上,所要求的FMUL的数量也极大地减少(减少了400倍和约3000倍)。
(关联操纵的效率)
对于一个实施例,可以在AlexNet的3位细化素描上对二进制张量操纵的关联实现方式(即,算法3)直接进行测试。首先,聚焦于“Conv2_sketch”和“Fc6_sketch”,可以利用随机生成的依赖树和精细地计算出的MST两者来产生算法3的结果,同时将直接实现方式的结果作为基准进行比较。如在表3中所论证,所有的实现方式可以要求相同数量的FMUL,并且如表4中所比较,所有的实现方式可以要求显著不同数量的FADD。注意,在关联实现方式中,可能特别涉及一些逻辑求值和×2运算。然而,它们比FADD和FMUL[1]便宜得多,便宜了至少一个数量级。因此,在本小节中不对其成本进行深入分析。
表4。关联实现方式惊人地减少了“Conv2_sketch”和“Fc6_sketch”上要求的FADD的数量。
根据上表,关联实现方式可以大大地减少“Conv2_sketch”和“Fc6_sketch”上所要求的FADD的数量。也就是说,它可以恰当地减轻网络速写的不利影响,并且使我们能够评估AlexNet的3位素描,而不会造成对所要求的计算量的任何无法承受的增加。另外,MST可以帮助进一步改善其性能并最终分别在两个层上得到约2.5倍和约2.3倍的减少。根据示例性实施例,所有可学习层上的结果可被概括在图18B中。具体而言,图18B示出了二进制张量卷积的关联实现方式帮助在“AlexNet_sketch(AlexNet_速写)”的所有可学习层上获得所要求的FADD的数量的2倍至3倍的减少。
(整体网络性能)
对于一个实施例,已经在它们自己的标准的基础上对算法1、算法2和算法3进行了测试,可以提供所公开的素描与如参考文献[1]和[22]中所描述的其他二进制权重模型的整体网络性能的比较。受先前的实验结果启发,仍然可以使用针对评估的3位的(直接的和细化的)素描,因为它们两者都是非常高效且准确的。考虑到AlexNet的全连接层包含多于95%的它的参数,可以尝试将它们速写至极限,即1位。与Rastegari等人的参考文献[22]类似,‘fc8’层(或者说,输出层)可以被保持为具有其全精度并且报告Top-1和Top-5推断准确性。然而,区别于它们的方法,‘conv1’层也可以被速写,因为它也是计算密集的(如在表1中所示)。
仅仅为了避免重构误差的传播,我们需要以某种方式对所生成的素描进行微调。自然地,存在帮助完成该任务的两种协议;一种被称为投影梯度下降并且另一种是随机梯度下降,其中,全精度权重如参考文献[1]中所描述地更新。后者可以凭借其较好的收敛性而被选择。训练批次尺寸可以被设置为256并且动量(momentum)为0.9。学习率可以每20,000次迭代从0.001下降,其为如Krizhevsky等人的参考文献[15]中所设置的原始值的十分之一,并且仅使用中心剪裁以供进行准确度评估。在全部70,000次迭代(即,大约14个时期)之后,使用所公开的技术的素描可以在测试集上作出忠实的推断,并且细化模型比直接模型更好。如表5中所示,所公开的AlexNet的细化素描可以获得55.2%的Top-1准确度和78.8%的Top-5准确度,这意味着其可能大大优于如参考文献[1]中所描述的以二进制连接(BinaryConnect,BC)为名称的最近发布的模型以及如参考文献[22]中所描述的二进制权重网络(BWN),同时所要求的参数的数量仅超出少量。
网络修剪技术也可以在对AlexNet进行压缩上获得引人注目的结果。然而,其需要许多额外的空间来存储参数索引,并且更重要的是,如参考文献[7]和[8]中所描述,甚至最优修剪方法在卷积层上也表现平庸。相比之下,本文中所公开的网络速写技术在这两种层类型上均足够良好地工作。此处,可以证明网络速写技术对ResNet[10]的效力。比AlexNet装配有多得多的卷积层,ResNet可以赢得ILSVRC-2015分类竞争。存在它的架构的许多实例,并且为了公平比较,可以选择类型B版本的18个层(如Rastegari等人的参考文献[22]中所描述)。
图18C示出了根据示例性实施例的所描述的网络速写利用少得多的提交存储器的量对AlexNet进行足够好的近似,并且细化操作帮助在其所有可学习层上获得更好的收敛。对于一个实施例,经预先训练的Torch模型可以在线获得并在进行速写之前被转换为等同的Caffe模型。对于微调过程,在一个实施例中,训练批次尺寸可以被设置为64并且使学习率从0.0001下降。在200,000次迭代(即,大约10个时期)之后,所生成的素描可以表示ImageNet数据集上67.8%的Top-1准确度和88.4%的Top-5准确度。
参考表6以获得不同的二进制权重模型的分类准确度的比较。
表6。网络速写技术生成具有作出忠实推断的能力并比其参考少大约7.4倍的参数(以位为单位)的二进制权重ResNet。直接从其文献引用BWN的测试准确度。
(总结)
所公开的示例、实施例和技术介绍了网络速写作为一种用于寻求二进制权重CNN的新颖的技术。其可能比当前可用的方法更灵活,并且其使得研究人员和工程师能够调整所生成的素描的精度并得到模型效率与准确度之间更好的权衡。已给出理论和经验分析两者来验证其效力。而且,可以实现二进制张量卷积的关联实现方式以进一步对素描进行加速。作为结果,可以生成具有对ImageNet分类任务作出高效且忠实的推断的能力的二进制权重AlexNet和ResNet。
(参考文献)
该具体实施方式中的参考文献[1]至[32]被标识如下。
[1]M.Courbariaux,Y.Bengio和J.P.David.BinaryConnect:Training deepneural networks with binary weights during propagations(二进制连接:在传播期间利用二进制权重来训练深度神经网络).在Advances in Neural Information ProcessingSystems(NIPS)(神经信息处理系统(NIPS)进展),2015.1,7,8中.
[2]M.Courbariaux,I.Hubara,D.Soudry,R.El-Yaniv和Y.Bengio.Binarizedneural networks:Training deep neural networks with weights and activationsconstrained to+1or-1(二进制化神经网络:利用被约束为+1或-1的权重和激活来训练深度神经网络).在arXiv preprint arXiv(arXiv预印本arXiv):1602.02830,2016.1中.
[3]G.Davis,S.Mallat和M.Avellaneda.Adaptive greedy approximations(自适应贪心近似).Constructive approximation(构建近似),13(1):57-98,1997.3.
[4]M.Denil,B.Shakibi,L.Dinh,M.Ranzato和N.d.Freitas.Predictingparameters in deep learning(深度学习中预测参数).在Advances in NeuralInformation Processing Systems(NIPS)(神经信息处理系统(NIPS)进展),2013.2中.
[5]E.L.Denton,W.Zaremba,J.Bruna,Y.LeCun和R.Fergus.Exploiting linearstructure within convolutional networks for efficient evaluation(在卷积网络内采用线性结构以供进行高效评估).在Advances in Neural Information ProcessingSystems(NIPS)(神经信息处理系统(NIPS)进展),2014.2中.
[6]Y.Gong,L.Liu,M.Yang和L.Bourdev.Compressing deep convolutionalnetworks using vector quantization(使用向量量化来压缩深度卷积网络).arXivpreprint arXiv(arXiv预印本arXiv):1412.6115,2014.2.
[7]Y.Guo,A.Yao和Y.Chen.Dynamic network surgery for efficient DNNs(用于高效DNN的动态网络手术).在Advances in Neural Information Processing Systems(NIPS)(神经信息处理系统(NIPS)进展),2016.2,8中.
[8]S.Han,J.Pool,J.Tran和W.J.Dally.Learning both weights andconnections for efficient neural networks(针对高效神经网络学习权重和连接两者).在Advances in Neural Information Processing Systems(NIPS)(神经信息处理系统(NIPS)进展),2015.1,2,6,8中.
[9]B.Hassibi和D.G.Stork.Second order derivatives for network pruning:Optimal brain surgeon(网络修剪的二阶导数:最佳脑外科医师).在Advances in NeuralInformation Processing Systems(NIPS)(神经信息处理系统(NIPS)进展),1993.2中.
[10]K.He,X.Zhang,S.Ren和J.Sun.Deep residual learning for imagerecognition(用于图像识别的深度残差学习).在IEEE Conference on Computer Visionand Pattern Recognition(CVPR)(IEEE计算机视觉和模式识别(CVPR)会议),2016.1,8中.
[11]Y.Ioannou,D.Robertson,J.Shotton,R.Cipolla和A.Criminisi.TrainingCNNs with low-rank filters for efficient image classification(利用低秩过滤器来训练CNN以供进行高效的图像分类).在International Conference on LearningRepresentations(ICLR)(在国际学习表征会议(ICLR)),2016.2中.
[12]M.Jaderberg,A.Vedaldi和A.Zisserman.Speeding up convolutionalneural networks with low rank expansions(利用低秩扩展来加速卷积神经网络).在British Machine Vision Conference(BMVC)(英国机器视觉会议(BMVC)),2014.2中.
[13]Y.Jia,E.Shelhamer,J.Donahue,S.Karayev,J.Long,R.Girshick,S.Guadarrama和T.Darrell.Caffe:Convolutional architecture for fast featureembedding(Caffe:用于快速特征嵌入的卷积架构).在ACM Multimedia Conference(MM)(ACM多媒体会议(MM)),2014.6中.
[14]F.Juefei-Xu,V.N.Boddeti和M.Savvides.Local binary convolutionalneural networks(本地二进制卷积神经网络).arXiv preprint arXiv(arXiv预印本arXiv):1608.06049,2016.1,6.
[15]A.Krizhevsky,I.Sutskever和G.E.Hinton.Imagenet classification withdeep convolutional neural networks(利用深度卷积神经网络的Imagenet分类).在Advances in neural information processing systems(NIPS)(神经信息处理系统(NIPS)进展),2012.1,6,7中.
[16]V.Lebedev,Y.Ganin,M.Rakhuba,I.Oseledets和V.Lempitsky.Speeding-upconvolutional neural networks using fine-tuned CPdecomposition(使用经微调的CP分解来加速卷积神经网络).arXiv preprint arXiv(arXiv预印本arXiv):1412.6553,2014.2.
[17]Y.LeCun,J.S.Denker,S.A.Solla,R.E.Howard和L.D.Jackel.Optimal braindamage(最佳脑损伤).在Advances in Neural Information Processing Systems(NIPS)(神经信息处理系统(NIPS)进展),1989.2中.
[18]D.D.Lin,S.S.Talathi和V.S.Annapureddy.Fixed point quantization ofdeep convolutional networks(深度卷积网络的定点量化).在InternationalConference on Machine Learning(ICML)(国际机器学习会议(ICML)),2016.2中.
[19]B.Liu,M.Wang,H.Foroosh,M.Tappen和M.Pensky.Sparse convolutionalneural networks(稀疏卷积神经网络).在IEEE Conference on Computer Vision andPattern Recognition(CVPR)(IEEE计算机视觉和模式识别(CVPR)会议),2015中.
2
[20]M.Mathieu,M.Henaff和Y.LeCun.Fast training of convolutionalnetworks through FFTs(通过FFT对卷积网络的快速训练).arXiv preprint arXiv(arXiv预印本arXiv):1312.5851,2013.2.
[21]R.C.Prim.Shortest connection networks and some generalizations(最短连接网络和一些概括).Bell system technical journal(贝尔系统技术期刊),36(6):1389-1401,1957.6.
[22]M.Rastegari,V.Ordonez,J.Redmon和A.Farhadi.XNOR-Net:Imagenetclassification using binary convolutional neural networks(XNOR-Net:使用二进制卷积神经网络的Imagenet分类).arXiv preprint arXiv(arXiv预印本arXiv):1603.05279v2,2016.1,7,8.
[23]R.Rigamonti,A.Sironi,V.Lepetit和P.Fua.Learning separable filters(学习可分离的过滤器).在IEEE Conference on Computer Vision and PatternRecognition(CVPR)(在IEEE计算机视觉和模式识别(CVPR)会议),2013.2中.
[24]O.Russakovsky,J.Deng,H.Su,J.Krause,S.Satheesh,S.Ma,Z.Huang,A.Karpathy,A.Khosla,M.Bernstein,A.C.Berg和L.Fei-Fei.ImageNet Large ScaleVisual Recognition Challenge(ImageNet大规模视觉识别挑战).InternationalJournal of Computer Vision(IJCV)(国际计算机视觉杂志(IJCV)),115(3):211-252,2015.6.
[25]K.Simonyan和A.Zisserman.Very deep convolutional networks forlarge-scale image recognition(用于大规模图像识别的超深卷积网络).在International Conference on Learning Representations(ICLR)(国际学习表征会议(ICLR)),2014.1中.
[26]S.Srinivas和R.V.Babu.Data-free parameter pruning for deep neuralnetworks(用于深度神经网络的无数据参数修剪).在British Machine VisionConference(BMVC)(英国机器视觉会议(BMVC)),2015.2中.
[27]C.Tai,T.Xiao,Y.Zhang,X.Wang和W.E.Convolutional neural networkswith low-rank regularization(利用低秩正则化的卷积神经网络).在InternationalConference on Learning Representations(ICLR)(国际学习表征会议(ICLR)),2016中.
[28]V.Vanhoucke,A.Senior和M.Z.Mao.Improving the speed of neuralnetworks on CPUs(改善CPU上的神经网络的速度).在Deep Learning and UnsupervisedFeature Learning Workshop,Advances in Neural Information Processing Systems(NIPS)(神经信息处理系统(NIPS)进展,深度学习和无监督特征学习研讨会),2011.2中.
[29]N.Vasilache,J.Johnson,M.Mathieu,S.Chintala,S.Piantino和Y.LeCun.Fast convolutional nets with fbfft:A GPU performance evaluation(利用fbfft的快速卷积网络:GPU性能评估).在International Conference on LearningRepresentations(ICLR)(在国际学习表征会议(ICLR)),2015.2中.
[30]A.Veit,M.Wilber和S.Belongie.Residual networks are exponentialensembles of relatively shallow networks(残差网络是相对浅的网络的指数全体).在Advances in Neural Information Processing Systems(NIP-S)(神经信息处理系统(NIPS)进展),2016.2中.
[31]J.Wu,C.Leng,Y.Wang,Q.Hu和J.Cheng.Quantized convolutional neuralnetworks for mobile devices(用于移动设备的经量化的卷积神经网络).IEEEConference on Computer Vision and Pattern Recognition(CVPR)(IEEE计算机视觉和模式识别(CVPR)会议),2016.2.
[32]X.Zhang,J.Zou,X.Ming,K.He和J.Sun.Efficient and accurateapproximations of nonlinear convolutional networks(对非线性卷积网络的高效且准确的近似).在IEEE Conference on Computer Vision and Pattern Recognition(CVPR)(在IEEE计算机视觉和模式识别(CVPR)会议),2015.2,6中.
图形系统概览
图19是根据示例性实施例的处理系统1900的框图。在各实施例中,系统1900包括一个或多个处理器1902以及一个或多个图形处理器1908,并且可以是具有大量处理器1902或处理器核107的单处理器台式机系统、多处理器工作站系统或服务器系统。在一个实施例中,系统1900是被并入在用于在移动设备、手持式设备或嵌入式设备中使用的芯片上系统(SoC)集成电路内的处理平台。
系统1900的实施例可以包括以下各项或可被并入在以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统1900是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统1900还可以包括以下各项、与以下各项耦合、或被集成在以下各项内:可穿戴设备,诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统1900是电视机或机顶盒设备,该电视机或机顶盒设备具有一个或多个处理器1902以及由一个或多个图形处理器1908生成的图形界面。
在一些实施例中,该一个或多个处理器1902各自都包括一个或多个处理器核1907,该一个或多个处理器核1907用于处理指令,这些指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核1907中的每个处理器核都被配置成用于处理特定的指令集1909。在一些实施例中,指令集1909可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核1907可各自处理不同的指令集1909,该指令集1909可包括用于促进对其他指令集的仿真的指令。处理器核1907还可包括其他处理设备,诸如数字信号处理器(DSP)。
在一些实施例中,处理器1902包括高速缓存存储器1904。取决于架构,处理器1902可以具有单个内部高速缓存或多级的内部高速缓存。在一些实施例中,高速缓存存储器在处理器1902的各种组件之间被共享。在一些实施例中,处理器1902还使用外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可使用已知的高速缓存一致性技术在处理器核1907之间共享该外部高速缓存。寄存器堆1906被附加地包括在处理器1902中,寄存器堆1906可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可专用于处理器1902的设计。
在一些实施例中,处理器1902与处理器总线1910耦合,以在处理器1902与系统1900中的其他组件之间传送通信信号,这些通信信号诸如地址、数据、或控制信号。在一个实施例中,系统100使用示例性‘中枢’系统架构,该示例性‘中枢’系统架构包括存储器控制器中枢1916和输入输出(I/O)控制器中枢1930。存储器控制器中枢1916促进存储器设备与系统1900的其他组件之间的通信,而I/O控制器中枢(ICH)1930提供经由本地I/O总线至I/O设备的连接。在一个实施例中,存储器控制器中枢1916的逻辑被集成在处理器内。
存储器设备1920可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备、或具有合适的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备1920可以作为用于系统1900的系统存储器来进行操作,以存储数据1922和指令1921以供在一个或多个处理器1902执行应用或进程时使用。存储器控制器中枢1916也与可选的外部图形处理器1912耦合,该可选的外部图形处理器1912可与处理器1902中的一个或多个图形处理器1908通信以执行图形和媒体操作。
在一些实施例中,ICH 1930使外围设备能够经由高速I/O总线而连接至存储器设备1920和处理器1902。I/O外围设备包括但不限于音频控制器1946、固件接口1928、无线收发机1926(例如,Wi-Fi、蓝牙)、数据存储设备1924(例如,硬盘驱动器、闪存等)以及用于将传统(legacy)(例如,个人系统2(PS/2))设备耦合至系统的传统I/O控制器1940。一个或多个通用串行总线(USB)控制器1942连接输入设备(诸如,键盘和鼠标1944的组合)。网络控制器1934还可与ICH 1930耦合。在一些实施例中,高性能网络控制器(未示出)与处理器总线1910耦合。将会领会,所示的系统1900是示例性的而非限制性的,因为也可以使用以不同方式配置的其他类型的数据处理系统。例如,I/O控制器中枢1930可被集成在一个或多个处理器1902内,或者存储器控制器中枢1916和I/O控制器中枢1930可被集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器1912。
图20是处理器2000的示例性实施例的框图,该处理器2000具有一个或多个处理器核2002A-2002N、集成存储器控制器2014以及集成图形处理器2008。图20的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。处理器2000可包括附加的核,这些附加的核多至由虚线框表示的附加核2002N并包括由虚线框表示的附加核2002N。处理器核2002A-2002N中的每一个包括一个或多个内部高速缓存单元2004A-2004N。在一些实施例中,每一个处理器核也具有对一个或多个共享高速缓存单元2006的访问权。
内部高速缓存单元2004A-2004N和共享高速缓存单元2006表示处理器2000内的高速缓存存储器层级结构。高速缓存存储器层级结构可包括每个处理器核内的至少一个级别的指令和数据高速缓存以及一级或多级共享的中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4)、或其他级别的高速缓存,其中,在外部存储器之前的最高级别的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各高速缓存单元2006与2004A-2004N之间的一致性。
在一些实施例中,处理器2000还可包括一个或多个总线控制器单元的集合216和系统代理核2010。一个或多个总线控制器单元216管理外围总线的集合,诸如一个或多个外围组件互连总线(例如,PCI、PCI Express)。系统代理核2010提供对各处理器组件的管理功能。在一些实施例中,系统代理核2010包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器2014。
在一些实施例中,处理器核2002A-2002N中的一个或多个处理器核包括对同步多线程的支持。在此类实施例中,系统代理核210包括用于在多线程处理期间协调并操作核2002A-2002N的组件。系统代理核210可附加地包括功率控制单元(PCU),该功率控制单元包括用于调节处理器核2002A-2002N和图形处理器2008的功率状态的逻辑和组件。
在一些实施例中,处理器2000附加地包括用于执行图形处理操作的图形处理器2008。在一些实施例中,图形处理器2008耦合至共享高速缓存单元的集合2006以及系统代理核2010,该系统代理核2010包括一个或多个集成存储器控制器2014。在一些实施例中,显示控制器2011与图形处理器2008耦合,以将图形处理器输出驱动到一个或多个经耦合的显示器。在一些实施例中,显示控制器2011可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形处理器2008或系统代理核2010内。
在一些实施例中,基于环的互连单元2012用于耦合处理器2000的内部组件。然而,可以使用替代的互连单元,诸如,点到点互连、交换式互连、或其他技术,包括本领域中公知的技术。在一些实施例中,图形处理器208经由I/O链路2013与环形互连2012耦合。
示例性I/O链路2013表示多个各种各样的I/O互连中的至少一种,包括促进各处理器组件与高性能嵌入式存储器模块218(诸如,eDRAM模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核202A-202N中的每个处理器核以及图形处理器208将嵌入式存储器模块218用作共享的末级高速缓存。
在一些实施例中,处理器核2002A-2002N是执行相同指令集架构的同构核。在另一实施例中,处理器核2002A-2002N在指令集架构(ISA)方面是异构的,其中,处理器核2002A-2002N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核2002A-2002N在微架构方面是异构的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。此外,处理器200可实现在一个或多个芯片上,或者除其他组件之外也被实现为具有所图示的组件的SoC集成电路。
图21是图形处理器2100的框图,该图形处理器2100可以是分立式图形处理单元,或者可以是集成有多个处理核的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口2114。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享的外部高速缓存、和/或到系统存储器的接口。
在一些实施例中,图形处理器2100还包括显示控制器2102,该显示控制器2102用于将显示输出数据驱动到显示设备2120。显示控制器2102包括用于显示器的一个或多个叠加平面以及多层的视频或用户界面元素的合成的硬件。在一些实施例中,图形处理器2100包括用于将媒体编码到一种或多种媒体编码格式,从一种或多种媒体编码格式对媒体解码,或在一种或多种媒体编码格式之间对媒体转码的视频编解码器引擎306,这一种或多种媒体编码格式包括但不限于:移动图像专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC)、以及电影和电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如,JPEG、以及运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器2100包括块图像传送(BLIT)引擎2104,用于执行二维(2D)栅格化器操作,包括例如,位边界块传送。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件执行2D图形操作。在一些实施例中,GPE 2110是用于执行图形操作的计算引擎,这些图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 2110包括用于执行3D操作的3D流水线2112,3D操作诸如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D流水线2112包括可编程和固定功能元件,该可编程和固定功能元件执行到3D/媒体子系统315的元件和/或所生成的执行线程内的各种任务。虽然3D流水线2112可用于执行媒体操作,但是GPE 310的实施例还包括媒体流水线2116,该媒体流水线2116专门用于执行媒体操作,诸如,视频后处理和图像增强。
在一些实施例中,媒体流水线2116包括固定功能或可编程逻辑单元用于代替、或代表视频编解码器引擎2106来执行一个或多个专业的媒体操作,诸如,视频解码加速、视频去隔行、以及视频编码加速。在一些实施例中,媒体流水线2116附加地包括线程生成单元以生成用于在3D/媒体子系统2115上执行的线程。所生成的线程在3D/媒体子系统2115中所包括的一个或多个图形执行单元上执行对媒体操作的计算。
在一些实施例中,3D/媒体子系统2115包括用于执行由3D流水线2112和媒体流水线2116生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统2115发送线程执行请求,该3D/媒体子系统2115包括用于对于对可用的线程执行资源的各种请求进行仲裁和分派的线程分派逻辑。执行资源包括用于处理3D线程和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统2115包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,该子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。
图形处理引擎
图22是根据一些实施例的图形处理器的图形处理引擎2210的框图。在一个实施例中,图形处理引擎(GPE)2210是图21中示出的GPE 2210的某个版本。图22的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。例如,图示出图21的3D流水线2212和媒体流水线2216。媒体流水线2216在GPE 2210的一些实施例中是任选的,并且可以不显式地被包括在GPE410内。例如并且在至少一个实施例中,单独的媒体和/或图像处理器被耦合至GPE2210。
在一些实施例中,GPE 2210与命令流转化器2203耦合或包括命令流转化器2203,该命令流转化器2203将命令流提供给3D流水线2112和/或媒体流水线2116。在一些实施例中,命令流转化器2203与存储器耦合,该存储器可以是系统存储器、或内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流转化器2203从存储器接收命令,并将这些命令发送至3D流水线2112和/或媒体流水线2116。这些命令是从环形缓冲器取出的指示,该环形缓冲器存储用于3D流水线2112和媒体流水线2116的命令。在一个实施例中,环形缓冲器可附加地包括存储批量的多个命令的批量命令缓冲器。用于3D流水线2112的命令还可包括对存储在存储器中的数据的引用,这些数据诸如但不限于用于3D流水线2112的顶点数据和几何数据和/或用于媒体流水线2116的图像数据和存储器对象。3D流水线2112和媒体流水线2116通过经由各自流水线内的逻辑执行操作或者通过将一个或多个执行线程分派至图形核阵列2214来处理命令和数据。
在各实施例中,3D流水线2112可以通过处理指令并将执行线程分派给图形核阵列2214来执行一个或多个着色器程序,诸如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核阵列2214提供统一的执行资源块。图形核阵列2214内的多功能执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可执行与多个着色器相关联的多个同步执行线程。
在一些实施例中,图形核阵列2214还包括用于执行诸如视频和/或图像处理的媒体功能的执行逻辑。在一个实施例中,执行单元附加地包括通用逻辑,该通用逻辑可编程以便除了执行图形处理操作之外还执行并行通用计算操作。通用逻辑可与图19的(多个)处理器核1907或图20中的核2002A-2002N内的通用逻辑并行地或结合地执行处理操作。
由在图形核阵列2214上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(URB)2218中的存储器。URB 2218可以存储用于多个线程的数据。在一些实施例中,URB 2218可用于在图形核阵列2214上执行的不同线程之间发送数据。在一些实施例中,URB2218可附加地用于在图形核阵列上的线程与共享功能逻辑2220内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列2214是可缩放的,使得阵列包括可变数量的图形核,每个图形核都具有基于GPE 2210的目标功率和性能等级的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,从而可以根据需要启用或禁用执行资源。
图形核阵列2214与共享功能逻辑2220耦合,该共享功能逻辑2220包括在图形核阵列中的图形核之间被共享的多个资源。共享功能逻辑2220内的共享功能是向图形核阵列2214提供专业的补充功能的硬件逻辑单元。在各实施例中,共享功能逻辑2220包括但不限于采样器2221逻辑、数学2222逻辑和线程间通信(ITC)2223逻辑。另外,一些实施例在共享功能逻辑2220内实现一个或多个高速缓存2225。在对于给定的专业功能的需求不足以包括在图形核阵列2214中的情况下实现共享功能。相反,那个专业功能的单个实例化被实现为共享功能逻辑2220中的独立实体,并且在图形核阵列2214内的执行资源之间被共享。在图形核阵列2214之间被共享并被包括在图形核阵列2214内的确切的功能集因实施例而异。
图23是图形处理器500的另一示例性实施例的框图。图23的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的元件能以与本文中其他地方所描述的方式类似的任何方式操作或运行,但不限于此。
在一些实施例中,图形处理器2300包括环形互连2302、流水线前端2304、媒体引擎2337和图形核2380A-2380N。在一些实施例中,环形互连2302将图形处理器耦合至其他处理单元,这些其他处理单元包括其他图形处理器或者一个或多个通用处理器核。在一些实施例中,图形处理器是集成在多核处理系统内的许多处理器中的一个处理器。
在一些实施例中,图形处理器2300经由环形互连2302接收批量的命令。传入的命令由流水线前端2304中的命令流转化器2303解释。在一些实施例中,图形处理器2300包括用于经由(多个)图形核2380A-2380N来执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流转化器2303将命令供应至几何流水线2336。对于至少一些媒体处理命令,命令流转化器2303将命令供应至视频前端2334,该视频前端2334与媒体引擎2337耦合。在一些实施例中,媒体引擎2337包括用于视频和图像后处理的视频质量引擎(VQE)2330以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)2333引擎。在一些实施例中,几何流水线2336和媒体引擎2337各自生成用于由至少一个图形核2380A提供的线程执行资源的执行线程。
在一些实施例中,图形处理器2300包括可缩放线程执行资源,这些可缩放线程执行资源以模块化核2380A-2380N(有时被称为核切片(core slice))为特征,每个模块化核具有多个子核2350A-2350N、2360A-2360N(有时被称为核子切片(core sub-slice))。在一些实施例中,图形处理器2300可以具有任何数量的图形核2380A至2380N。在一些实施例中,图形处理器2300包括图形核2380A,图形核2380A至少具有第一子核2350A和第二子核2360A。在其他实施例中,图形处理器是具有单个子核(例如,2350A)的低功率处理器。在一些实施例中,图形处理器2300包括多个图形核2380A-2380N,每个图形核包括第一子核2350A-2350N的集合以及第二子核2360A-2360N的集合。第一子核2350A-2350N的集合中的每个子核至少包括执行单元2352A-2352N的第一集合和媒体/纹理采样器2354A-2354N。第二子核2360A-2360N的集合中的每个子核至少包括执行单元2362A-562N的第二集合和采样器2364A-2364N。在一些实施例中,每个子核2350A-2350N、2360A-2360N对共享资源2370A-2370N的集合进行共享。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可被包括在图形处理器的各实施例中。
执行单元
图24图示线程执行逻辑2400,该线程执行逻辑2400包括在GPE的一些示例性实施例中采用的处理元件阵列。图24的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。
在一些实施例中,线程执行逻辑2400包括着色器处理器2402、线程分派器2404、指令高速缓存2406、包括多个执行单元2408A-2408N的可缩放执行单元阵列、采样器2410、数据高速缓存2412、以及数据端口2414。在一个实施例中,可缩放执行单元阵列可通过基于工作负载的计算要求启用或禁用一个或多个执行单元(例如,执行单元2408A、2408B、2408C、2408D,一直到2408N-1和2408N中的任一个)来动态地缩放。在一个实施例中,所包括的组件经由互连结构而互连,该互连结构链接到组件中的每个组件。在一些实施例中,线程执行逻辑2400包括通过指令高速缓存2406、数据端口2414、采样器2410、以及执行单元2408A-2408N中的一个或多个到存储器(诸如,系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,2408A)是能够执行多个同步硬件线程同时针对每个线程并行地处理多个数据元素的独立式可编程通用计算单元。在各实施例中,执行单元2408A-2408N的阵列是可缩放的以包括任何数量的单独执行单元。
在一些实施例中,执行单元2408A-2408N主要用于执行着色器程序。着色器处理器2402可处理各种着色器程序,并且可经由线程分派器2404分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于对来自图形流水线和媒体流水线的线程发起请求进行仲裁并在执行单元2408A-2408N中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线(例如,图23的2336)可将顶点着色器、曲面细分着色器或几何着色器分派到现场执行逻辑2400(图24)以用于处理。在一些实施例中,线程分派器2404还可处理来自执行的着色器程序的运行时间线程生成请求。
在一些实施例中,执行单元2408A-2408N支持包括对许多标准3D图形着色器指令的原生支持的指令集,使得以最小的转换执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。这些执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元2408A-2408N中的每个执行单元都能够进行多发布单指令多数据(SIMD)执行,并且多线程操作在面对较高等待时间的存储器访问时启用高效的执行环境。每个执行单元内的每个硬件线程都具有专用的高带宽寄存器堆和相关的独立线程状态。对于能够进行整数操作、单精度浮点操作和双精度浮点操作、能够具有SIMD分支能力、能够进行逻辑操作、能够进行超越操作和能够进行其他混杂操作的流水线,执行是针对每个时钟多发布的。在等待来自存储器或共享功能之一的数据时,执行单元2408A-2408N内的依赖性逻辑使等待的线程休眠,直到所请求的数据已返回。当等待的线程正在休眠时,硬件资源可致力于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行针对像素着色器、片段着色器或包括不同顶点着色器的另一类型的着色器程序的操作。
执行单元2408A-2408N中的每个执行单元对数据元素的数组进行操作。数据元素的数量是“执行尺寸”、或用于指令的通道数量。执行通道是用于数据元素访问、掩码、和指令内的流控制的执行的逻辑单元。通道的数量可独立于用于特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为紧缩数据类型存储在寄存器中,并且执行单元将基于元素的数据尺寸来处理各个元素。例如,当对256位宽的向量进行操作时,向量的256位被存储在寄存器中,并且执行单元将向量操作为四个单独的64位紧缩数据元素(四字(QW)尺寸数据元素)、八个单独的32位紧缩数据元素(双字(DW)尺寸数据元素)、十六个单独的16位紧缩数据元素(字(W)尺寸的数据元素)、或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)。然而,不同的向量宽度和寄存器尺寸是可能的。
一个或多个内部指令高速缓存(例如,2406)被包括在线程执行逻辑2400中,以对用于执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,2412)被包括,以在线程执行期间对线程数据进行高速缓存。在一些实施例中,采样器2410被包括以为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器2410包括专业的纹理或媒体采样功能,以便在向执行单元提供采样数据之前在采样过程期间处理纹理数据或媒体数据。
在执行期间,图形流水线和媒体流水线经由线程生成和分派逻辑将线程发起请求发送到线程执行逻辑2400。一旦一组几何对象已经被处理并被栅格化为像素数据,着色器处理器2402内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)就被调用以进一步计算输出信息,并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷(stencil)缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值,各顶点属性的值将跨经栅格化的对象而被内插。在一些实施例中,着色器处理器2402内的像素处理器逻辑随后执行应用编程接口(API)供应的像素着色器程序或片段着色器程序。为了执行着色器程序,着色器处理器2402经由线程分派器2404将线程分派至执行单元(例如,2408A)。在一些实施例中,像素着色器2402使用采样器2410中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何数据的算术操作计算针对每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口2414提供存储器访问机制,供线程执行逻辑2400将经处理的数据输出至存储器以便在图形处理器输出流水线上处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存2412),以便对数据进行高速缓存供经由数据端口进行存储器访问。
图25是图示根据一些实施例的图形处理器指令格式2500的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框图示通常被包括在执行单元指令中的组成部分,而虚线包括任选的或仅被包括在指令的子集中的组成部分。在一些实施例中,所描述和图示的指令格式2500是宏指令,因为它们是供应至执行单元的指令,这与产生自一旦指令被处理就进行的指令解码的微指令相反。
在一些实施例中,图形处理器执行单元原生地支持128位指令格式2510的指令。基于所选择的指令、指令选项和操作数数量,64位紧凑指令格式2530可用于一些指令。原生128位指令格式2510提供对所有指令选项的访问,而一些选项和操作在64位指令格式2530中受限。64位指令格式2530中可用的原生指令因实施例而异。在一些实施例中,使用索引字段2513中的索引值的集合将指令部分地压缩。执行单元硬件基于索引值来引用压缩表的集合,并使用压缩表输出来重构128位指令格式2510的原生指令。
针对每种格式,指令操作码2512限定执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行地执行每条指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同步加法操作。默认地,执行单元跨操作数的所有数据通道执行每条指令。在一些实施例中,指令控制字段2514启用对某些执行选项的控制,这些执行选项诸如通道选择(例如,断言)以及数据通道顺序(例如,混合)。针对128位指令格式2510的指令,执行尺寸字段2516限制将被并行地执行的数据通道的数量。在一些实施例中,执行尺寸字段2516不可用于64位紧凑指令格式2530。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0 2520、src12522以及一个目的地操作数2518。在一些实施例中,执行单元支持双目的地指令,其中,双目的地中的一个目的地是隐式的。数据操纵指令可具有第三源操作数(例如,SRC2 2524),其中,指令操作码2512确定源操作数的数量。指令的最后一个源操作数可以是与指令一起传递的立即数(例如,硬编码的)值。
在一些实施例中,128位指令格式2510包括访问/寻址模式字段2526,该访问/寻址模式字段2526例如指定使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,由指令中的位直接提供一个或多个操作数的寄存器地址。
在一些实施例中,128位指令格式2510包括访问/寻址模式字段2526,该访问/寻址模式字段2526指定指令的寻址模式和/或访问模式。在一个实施例中,访问模式用于限定针对指令的数据访问对齐。一些实施例支持包括16字节对齐访问模式和1字节对齐访问模式的访问模式,其中,访问模式的字节对齐确定指令操作数的访问对齐。例如,当处于第一模式时,指令可将字节对齐寻址用于源操作数和目的地操作数,并且当处于第二模式时,指令可将16字节对齐寻址用于所有的源操作数和目的地操作数。
在一个实施例中,访问/寻址模式字段726的寻址模式部分确定指令要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。
在一些实施例中,基于操作码2512位字段对指令进行分组从而简化操作码解码2540。针对8位的操作码,位4、位5、和位6允许执行单元确定操作码的类型。所示出的确切的操作码分组仅是示例。在一些实施例中,移动和逻辑操作码组2542包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组2542共享五个最高有效位(MSB),其中,移动(mov)指令采用0000xxxxb的形式,而逻辑指令采用0001xxxxb的形式。流控制指令组2544(例如,调用(call)、跳转(jmp))包括0010xxxxb(例如,0x20)形式的指令。混杂指令组2546包括指令的混合,包括0011xxxxb(例如,0x30)形式的同步指令(例如,等待(wait)、发送(send))。并行数学指令组2548包括0100xxxxb(例如,0x40)形式的逐分量的算术指令(例如,加、乘(mul))。并行数学组2548跨数据通道并行地执行算术操作。向量数学组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数执行算术,诸如点积计算。
图形流水线
图26是图形处理器800的另一实施例的框图。图26的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。
在一些实施例中,图形处理器2600包括图形流水线2620、媒体流水线2630、显示引擎2640、线程执行逻辑2650、以及渲染输出流水线2670。在一些实施例中,图形处理器2600是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过至一个或多个控制寄存器(未示出)的寄存器写入、或者经由通过环形互连2602发布至图形处理器2600的命令被控制。在一些实施例中,环形互连802将图形处理器2600耦合至其他处理组件,诸如其他图形处理器或通用处理器。来自环形互连802的命令由命令流转化器2603解译,该命令流转化器将指令供应至图形流水线2620或媒体流水线2630的各个组件。
在一些实施例中,命令流转化器2603引导顶点取出器2605的操作,该顶点取出器2605从存储器读取顶点数据,并执行由命令流转化器2603提供的顶点处理命令。在一些实施例中,顶点取出器805将顶点数据提供给顶点着色器2607,该顶点着色器2607对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点取出器805和顶点着色器2607通过经由线程分派器2631将执行线程分派至执行单元2652A-2652B来执行顶点处理指令。
在一些实施例中,执行单元2652A-2652B是具有用于执行图形操作和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元2652A-2652B具有专用于每个阵列或在阵列之间被共享的所附接的L1高速缓存2651。高速缓存可以被配置为数据高速缓存、指令高速缓存、或被分区为在不同分区中包含数据和指令的单个高速缓存。
在一些实施例中,图形流水线2620包括用于执行3D对象的硬件加速曲面细分的曲面细分组件。在一些实施例中,可编程外壳着色器2611配置曲面细分操作。可编程域着色器2617提供对曲面细分输出的后端评估。曲面细分器2613在外壳着色器2611的指示下进行操作,并且包括用于基于粗糙的几何模型来生成详细的几何对象集合的专用逻辑,该粗糙的几何模型作为输入被提供给图形流水线2620。在一些实施例中,如果不使用曲面细分,则可以绕过曲面细分组件(例如,外壳着色器2611、曲面细分器2613和域着色器2617)。
在一些实施例中,完整的几何对象可由几何着色器2619经由被分派至执行单元2652A-2652B的一个或多个线程来处理,或者可以直接行进至裁剪器2629。在一些实施例中,几何着色器对整个几何对象而不是对如在图形流水线的先前的级中那样对顶点或顶点补片进行操作。如果禁用曲面细分,则几何着色器2619从顶点着色器2607接收输入。在一些实施例中,几何着色器2619是可由几何着色器程序编程的以便在曲面细分单元被禁用的情况下执行几何曲面细分。
在栅格化之前,裁剪器2629处理顶点数据。裁剪器2629可以是固定功能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。在一些实施例中,渲染输出流水线2670中的栅格化器和深度测试组件2673分派像素着色器以将几何对象转换为它们的逐像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑2650中。在一些实施例中,应用可绕过栅格化器和深度测试组件2673,并且经由流出单元2623访问未栅格化的顶点数据。
图形处理器2600具有互连总线、互连结构、或允许数据和消息在处理器的主要组件之中传递的某个其他互连机制。在一些实施例中,执行单元2652A-2652B和相关联的(多个)高速缓存2651、纹理和媒体采样器2654、以及纹理/采样器高速缓存2658经由数据端口2656进行互连,以便执行存储器访问并且与处理器的渲染输出流水线组件进行通信。在一些实施例中,采样器2654、高速缓存2651、2658以及执行单元2652A-2652B各自具有单独的存储器访问路径。
在一些实施例中,渲染输出流水线2670包含栅格化器和深度测试组件2673,其将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例中,栅格化器逻辑包括用于执行固定功能三角形和线栅格化的窗口器/掩码器单元。相关联的渲染高速缓存2678和深度高速缓存2679在一些实施例中也是可用的。像素操作组件2677对数据进行基于像素的操作,但是在一些实例中,与2D操作相关联的像素操作(例如,利用混合的位块图像传送)由2D引擎2641执行,或者在显示时由显示控制器2643使用叠加显示平面来代替。在一些实施例中,共享的L3高速缓存2675可用于所有的图形组件,从而允许在无需使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体流水线2630包括媒体引擎2637和视频前端2634。在一些实施例中,视频前端2634从命令流转化器2603接收流水线命令。在一些实施例中,媒体流水线2630包括单独的命令流转化器。在一些实施例中,视频前端2634在将媒体命令发送至媒体引擎2637之前处理该命令。在一些实施例中,媒体引擎2637包括用于生成线程以用于经由线程分派器2631分派至线程执行逻辑2650的线程生成功能。
在一些实施例中,图形处理器2600包括显示引擎2640。在一些实施例中,显示引擎2640在处理器2600外部,并且经由环形互连2602、或某个其他互连总线或结构来与图形处理器耦合。在一些实施例中,显示引擎2640包括2D引擎2641和显示控制器2643。在一些实施例中,显示引擎2640包含能够独立于3D流水线进行操作的专用逻辑。在一些实施例中,显示控制器2643与显示设备(未示出)耦合,该显示设备可以是系统集成显示设备(如在膝上型计算机中)、或者是经由显示设备连接器附接的外部显示设备。
在一些实施例中,图形流水线2620和媒体流水线2630可被配置成用于基于多个图形和媒体编程接口执行操作,并且并非专用于任何一种应用编程接口(API)。在一些实施例中,图形处理器的驱动器软件将专用于特定图形或媒体库的API调用转换成可由图形处理器处理的命令。在一些实施例中,为全部来自Khronos Group的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API提供支持。在一些实施例中,也可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可进行从未来API的流水线到图形处理器的流水线的映射,则具有兼容3D流水线的未来API也将受到支持。
图形流水线编程
图27A是图示根据一些实施例的图形处理器命令格式2700的框图。图27B是图示根据实施例的图形处理器命令序列2710的框图。图27A中的实线框图示一般被包括在图形命令中的组成部分,而虚线包括任选的或仅被包括在图形命令的子集中的组成部分。图27A的示例性图形处理器命令格式2700包括用于标识命令的目标客户端2702、命令操作代码(操作码)2704和命令的相关数据2706的数据字段。子操作码2705和命令尺寸2708也被包括在一些命令中。
在一些实施例中,客户端2702指定图形设备的处理命令数据的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以调整对命令的进一步处理并将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有处理命令的对应的处理流水线。一旦由客户端单元接收到命令,客户端单元就读取操作码2704以及子操作码2705(如果存在)以确定要执行的操作。客户端单元使用数据字段2706内的信息来执行命令。针对一些命令,预期显式的命令尺寸908指定命令的尺寸。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的尺寸。在一些实施例中,经由双字的倍数来对齐命令。
图27B中的流程示出示例性图形处理器命令序列2710。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的某个版本来建立、执行并终止图形操作的集合。仅出于示例性目的示出并描述了样本命令序列,因为实施例不限于这些特定的命令或者该命令序列。而且,命令可以作为批量的命令以命令序列被发布,使得图形处理器将以至少部分同时的方式处理命令序列。
在一些实施例中,图形处理器命令序列910可开始于流水线转储清除命令2712,以便使得任何活跃的图形流水线完成流水线的当前未决命令。在一些实施例中,3D流水线2722和媒体流水线2724不并发地操作。执行流水线转储清除以使得活跃的图形流水线完成任何未决命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活跃的绘画引擎完成未决操作并且相关的读高速缓存被无效。任选地,渲染高速缓存中被标记为“脏”的任何数据可以被转储清除到存储器。在一些实施例中,流水线转储清除命令2712可以用于流水线同步,或者在将图形处理器置于低功率状态之前使用。
在一些实施例中,当命令序列要求图形处理器在流水线之间明确地切换时,使用流水线选择命令2713。在一些实施例中,在发布流水线命令之前在执行上下文中仅需要一次流水线选择命令2713,除非上下文将发布针对两条流水线的命令。在一些实施例中,紧接在经由流水线选择命令2713的流水线切换之前需要流水线转储清除命令2712。
在一些实施例中,流水线控制命令2714配置用于操作的图形流水线,并且用于对3D流水线2722和媒体流水线2724进行编程。在一些实施例中,流水线控制命令2714配置活跃流水线的流水线状态。在一个实施例中,流水线控制命令2714用于流水线同步,并且用于在处理批量的命令之前清除来自活跃流水线内的一个或多个高速缓存存储器的数据。
在一些实施例中,用于返回缓冲器状态2716的命令用于配置用于相应流水线的返回缓冲器的集合以写入数据。一些流水线操作需要分配、选择或配置一个或多个返回缓冲器,在处理期间操作将中间数据写入这一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出数据并且执行跨线程通信。在一些实施例中,配置返回缓冲器状态2716包括选择要用于流水线操作的集合的返回缓存器的尺寸和数量。
命令序列中的剩余命令基于用于操作的活跃流水线而不同。基于流水线判定2720,命令序列被定制用于以3D流水线状态2730开始的3D流水线2722、或者在媒体流水线状态2740处开始的媒体流水线2724。
用于配置3D流水线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及将在处理3D基元命令之前配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于使用中的特定3D API来确定。在一些实施例中,如果将不使用某些流水线元件,则3D流水线状态2730命令还能够选择性地禁用或绕过那些元件。
在一些实施例中,3D基元2732命令用于提交待由3D流水线处理的3D基元。经由3D基元2732命令传递给图形处理器的命令和相关联的参数被转发到图形流水线中的顶点取出功能。顶点取出功能使用3D基元2732命令数据来生成多个顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D基元2732命令用于经由顶点着色器对3D基元执行顶点操作。为了处理顶点着色器,3D流水线2722将着色器执行线程分派至图形处理器执行单元。
在一些实施例中,经由执行2734命令或事件触发3D流水线2722。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的“去往(go)”或“踢除(kick)”命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以便通过图形流水线来转储清除命令序列。3D流水线将执行针对3D基元的几何处理。一旦操作完成,就对所得到的几何对象进行栅格化,并且像素引擎对所得到的像素进行着色。对于那些操作,还可以包括用于控制像素着色和像素后端操作的附加命令。
在一些实施例中,当执行媒体操作时,图形处理器命令序列2710遵循媒体流水线2724路径。一般地,针对媒体流水线2724进行编程的特定用途和方式取决于待执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可以被转移到媒体流水线。在一些实施例中,还可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用计算着色器程序来执行SIMD向量操作,这些计算着色器程序并不明确地与图形基元的渲染相关。
在一些实施例中,以与3D流水线2722类似的方式配置媒体流水线2724。将用于配置媒体流水线状态2740的命令集合分派或放置到命令队列中,在媒体对象命令2742之前。在一些实施例中,用于媒体流水线状态的命令2740包括用于配置媒体流水线元件的数据,这些媒体流水线元件将用于处理媒体对象。这包括用于在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,用于媒体流水线状态的命令2740还支持使用指向包含批量的状态设置的“间接”状态元件的一个或多个指针。
在一些实施例中,媒体对象命令2742供应指向用于由媒体流水线处理的媒体对象的指针。媒体对象包括存储器缓冲器,该存储器缓冲器包含待处理的视频数据。在一些实施例中,在发布媒体对象命令2742之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令2742被排队,就经由执行命令2744或等效的执行事件(例如,寄存器写入)来触发媒体流水线924。随后可通过由3D流水线2722或媒体流水线2724提供的操作对来自媒体流水线2724的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图28图示根据一些实施例的用于数据处理系统2800的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用2810、操作系统2820、以及至少一个处理器2830。在一些实施例中,处理器2830包括图形处理器2832以及一个或多个通用处理器核2834。图形应用2810和操作系统2820各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用2810包含一个或多个着色器程序,这一个或多个着色器程序包括着色器指令2812。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。应用还包括采用适于由通用处理器核2834执行的机器语言的可执行指令2814。应用还包括由顶点数据限定的图形对象1016。
在一些实施例中,操作系统2820是来自微软公司的 操作系统、专属的类UNIX操作系统、或使用Linux内核的变体的开源的类UNIX操作系统。操作系统1020可支持图形API 2822,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3DAPI正在使用时,操作系统2820使用前端着色器编译器2824以将采用HLSL的任何着色器指令2812编译成较低级的着色器语言。编译可以是即时(JIT)编译,或者应用可执行着色器预编译。在一些实施例中,在3D图形应用2810的编译期间,将高级着色器编译成低级着色器。在一些实施例中,着色器指令2812以中间形式提供,诸如由Vulkan API使用的标准便携式中间表示(SPIR)的某个版本。
在一些实施例中,用户模式图形驱动器2826包含后端着色器编译器2827,该后端着色器编译器2827用于将着色器指令2812转换成硬件专用表示。当OpenGL API在使用中时,将采用GLSL高级语言的着色器指令2812传递至用户模式图形驱动器2826以用于编译。在一些实施例中,用户模式图形驱动器2826使用操作系统内核模式功能2828来与内核模式图形驱动器2829进行通信。在一些实施例中,内核模式图形驱动器2829与图形处理器2832通信以分派命令和指令。
IP核实现方式
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码实现,该机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可以使机器制造用于执行本文所述的技术的逻辑。这类表示(被称为“IP核”)是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为描述集成电路的结构的硬件模型而被存储在有形的、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造机器上加载硬件模型的各消费者或制造设施。可以制造集成电路,使得电路执行与本文中描述的实施例中的任一实施例相关联地描述的操作。
图29是图示根据实施例的IP核开发系统1100的框图,该IP核开发系统1100可以用于制造集成电路以执行操作。IP核开发系统1100可以用于生成可并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计设施2930可生成采用高级编程语言(例如,C/C++)的IP核设计的软件仿真2910。软件仿真2910可用于使用仿真模型2912来设计、测试并验证IP核的行为。仿真模型2912可以包括功能仿真、行为仿真和/或时序仿真。随后可从仿真模型2912创建或合成寄存器传输级(RTL)设计2915。RTL设计2915是对硬件寄存器之间的数字信号的流进行建模的集成电路(包括使用建模的数字信号执行的相关联的逻辑)的行为的抽象。除了RTL设计2915之外,还可以创建、设计或合成逻辑级或晶体管级的较低级别设计。由此,初始设计和仿真的特定细节可有所不同。
可以由设计设施进一步将RTL设计2915或等效方案合成到硬件模型2920中,该硬件模型2920可以采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可使用非易失性存储器2940(例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核设计以用于递送至第三方制造设施2965。替代地,可以通过有线连接2950或无线连接2960(例如,经由因特网)来传输IP核设计。制造设施2965随后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可被配置用于执行根据本文中描述的至少一个实施例的操作。
示例性芯片上系统集成电路
图30-图32图示根据本文中所述的各实施例的可以使用一个或多个IP核制造的示例性集成电路和相关联的图形处理器。除了所图示的内容之外,还可以包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图30是图示根据实施例的可以使用一个或多个IP核制造的示例性芯片上系统集成电路3000的框图。示例性集成电路1200包括一个或多个应用处理器3005(例如,CPU)、至少一个图形处理器3010,并且可附加地包括图像处理器3015和/或视频处理器3020,其中的任一个都可以是来自相同设计设施或多个不同设计设施的模块化IP核。集成电路3000包括外围或总线逻辑,包括USB控制器1225、UART控制器3030、SPI/SDIO控制器3035和I2S/I2C控制器3040。另外,集成电路可包括显示设备3045,该显示设备3045耦合至高清晰度多媒体接口(HDMI)控制器1250和移动行业处理器接口(MIPI)显示接口3055中的一个或多个。可以由闪存子系统3060(包括闪存和闪存控制器)来提供存储。可以经由存储器控制器1265来提供存储器接口以获得对SDRAM或SRAM存储器设备的访问。一些集成电路附加地包括嵌入式安全引擎3070。
图31是图示根据实施例的可以使用一个或多个IP核制造的芯片上系统集成电路的示例性图形处理器3110的框图。图形处理器3110可以是图30的图形处理器3010的变体。图形处理器3110包括顶点处理器3105以及一个或多个片段处理器3115A-3115N(例如,3115A、3115B、3115C、3115D,一直到3115N-1和3115N)。图形处理器3110可以经由单独的逻辑执行不同的着色器程序,使得顶点处理器3105被优化以执行用于顶点着色器程序的操作,而一个或多个片段处理器3115A-3115N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器3105执行3D图形流水线的顶点处理级,并生成基元数据和顶点数据。(多个)片段处理器3115A-3115N使用由顶点处理器3105生成的基元数据和顶点数据来产生被显示在显示设备上的帧缓冲器。在一个实施例中,(多个)片段处理器3115A-3115N被优化以执行如在OpenGL API中提供的片段着色器程序,这些片段着色器程序可以用于执行与如在Direct 3D API中提供的像素着色器程序类似的操作。
图形处理器3110附加地包括一个或多个存储器管理单元(MMU)3120A-3120B、(多个)高速缓存3125A-3125B以及(多个)电路互连3130A-3130B。这一个或多个MMU 3120A-3120B为图形处理器3110(包括为顶点处理器1305和/或(多个)片段处理器3115A-3115N)提供虚拟到物理地址映射,除了存储在一个或多个高速缓存3125A-3125B中的顶点数据或图像/纹理数据之外,该虚拟到物理地址映射还可以引用存储在存储器中的顶点数据或图像/纹理数据。在一个实施例中,一个或多个MMU 3120A-3120B可以与系统内的其他MMU同步,使得每个处理器3005-3020可以参与共享或统一的虚拟存储器系统,系统内的其他MMU包括与图30的一个或多个应用处理器3005、图像处理器3015和/或视频处理器3020相关联的一个或多个MMU。根据实施例,一个或多个电路互连3130A-3130B使得图形处理器3110能够经由SoC的内部总线或经由直接连接来与SoC内的其他IP核对接。
图32是图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的附加示例性图形处理器3210的框图。图形处理器3210可以是图30的图形处理器3010的变体。图形处理器3210包括图31的集成电路3100的一个或多个MMU 3120A-3120B、(多个)高速缓存3125A-3125B以及(多个)电路互连3130A-1330B。
图形处理器3210包括一个或多个着色器核3215A-3215N(例如,3215A、3215B、3215C、3215D、3215E、3215F至3215N-1以及3115N),这一个或多个着色器核提供统一着色器核架构,在该统一着色器核架构中,单个核或类型或核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可以在实施例和实现方式之间有所变化。另外,图形处理器3210包括核间任务管理器3205和分片单元(tiling unit)3218,核间任务管理器3205充当线程分派器以将执行线程分派给一个或多个着色器核3215A-3215N,分片单元3218用于加速分片操作以供进行基于片的渲染,在基于片的渲染中,针对场景的渲染操作被细分在图像空间中,例如,以此来利用场景内的局部空间一致性,或以此来优化内部高速缓存的使用。
本发明的示例和实施例包括用于使用依赖树来增强二进制权重神经网络的装置、系统和方法。
根据一个示例,一种增强具有二进制权重的卷积神经网络(CNN)的方法,该方法包括:为所获得的二进制张量构建树,该树具有多个节点,这些节点开始于CNN的每层中的根节点;在树的根节点处计算输入特征图与输入二进制张量的卷积;以及从树的根节点搜索下一节点并使用在树的根节点处计算出的先前的卷积结果在下一节点处计算卷积。
在一个示例中,方法进一步包括:从根节点开始,对于从树的根节点开始的所有节点,重复对下一节点的搜索;以及使用先前的卷积结果在每个下一节点处计算卷积。
在一个示例中,重复对下一节点的搜索包括对树进行遍历以渐进地在该树的每个节点处计算卷积。
在一个示例中,重复对下一节点的搜索包括将在先的卷积结果用作每个节点处的卷积结果的基线。
在一个示例中,构建树包括构建最小生成树。
在一个示例中,构建树包括构建从根节点到树的顶点中的每个顶点具有最短距离的树。
在一个示例中,构建树包括通过使用普里姆算法来构建树。
在一个示例中,方法进一步包括在构建树之前确定多个二进制张量和缩放因子对。
在一个示例中,方法进一步包括迭代地确定附加二进制张量和缩放因子对,并且基于这些附加二进制张量和缩放因子对来更新近似残差以找到最大网络效率。
在一个示例中,方法进一步包括通过确定二进制张量的基础和一系列缩放因子来对CNN的经训练的过滤器进行近似。
在一个示例中,确定二进制张量的基础和一系列缩放因子对包括确定多个二进制近似,其中,每个近似是不同二进制张量的组合,并且每个二进制张量与缩放因子对配对。
在一个示例中,每个二进制张量表示相应的近似残差的符号,并且每个缩放因子对表示对应的平均大小。
在一个示例中,二进制张量和缩放因子对包括二进制结构。
在一个示例中,方法进一步包括:在CNN中使用二进制结构,以经由张量扩展产生二进制权重模型。
根据一个示例,一种机器可读介质包括指令,在由机器对这些指令进行操作时,这些指令使得该机器根据以上示例中的任何一项或多项来进行操作。
根据一个示例,一种装置包括存储器、神经网络和处理器。该存储器用于存储输入初始结果、中间结果、以及最终结果。处理器用于使得神经网络根据以上示例中的一项或多项来进行操作、将神经网络优化成用于根据以上示例中的一项或多项来进行操作、或将神经网络配置成用于根据以上示例中的一项或多项来进行操作。
根据一个示例,一种设备包括:用于存储输入初始结果、中间结果和最终结果的存储器装置;以及用于执行如以上示例中任何一项或多项所述的方法的逻辑装置。
根据一个示例,一种数据处理系统包括处理核、I/O中枢控制器、以及图形处理器。处理核被配置成用于实现经训练的卷积神经网络(CNN)。I/O中枢控制器耦合至处理核并被配置成用于提供网络、数据存储以及对处理核的访问。图形处理器耦合至I/O中枢控制器并被配置成用于:为所获得的二进制张量构建树,该树具有多个节点,这些节点开始于CNN的每层中的根节点;在树的根节点处计算输入特征图与输入二进制张量的卷积;以及从树的根节点搜索下一节点并使用在树的根节点处计算出的先前的卷积结果在下一节点处计算卷积。
在一个示例中,图形处理器进一步被配置成用于:从根节点开始,对于从树的根节点开始的所有节点,重复对下一节点的搜索;以及使用先前的卷积结果在每个下一节点处计算卷积。
在一个示例中,图形处理器进一步被配置成用于对树进行遍历以渐进地在该树的每个节点处计算卷积。
在一个示例中,图形处理器进一步被配置成用于重复对下一节点的搜索,包括将在先的卷积结果用作每个节点处的卷积结果的基线。
在一个示例中,图形处理器进一步被配置成用于构建最小生成树。
在一个示例中,图形处理器进一步被配置成用于构建从根节点到树的顶点中的每个顶点具有最短距离的树。
在一个示例中,图形处理器进一步被配置成用于通过使用普里姆算法来构建树。
在一个示例中,图形处理器进一步被配置成用于在构建树之前确定多个二进制张量和缩放因子对。
在一个示例中,图形处理器进一步被配置成用于迭代地确定附加二进制张量和缩放因子对,并且用于基于这些附加二进制张量和缩放因子对来更新近似残差以找到最大网络效率。
在一个示例中,图形处理器进一步被配置成用于通过确定二进制张量的基础和一系列缩放因子来对CNN的经训练的过滤器进行近似。
在一个示例中,图形处理器进一步被配置成用于确定多个二进制近似,其中,每个近似是不同二进制张量的组合,并且每个二进制张量与缩放因子对配对。
在一个示例中,每个二进制张量表示相应的近似残差的符号,并且每个缩放因子对表示对应的平均大小。
在一个示例中,二进制张量和缩放因子对包括二进制结构。
在一个示例中,图形处理器进一步被配置成用于在CNN中使用二进制结构以经由张量扩展产生二进制权重模型。
前述描述和附图应当被认为是说明性的,而不是限制性的。可在不背离如在所附权利要求书中所阐述的本发明较宽泛的精神和范围的情况下对本文中所描述的示例和实施例作出各种修改和改变。

Claims (31)

1.一种增强具有二进制权重的卷积神经网络(CNN)的方法,包括:
为所获得的二进制张量构建树,所述树具有多个节点,所述多个节点开始于所述CNN的每层中的根节点;
在所述树的所述根节点处计算输入特征图与输入二进制张量的卷积;以及
从所述树的所述根节点搜索下一节点,并且使用在所述树的所述根节点处所计算出的先前的卷积结果在所述下一节点处计算卷积。
2.如权利要求1所述的方法,进一步包括:
从根节点开始,对于从所述树的所述根节点开始的所有节点,重复对下一节点的搜索;以及
使用先前的卷积结果在每个下一节点处计算卷积。
3.如权利要求2所述的方法,其中,重复对下一节点的搜索包括对所述树进行遍历以渐进地在所述树的每个节点处计算卷积。
4.如权利要求2所述的方法,其中,重复对下一节点的搜索包括将在先的卷积结果用作每个节点处的卷积结果的基线。
5.如权利要求1所述的方法,其中,构建所述树包括构建最小生成树。
6.如权利要求1所述的方法,其中,构建所述树包括构建从所述根节点到所述树的顶点中的每个顶点具有最短距离的所述树。
7.如权利要求6所述的方法,其中,构建所述树包括通过使用普里姆算法来构建所述树。
8.如权利要求1所述的方法,进一步包括:
在构建所述树之前确定多个二进制张量和缩放因子对。
9.如权利要求8所述的方法,进一步包括:
迭代地确定附加二进制张量和缩放因子对,并且基于所述附加二进制张量和缩放因子对来更新近似残差以找到最大网络效率。
10.如权利要求8所述的方法,进一步包括:
通过确定二进制张量的基础和一系列缩放因子来对所述CNN的经训练的过滤器进行近似。
11.如权利要求10所述的方法,其中,确定二进制张量的基础和一系列缩放因子对包括确定多个二进制近似,其中,每个近似是不同二进制张量的组合,并且每个二进制张量与缩放因子对配对。
12.如权利要求11所述的方法,其中,每个二进制张量表示相应的近似残差的符号,并且每个缩放因子对表示对应的平均大小。
13.如权利要求11所述的方法,其中,所述二进制张量和缩放因子对包括二进制结构。
14.如权利要求13所述的方法,进一步包括:
在所述CNN中使用所述二进制结构,以经由张量扩展产生二进制权重模型。
15.一种机器可读介质,包括指令,在由机器对所述指令进行操作时,所述指令使所述机器执行如权利要求1至14中任何一项或多项所述的方法。
16.一种装置,包括:
存储器,用于存储输入初始结果、中间结果、以及最终结果;
神经网络;以及
处理器,用于使得所述神经网络执行、将所述神经网络优化成用于执行、或将所述神经网络配置成用于执行如权利要求1至14中任何一项或多项所述的方法。
17.一种设备,包括:
存储器装置,用于存储输入初始结果、中间结果、以及最终结果;以及
逻辑装置,用于执行如权利要求1至14中任何一项或多项所述的方法。
18.一种数据处理系统,包括:
处理核,被配置成用于实现经训练的卷积神经网络(CNN);
I/O中枢控制器,耦合至所述处理核并被配置成用于提供网络、数据存储以及对所述处理核的访问;
图形处理器,耦合至所述I/O中枢控制器并被配置成用于:
为所获得的二进制张量构建树,所述树具有多个节点,所述多个节点开始于所述CNN的每层中的根节点;
在所述树的所述根节点处计算输入特征图与输入二进制张量的卷积;以及
从所述树的所述根节点搜索下一节点,并且使用在所述树的所述根节点处所计算出的先前的卷积结果在所述下一节点处计算卷积。
19.如权利要求18所述的数据处理系统,其中,所述图形处理器进一步被配置成用于:从根节点开始,对于从所述树的所述根节点开始的所有节点,重复对下一节点的搜索,并使用先前的卷积结果在每个下一节点处计算卷积。
20.如权利要求19所述的数据处理系统,其中,所述图形处理器进一步被配置成用于对所述树进行遍历以渐进地在所述树的每个节点处计算卷积。
21.如权利要求19所述的数据处理系统,其中,所述图形处理器进一步被配置成用于重复对下一节点的搜索,包括将在先的卷积结果用作每个节点处的卷积结果的基线。
22.如权利要求18所述的数据处理系统,其中,所述图形处理器进一步被配置成用于构建最小生成树。
23.如权利要求18所述的数据处理系统,其中,所述图形处理器进一步被配置成用于构建从所述根节点到所述树的顶点中的每个顶点具有最短距离的所述树。
24.如权利要求23所述的数据处理系统,其中,所述图形处理器进一步被配置成用于通过使用普里姆算法来构建所述树。
25.如权利要求18所述的数据处理系统,其中,所述图形处理器进一步被配置成用于在构建所述树之前确定多个二进制张量和缩放因子对。
26.如权利要求25所述的数据处理系统,其中,所述图形处理器进一步被配置成用于迭代地确定附加二进制张量和缩放因子对,并且用于基于所述附加二进制张量和缩放因子对来更新近似残差以找到最大网络效率。
27.如权利要求26所述的数据处理系统,其中,所述图形处理器进一步被配置成用于通过确定二进制张量的基础和一系列缩放因子来对所述CNN的经训练的过滤器进行近似。
28.如权利要求27所述的数据处理系统,其中,所述图形处理器进一步被配置成用于确定多个二进制近似,其中,每个近似是不同二进制张量的组合,并且每个二进制张量与缩放因子对配对。
29.如权利要求28所述的数据处理系统,其中,每个二进制张量表示相应的近似残差的符号,并且每个缩放因子对表示对应的平均大小。
30.如权利要求18所述的数据处理系统,其中,所述二进制张量和缩放因子对包括二进制结构。
31.如权利要求30所述的数据处理系统,其中,所述图形处理器进一步被配置成用于在所述CNN中使用所述二进制结构,以经由张量扩展来产生二进制权重模型。
CN201880026996.XA 2017-05-23 2018-05-23 用于使用依赖树来增强二进制权重神经网络的方法和装置 Pending CN110574044A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762510075P 2017-05-23 2017-05-23
US62/510,075 2017-05-23
PCT/US2018/034088 WO2018217863A1 (en) 2017-05-23 2018-05-23 Methods and apparatus for enhancing a binary weight neural network using a dependency tree

Publications (1)

Publication Number Publication Date
CN110574044A true CN110574044A (zh) 2019-12-13

Family

ID=64395971

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880026996.XA Pending CN110574044A (zh) 2017-05-23 2018-05-23 用于使用依赖树来增强二进制权重神经网络的方法和装置

Country Status (4)

Country Link
US (1) US11704569B2 (zh)
EP (1) EP3631691A4 (zh)
CN (1) CN110574044A (zh)
WO (1) WO2018217863A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111145076A (zh) * 2019-12-27 2020-05-12 深圳鲲云信息科技有限公司 数据并行化处理方法、系统、设备及存储介质
CN112952814A (zh) * 2021-03-04 2021-06-11 四川云起老和科技有限公司 一种考虑城镇生长特性的区域能源互联网演化模拟方法
CN113362409A (zh) * 2021-05-28 2021-09-07 北京百度网讯科技有限公司 图像上色及其模型训练方法、装置、电子设备、存储介质
CN115328579A (zh) * 2022-10-11 2022-11-11 山东海量信息技术研究院 神经网络训练的调度方法、系统及计算机可读存储介质
CN115796239A (zh) * 2022-12-14 2023-03-14 北京登临科技有限公司 Ai算法架构的实现装置、卷积计算单元及相关方法与设备

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
CN107169563B (zh) * 2017-05-08 2018-11-30 中国科学院计算技术研究所 应用于二值权重卷积网络的处理系统及方法
US11734567B2 (en) * 2018-02-13 2023-08-22 Samsung Electronics Co., Ltd. Method and system for reducing deep neural network architectures
CN110826721A (zh) * 2018-08-09 2020-02-21 松下电器(美国)知识产权公司 信息处理方法及信息处理系统
US11055854B2 (en) * 2018-08-23 2021-07-06 Seoul National University R&Db Foundation Method and system for real-time target tracking based on deep learning
US11032063B2 (en) 2018-09-19 2021-06-08 International Business Machines Corporation Distributed platform for computation and trusted validation
US11940978B2 (en) * 2018-09-19 2024-03-26 International Business Machines Corporation Distributed platform for computation and trusted validation
US11588499B2 (en) * 2018-11-05 2023-02-21 Samsung Electronics Co., Ltd. Lossless compression of neural network weights
US11030168B2 (en) * 2018-12-11 2021-06-08 Sap Se Parallelization of order dependent procedures during software change processes
US11823389B2 (en) * 2018-12-20 2023-11-21 Qatar Foundation For Education, Science And Community Development Road network mapping system and method
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
US10970911B2 (en) * 2019-02-21 2021-04-06 Facebook Technologies, Llc Graphics processing chip with machine-learning based shader
US11182890B2 (en) * 2019-03-01 2021-11-23 Husky Oil Operations Limited Efficient system and method of determining a permeability ratio curve
CN110689116B (zh) * 2019-09-24 2022-12-27 安徽寒武纪信息科技有限公司 一种神经网络剪枝方法、装置、计算机设备及存储介质
EP4049190A4 (en) 2019-10-25 2023-11-01 Intrinsic Innovation LLC METHOD AND SYSTEM FOR QUERY TRAINING
CN111526057B (zh) * 2020-04-30 2022-10-25 西安邮电大学 一种基于业务类型的网络切片可靠性映射方法
US20210390386A1 (en) * 2020-06-12 2021-12-16 Xinlin LI Low resource computational block for a trained neural network
US11113601B1 (en) * 2020-06-30 2021-09-07 Moffett Technologies Co., Limited Method and system for balanced-weight sparse convolution processing
US11423600B2 (en) * 2020-07-24 2022-08-23 Qualcomm Incorporated Methods and apparatus for configuring a texture filter pipeline for deep learning operation
CN112001923B (zh) * 2020-11-02 2021-01-05 中国人民解放军国防科技大学 一种视网膜图像分割方法及装置
US11599360B2 (en) 2020-12-14 2023-03-07 Cognitive Science & Solutions, Inc. AI synaptic coprocessor
CN112733040B (zh) * 2021-01-27 2021-07-30 中国科学院地理科学与资源研究所 一种旅游行程推荐方法
US11436793B1 (en) 2021-02-12 2022-09-06 Facebook Technologies, Llc Systems and methods for graphics rendering based on machine learning
CN116992945B (zh) * 2023-09-27 2024-02-13 之江实验室 一种基于贪心策略反向通道剪枝的图像处理方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387773B2 (en) * 2014-10-27 2019-08-20 Ebay Inc. Hierarchical deep convolutional neural network for image classification
US9563825B2 (en) 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
US9633306B2 (en) 2015-05-07 2017-04-25 Siemens Healthcare Gmbh Method and system for approximating deep neural networks for anatomical object detection

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111145076A (zh) * 2019-12-27 2020-05-12 深圳鲲云信息科技有限公司 数据并行化处理方法、系统、设备及存储介质
CN112952814A (zh) * 2021-03-04 2021-06-11 四川云起老和科技有限公司 一种考虑城镇生长特性的区域能源互联网演化模拟方法
CN112952814B (zh) * 2021-03-04 2022-12-09 四川云起老和科技有限公司 一种考虑城镇生长特性的区域能源互联网演化模拟方法
CN113362409A (zh) * 2021-05-28 2021-09-07 北京百度网讯科技有限公司 图像上色及其模型训练方法、装置、电子设备、存储介质
CN113362409B (zh) * 2021-05-28 2023-10-31 北京百度网讯科技有限公司 图像上色及其模型训练方法、装置、电子设备、存储介质
CN115328579A (zh) * 2022-10-11 2022-11-11 山东海量信息技术研究院 神经网络训练的调度方法、系统及计算机可读存储介质
CN115328579B (zh) * 2022-10-11 2023-02-24 山东海量信息技术研究院 神经网络训练的调度方法、系统及计算机可读存储介质
CN115796239A (zh) * 2022-12-14 2023-03-14 北京登临科技有限公司 Ai算法架构的实现装置、卷积计算单元及相关方法与设备
CN115796239B (zh) * 2022-12-14 2023-10-31 北京登临科技有限公司 Ai算法架构的实现装置、卷积计算装置及相关方法与设备

Also Published As

Publication number Publication date
US11704569B2 (en) 2023-07-18
EP3631691A1 (en) 2020-04-08
US20200167654A1 (en) 2020-05-28
EP3631691A4 (en) 2021-03-31
WO2018217863A1 (en) 2018-11-29

Similar Documents

Publication Publication Date Title
US11704569B2 (en) Methods and apparatus for enhancing a binary weight neural network using a dependency tree
US11640526B2 (en) Methods and apparatus for enhancing a neural network using binary tensor and scale factor pairs
US11468541B2 (en) Compute optimizations for low precision machine learning operations
US11893490B2 (en) Incremental precision networks using residual inference and fine-grain quantization
US20220343174A1 (en) Optimized compute hardware for machine learning operations
EP3396534B1 (en) Specialized fixed function hardware for efficient convolution
EP3671439B1 (en) Compute optimizations for neural networks
JP7494197B2 (ja) 行列アクセラレータアーキテクチャ内のシストリック分解

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