CN115698937A - 用于深度学习任务调度的硬件电路 - Google Patents
用于深度学习任务调度的硬件电路 Download PDFInfo
- Publication number
- CN115698937A CN115698937A CN202180006557.4A CN202180006557A CN115698937A CN 115698937 A CN115698937 A CN 115698937A CN 202180006557 A CN202180006557 A CN 202180006557A CN 115698937 A CN115698937 A CN 115698937A
- Authority
- CN
- China
- Prior art keywords
- layer
- engine
- fixed function
- index
- dependency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
描述了用于在硬件中调度深度学习任务的装置、系统和技术。一个加速器电路包括多个固定功能电路,每个电路处理不同层类型的神经网络。调度器电路接收与由各个固定功能电路处理的各个层相关联的状态信息和指示各个层的层依赖条件的依赖关系信息。调度器电路使用状态信息和依赖关系信息确定满足层依赖条件,并且使固定功能电路能够在相应的固定功能电路处处理当前层。
Description
技术领域
至少一个实施例涉及处理用于执行和促进人工智能的资源。例如,至少一个实施例涉及用于深度学习任务调度的硬件电路。
背景技术
在许多情况下,深度学习推理的大部分计算工作都基于数学运算,这些运算通常可分为四个部分:卷积、激活、池化和归一化。这些操作有一些共同的特点,使它们特别适合于硬件实现:它们的内存访问模式是可预测的,并且易于并行化。但是,硬件实现可能会受到此类操作的低效调度的影响,导致在此类硬件上深度学习推理的性能不理想。因此,有必要解决此类硬件中的此类和其他缺陷。
附图说明
图1是根据至少一些实施例的具有用于调度固定功能电路的硬件调度器电路的加速器核心的框图;
图2是根据至少一些实施例的用于解决在三个固定功能引擎上调度执行多层的依赖关系的调度算法的流程图;
图3是根据至少一些实施例的具有多个引擎调度器电路的硬件调度器电路的框图;
图4是根据至少一些实施例的硬件调度器电路的硬件状态机的图;
图5是根据至少一些实施例的与将由第一固定功能引擎执行的第一层相关联的示例图节点;
图6是根据至少一些实施例,根据依赖条件调度神经网络层的方法的流程图;
图7是根据至少一些实施例的深度学习加速器(DLA)系统的框图;和
图8是根据至少一些实施例的DLA系统的框图。
具体实施方式
如上所述,深度学习推理基于非常适合硬件实现的操作。深度学习加速器(DLA)电路,如深度学习加速器(NVDLA),可通过提供加速核心深度学习操作的构建块来解决推理的计算需求。深度学习加速器可用于加速不同的神经网络,如卷积神经网络(CNN)、递归神经网络(RNN)、全连接神经网络等。这些神经网络可能具有非常不同的结构,可能不遵循任何预定义的网络结构,并且新的神经网络正在定期引入。
目前,DLA电路对这些神经网络中不同类型的层使用固定功能引擎(在本文中也称为固定功能单元或固定功能电路),例如用于卷积、激活功能、池化、批归一化等的固定功能引擎。应当注意的是,从算法角度来看的神经网络可以用一组层(在本文中称为“原始层”)来指定,例如偏置和批归一化。这些原始层可以被编译或转换成另一组层(本文中称为“硬件层”),其中每个硬件层被用作在加速器电路上执行调度的基本元素。原始层和硬件层之间的映射可以是m:n,其中m是原始层的数量,n是硬件层的数量。例如,神经网络中的原始层偏差、批归一化和局部响应归一化(LRN),例如校正线性单元(ReLU),可以编译成一个硬件层。在这种情况下,m:n是3:1。每个硬件层都可以用一条基本硬件指令来表示,用于其中一个固定功能引擎执行操作,并且每个层通过内存接口与另一层通信。例如,第一层可以由第一固定功能引擎执行,该引擎接收输入张量,对输入张量执行操作以生成输出张量,并将输出张量存储在系统存储器中,例如耦合到加速器的动态随机存取存储器(DRAM)。第二层可由第二固定函数引擎执行,该引擎从存储器接收来自第一层的输出张量作为第二输入张量,对第二输入张量执行操作以生成第二输出张量,并将第二输出张量存储在DRAM中。每次通信都会在内存接口中引入张量读取操作和张量写入操作。
这些固定功能引擎可通过连接到DLA电路的主机中央处理器(CPU)进行调度。或者,这些固定功能引擎可以通过固件在本地调度,以确保最小延迟。固件通过处理层间的依赖关系来调度这些层,因为一个或更多个层的输出可以作为下一层的输入。除非层的输入准备就绪,否则层无法开始执行。负责在引擎上调度这些层的固件调度器需要在所有类型的神经网络中通用,并且不需要对不同的网络类型进行更改,同时将理论调度延迟保持在大约为零,以实现DLA电路的最大利用率。一个固件调度器可以更新它所依赖的每个层的依赖项计数。固件调度器可以跟踪系统内存中的依赖项计数,并为每个层事件读取和写入系统内存(例如DRAM)中的依赖项计数。对于DLA电路来说,读写操作是代价高昂的操作,由于系统内存中的数据不能保持为只读,因此会导致延迟增加和可能的安全问题。由于需要更新依赖项计数的层的数量不是固定的,并且每次更新都取决于当时可用的系统内存带宽,因此延迟是可变的,对于跟踪和更新调度层的依赖项计数来说,延迟可能很高。
本发明的方面和实施例通过描述(例如)实现基于硬件的依赖性算法的方法和系统来解决这些和其他挑战。在至少一个实施例中,基于硬件的依赖性算法使用一个简单属性,即一次只能在一个引擎上执行一个层。一个引擎仅在前一层完成后才执行相同类型的层。例如,执行卷积层的操作的第一固定功能引擎不能执行激活层的操作。类似地,执行激活层的操作的第二固定函数引擎不能执行卷积层的操作。基于硬件的依赖性算法可以使用引擎上正在执行的当前层的索引作为基于此简单属性的依赖性解析器。基于硬件的依赖算法可以跟踪每种层类型的一个索引,而不是跟踪它所依赖的所有层。基于硬件的依赖性算法可以在所有网络类型通用的硬件引擎调度器中实现,因为它不依赖于不确定的层数。在至少一个实施例中,单个控制器可以控制和维持固定功能引擎(在本文中也称为“引擎”)的状态。每个引擎可以向控制器报告其状态(例如,编程、启用、完成等)和依赖关系信息(根据层索引),这些信息指示当前编程层在执行前所依赖的层索引。只要解决了当前编程层的所有依赖关系,控制器就可以启用引擎。在此硬件实现中,每个引擎都可以向控制器报告其状态。控制器只能检查当前层的状态,不需要内存事务(例如,从系统内存读取或写入数据)来解决层依赖关系。
图1是根据至少一些实施例的加速器核心100的框图,加速器核心100具有用于调度固定功能电路104-114的硬件调度器电路102。加速器核心100(在本文中也称为DLA核心或加速器电路)包括硬件调度器电路102(在本文中也称为图形处理器(GP))和各种固定功能电路,例如卷积引擎104(在本文中也称为卷积核心),激活引擎106(在本文中也称为单数据处理器(SDP),其是用于激活功能的单点查找引擎,池化引擎108(在本文中也称为平面数据处理器(PDP),其是用于池化的平面平均引擎,本地响应归一化(LRN)引擎110(在本文中也称为跨信道数据处理器(CDP)),其是应用在信道维度上而不是空间维度上操作的LRN功能的专用单元,数据重塑引擎112(在此也称为RUBIK,其执行数据格式转换(例如,分割或切片、合并、收缩、重塑传输),以及桥接直接存储器访问(DMA)引擎114,其可在系统DRAM和专用存储器接口之间移动数据。下面描述硬件调度器电路102的附加细节。在其他实施例中,加速器核心100可以包括比图1所示的更多或更少的引擎。这些引擎中的每一个都是独立的且可独立配置的。例如,不需要池化操作的系统可以完全删除平面平均引擎。例如,需要额外卷积性能的系统可以在不修改加速器核心100中的其他单元的情况下放大卷积核心的性能。
如图1所示,加速器核心100与DLA系统的其余部分有多个连接,包括配置接口块116,配置接口块116包括配置空间总线(CSB)接口和中断接口。配置接口块116可以是实现寄存器文件(例如,配置寄存器)和中断接口(标记为CSB/中断接口118)的控制信道接口。在至少一个实施例中,CSB接口是同步、低带宽、低功耗、32位控制总线,其被设计为由CPU(图1中未示出)用于访问配置接口块116中的配置寄存器。中断接口可以是1位电平驱动的中断。当任务完成或发生错误时,可以断言中断行。加速器核心100还可以包括使用一个或更多个总线接口与存储器接口的存储器接口块120。在至少一个实施例中,存储器接口块120具有连接到系统存储器(图1中未示出)的主存储器接口122。系统内存可以包括DRAM。主存储器接口122可以与CPU和输入/输出(I/O)外围设备共享。在至少一个实施例中,主存储器接口122是连接加速器核心100和其他存储器子系统的数据主干(DBB)接口。DBB接口是一个可配置的数据总线,可以指定不同的地址大小、不同的数据大小,并发出不同大小的请求。在至少一个实施例中,DBB接口使用接口协议,例如AXI(高级可扩展接口)或其他类似协议。在至少一个实施例中,存储器接口块120具有第二存储器接口124,其允许连接到专用于加速器核心100或计算机视觉子系统的更高带宽存储器。例如,第二存储器接口124可与片上SRAM一起使用,以提供更高的吞吐量和更低的访问延迟。
存储器接口块120耦合到每个固定功能引擎104-114。可在存储器接口块120和卷积引擎104之间使用卷积缓冲器126,以避免重复访问系统存储器。卷积缓冲器126可以是保留用于权重和输入特征/像素存储的内部RAM。
在推理过程中,典型流程从耦合到加速器核心100的管理处理器(微控制器或CPU)开始,发送硬件层配置和激活命令。如果数据依赖性不排除这一点,则可以将多个硬件层发送到不同的引擎并同时激活(即,如果有另一层的输入不依赖于前一层的输出)。在至少一个实施例中,每个引擎可具有用于其配置寄存器的双缓冲器,其允许第二层的配置在活动层完成时开始处理。一旦硬件引擎完成其活动任务,配置接口块116可以中断管理处理器以报告完成,并且管理处理器可以再次开始该过程。这种命令执行中断流会重复,直到整个网络上的推理完成。
回到图1,硬件调度器电路102从每个固定功能电路(例如,104-114)接收与各个固定功能电路正在处理的各个层相关联的状态信息。硬件调度器电路102接收指示正在执行的各个层的层依赖性条件的依赖关系信息。当每个引擎执行层时,每个引擎可以递增执行的层标识符,并将执行的层标识符与层依赖条件进行比较,以确定在启用引擎执行当前层之前是否解决了每个依赖关系。在至少一个实施例中,依赖关系信息可以使用图,其中每个图节点指定要执行的当前层的层依赖关系条件。在各个引擎执行当前层之前,需要满足层依赖条件。层依赖条件可以包括一组索引,这些索引指定执行层标识符在执行特定引擎的当前层之前需要的值。图形和图形节点可以由图形节点组件(例如,软件模块、编译器或应用程序)为要执行的每个任务创建。图形节点组件可以准备依赖关系信息以指示每个图形节点的启动条件(在本文中也称为层相关性条件)。硬件调度器电路102确定在第一固定功能电路(例如,104-114)处的当前层被编程,并且使用状态信息和依赖关系信息确定在第一固定功能电路处的当前层的层相关性条件被满足。作为响应,硬件调度器电路102使得第一固定功能电路能够处理当前层。在至少一个实施例中,每个固定功能电路处理神经网络的单层,并且固定功能电路处理神经网络的不同层类型。在至少一个实施例中,第一固定功能电路是卷积引擎104、激活引擎106、池化引擎108、LRN引擎110、数据重塑引擎112或桥接DMA引擎114中的任意一个。或者,第一固定功能电路可以是加速器核心100的其他计算单元或加速器核心100外部的计算单元。
在至少一个实施例中,一旦从第二固定功能(例如,104-114中的另一个)接收到状态信息和依赖关系信息,硬件调度器电路102(在此也称为图形处理器)可以使用报告给硬件调度器电路102的状态信息和依赖关系信息来确定第二固定功能的当前层被编程,并且第二固定功能电路处的当前层的层依赖条件被满足。硬件调度器电路102使得第二固定功能电路能够处理当前层。在至少一个实施例中,只要解决了第一固定功能电路处的当前层和第二固定功能电路处的当前层的各自依赖性,就并发地处理它们。在其他实施例中,状态信息和依赖关系信息由硬件调度器电路102确定,而不从固定功能引擎接收该信息。例如,如本文所述,硬件调度器电路102可以确定来自配置寄存器、图节点等的信息。
在至少一个实施例中,硬件调度器电路102包括用于每个固定功能引擎104-114的引擎调度器电路(或“引擎调度器”或“ES”)。例如,如关于图2-3所更详细地描述的,如果有三个引擎调度器(ES)用于三个固定功能引擎,则在分配的引擎可以执行当前层之前,需要使用三种类型引擎的执行层标识符解析三个ES的索引。对于每个ES,基于硬件的调度算法从队列中选择一个条目,并检查该条目是否满足启动条件。如果满足启动条件,则启用层的执行,并从队列中删除条目。如果不满足启动条件,条目将保留在队列中。引擎完成一个层的执行后,ES更新执行层标识符,过程继续。完成所有层后,ESE将设置为空闲。
在至少一个实施例中,每个引擎调度器电路包括队列、DMA引擎和控制器。DMA引擎可以检索关于要由相应的固定功能电路处理的一个或更多个层的信息,并将该信息存储在队列的一个或更多个条目中。每个条目对应于单个固定功能电路要处理的层。控制器可以从与相应固定功能电路的当前层相关联的队列中选择条目。控制器可确定在第一固定功能电路处的当前层已编程且满足层依赖条件。控制器可以响应于正在编程的当前层和满足层依赖条件使相应的固定功能电路启动。在至少一个实施例中,控制器可以实现为硬件状态机,如下面关于图4更详细地描述的。或者,控制器可以使用其他电路实现。
在至少一个实施例中,硬件调度器电路102包括用于一个或更多个外部组件的引擎调度器电路,例如耦合到加速器核心100的微控制器、耦合到加速器核心100的CPU或两者。通过这种方式,层依赖条件可以指定在执行分配给特定引擎的层之前需要完成外部组件的操作。在至少一个实施例中,硬件调度器电路102包括耦合到每个引擎调度器电路的图形处理器(GP)控制器和标识符(ID)阵列。ID阵列可以存储每个引擎调度器电路(es302、312、322、332、342、352、362)的执行层标识符。每个引擎调度程序电路都可以存储依赖关系信息和状态。在至少一个实施例中,依赖关系信息存储在相应队列中,而状态可以存储在硬件上下文中。在至少一个实施例中,已执行层标识符(已执行层id)是已针对对应的引擎调度器电路(ES)执行的多个节点(层)。执行的层标识符可以初始化为默认数字,例如-1,以匹配依赖层标识符(dep_layer_id)。一旦执行节点,执行的层标识符可以增加1。如果一个ES与固定功能电路相关联,则当固定功能电路完成某些硬件操作且结果已写回内存时,节点被视为“已执行”。在这种情况下,从固定功能电路向GP控制器320发送信号。如果一个ES与外部组件(如CPU)相关联,则当外部组件完成其任务或作业时,节点被“执行”。可以对ID阵列310进行显式CSB写入以增加ID阵列310中执行的层标识符。在至少一个实施例中,跨多个引擎调度器(es)实现通用调度算法。ES的数量应至少与固定功能引擎的数量相同(对应于调度的层)。对于额外的外部组件,例如CPU或执行某些任务或工作的微控制器,可能会有更多的ES。每个ES独立运行(包括节点获取、引擎编程、依赖关系解析等)。例如,对于获取,所有ES都向其DMA发出请求,以获取包含依赖关系信息的对应图形节点。ID阵列可以存储执行的层标识符。es可以使用依赖关系信息和执行的层标识符来独立地解决针对各个固定功能引擎调度的各个层的依赖条件。例如,如果有三个引擎调度器(ES),则所有执行的层标识符都初始化为-1,这意味着不需要依赖关系。对于每个ES,调度算法从其各自的队列中选择第一个条目,并检查启动条件是否满足。如果启动条件满足,ES启动该层,然后从队列中删除该条目;否则,它将保留在队列中。例如,对于调度第一层(例如,A1)的第一ES,依赖关系信息指定在为第一固定功能引擎启用第一层之前需要完成的执行层标识符。在调度第一层之后,第一个ES可以获取下一个节点进行分析。在节点由相应的固定功能电路执行之后,信号被触发到适当的ES,并且ES增加其执行的层标识符。该事件可以广播到其他ESs,调度算法可以过渡到同一固定功能引擎的下一层,以及依赖于第一层完成的其他层。当所有层都标记为已完成时,ES可以设置为空闲。在至少一个实施例中,硬件调度器电路102包括分别在内部总线和存储器总线上通信的问题仲裁器和DMA仲裁器。
图2是根据至少一些实施例的调度算法200的流程图,该调度算法200用于解决在三个固定功能引擎上调度执行多层的依赖关系。在这些实施例中,存在三个引擎调度器202-206,对应于三个固定功能引擎(例如,104-114)。第一引擎调度器202调度第一引擎(引擎A)以执行神经网络的第一类型层,并使用第一执行层标识符208跟踪第一引擎调度器202完成的最高层。第二引擎调度器204调度第二引擎(引擎B)以执行神经网络的第二类型层网络,并使用第二执行层标识符210跟踪第二引擎调度器204完成的最高层。第三引擎调度206调度第三引擎(引擎C)执行神经网络的第三类型层,并使用第三执行层标识符212跟踪第三引擎调度器206完成的最高层。每个执行的层标识符被初始化为默认数字,例如-1。第一引擎调度器202可以确定第一层214(A1)被编程并且第一层依赖条件被满足(a:-1,B:-1,C:-1)。由于每个执行的层标识符被初始化为-1,因此满足第一层依赖条件。作为响应,第一引擎调度器202可以使第一固定功能引擎能够执行第一层214。
应注意,第二引擎调度器204可确定第二层216(B1)已编程。然而,直到第一层214(A1)完成,第二引擎调度器204确定第二层依赖条件(a:0,B:-1,C:-1)不满足,因为第一执行的层标识符208(a)仍然是-1。一旦第一层214(A1)由第一固定功能引擎完成,第一调度器202将第一执行层标识符208(A)从-1增加到0。作为第一执行层标识符(A)被更新的结果,第一调度器202可以确定满足第三层依赖条件(A:0,B:-1,C:-1)。类似地,第二调度器210可以确定满足第二层依赖性条件。由于第二调度器210已经确定第二层216(B1)被编程,第二调度器210可以使第二固定功能引擎能够执行第二层216。第一调度器202还可以确定第三层218(A2)被编程。由于满足第三层依赖条件(A:0,B:-1,C:-1),第一调度器202可以使第一固定功能引擎能够执行第三层218(A2)。一旦第一层214(A1)由第一固定功能引擎完成,第一调度器202将第一执行层标识符208(A)从0增加到1。一旦第二层216(B1)由第二固定功能引擎完成,第二调度器204将第二执行层标识符210(B)从-1增加到0。由于第一执行层标识符208(a)和第二执行层标识符210(B)被更新,第一调度器202可以确定满足第四层依赖条件(a:1,B:0,C:-1)。假设第一调度器202还确定编程了第四层220(A3),则第一调度器202可以使第一固定功能引擎能够执行第四层220(A3)。
一旦第四层220(A3)由第一固定功能引擎完成,第一调度器202将第一执行层标识符208(A)从1增加到2。作为第一执行层标识符208(A)被更新的结果,第三调度器206可以确定第五层依赖条件被满足(A:2,B:-1,C:-1)。假设第三调度器206还确定编程了第五层222(C1),则第三调度器206可以使第三固定功能引擎能够执行第五层222(C1)。应当注意,第五层依赖条件指定对第一固定功能引擎202正在执行的第三层218(A2)和第四层220(A3)的依赖。第五层依赖条件不指示对第二固定功能引擎204执行的层的任何依赖。
如图2所示,调度算法200可以使用神经网络多层的依赖关系信息的基于图形的表示,而不管层的数量和依赖的数量。调度算法200可以跟踪针对每种类型的固定功能引擎(对应于神经网络的每种类型的层)执行的层标识符以及针对图中的每个图节点的层依赖条件。
图3是根据至少一些实施例的具有多个引擎调度器电路的硬件调度器电路300的框图。硬件调度器电路300包括第一引擎调度器电路302,第一引擎调度器电路302包括第一控制器304、第一队列306和第一DMA引擎308。第一队列306可以存储与第一固定功能引擎要处理的层相对应的一个或更多个条目。第一DMA引擎308可以经由存储器接口块380从存储器获取要由第一固定功能引擎执行的第一层。第一DMA引擎308经由CSB/中断接口118从CPU或微控制器检索数据,并将数据作为第一数据结构存储在第一队列306的条目中。在至少一个实施例中,CPU或微控制器可以使用指定的数据结构将依赖关系图写入系统存储器中的特定地址,如关于图5所描述和图示的。CPU或微控制器通过CSB接口将这些地址设置到硬件调度器电路300。来自各个ES的各个DMA引擎从编程地址获取图形节点,并将它们存储在各个队列中(例如,306)。相应的控制器(例如,304)分析该节点的依赖关系信息并相应地控制相应的引擎。第一控制器304可以分析该条目以确定第一层的依赖关系信息。第一数据结构可以被视为第一图形节点,如图5所示。第一控制器304在使第一固定功能引擎能够执行第一层之前,使用第一图形节点来确定依赖关系信息并解析第一层的依赖关系信息。第一控制器304还可以根据状态信息确定第一层被编程在配置寄存器中。在一个实施例中,从第一固定功能引擎接收状态信息。在另一实施例中,状态信息从硬件调度器电路300的配置DMA350隐式地返回到第一控制器304。
在至少一个实施例中,配置DMA 350可以通过读取诸如性能计数器之类的统计寄存器来检索硬件调度器电路300的配置信息。在至少一个实施例中,配置DMA 350可以通过经由颁发者仲裁器330和配置DMA 350之间的总线从引擎调度器电路302、312、322、332、342、352或362接收配置命令(称为cfgdma命令)来检索配置信息。在至少一个实施例中,配置DMA 350使用命令数据结构(如图5中的图节点500所示)从引擎调度器电路302、312、322、332、342、352或362接收cfgdma命令。配置DMA 350按顺序执行cfgdma命令。在每个图形节点中,配置命令数据结构中有三个字段,包括配置字段(例如504)、地址字段(例如506)和操作启用字段(例如508)。命令可以通过命令数据结构的这三个字段发出。例如,各个ES可以使用图形节点向配置DMA 350发出命令,包括配置字段(例如,504)中的配置命令、地址字段(例如,506)中的地址命令以及操作启用字段(例如,508)中的操作启用命令(open)。
离线工具(如编译器)生成图形节点(GP节点)(如图5中的500)和一些指令。编译器可以填充图形节点的所有字段,并且可以将多个图形节点组织为不同的列表。例如,对于需要三个卷积层和两个数据重塑层的网络,编译器生成两个列表,包括:i)包含三个图形节点的第一引擎调度器电路302(conv_es)的第一列表和ii)包含两个图形节点的第二引擎调度器电路312(rubik_es)的第二列表。编译器还生成由配置DMA 350使用的指令。这些指令可以是用于对相应的固定函数引擎进行编程的寄存器-值对列表。使用上述三个卷积层和两个数据整形层的示例,三个卷积层将有9个寄存器值对列表(3层*3个命令(cfg/addr/op_en)),数据整形层将有6个寄存器值对列表(2层*3个命令(cfg/addr/op_en))。应当注意,这些指令不同于图5中所示的指令(例如,504、506、508),图5中所示的指令是告诉配置DMA350要编程的指令数(例如,514)以及从何处获取(例如,510、518)和存储(例如,512、522)指令的配置命令。
创建后,编译器将图形节点(例如,500)存储在内存中,以便由引擎调度器电路的DMA检索(例如,ES 302的DMA 308、ES 312的DMA 316等)。一旦检索到,图形节点存储在引擎调度器电路(例如306)的内部FIFO中。然后,当条目在队列的顶部时,相应的控制器(例如304)可以执行对配置DMA 310的配置命令(cfgdma命令504)。配置DMA 310可以获取字段510、518、518所指向的指令,然后,通过配置接口块360(CSB)为正在调度的固定功能引擎编程寄存器。此时,固定功能引擎已编程,但未由引擎调度器电路启用。引擎调度器电路(例如,302)等待直到依赖关系被解决,然后它向配置DMA 310(例如,经由操作启用字段508)发出操作启用命令(op_en)。配置DMA 310获取指令并经由CSB 360对固定功能引擎进行编程,以使其能够开始编程层的执行。
在至少一个实施例中,对于每个图形节点,可以从引擎调度器电路(例如302)向配置DMA 350提出至少两个请求(称为配置DMA请求或cfgdma请求),包括配置寄存器编程请求(cfg寄存器编程)和操作启用编程请求(OP_en编程)。引擎调度器电路(ES)(例如,第一控制器304)可以使用DMA引擎(例如,308)从存储器获取图形节点。由于配置DMA 350保证顺序执行,因此一旦配置DMA 350接收到cfg寄存器编程请求,引擎调度器电路(ES)就假定相应的引擎被“编程”。应当注意,配置DMA 350实际上可能没有完成对寄存器的编程,但是引擎调度器电路(ES)知道这些配置寄存器最终将被编程。随后,一旦引擎调度器电路(ES)已解析依赖关系信息,引擎调度器电路可在操作启用字段(例如,508)中触发操作启用编程(OP_enprogramming),即使配置DMA 350仍然忙,因为配置DMA 350顺序执行行为保证在配置寄存器编程完成之前未编程操作启用编程(OP_en programming)。可以使用命令数据结构发出请求以最小化固定功能引擎和硬件调度器电路300之间的通信。
第一层编程完成后,第一控制器304可以将第一图形节点中的依赖关系信息与存储在标识符阵列(ID阵列)310中的执行层标识符进行比较。ID阵列310可以将每个引擎调度器电路的寄存器值存储在硬件调度器电路300中。可以将寄存器值初始化为默认值,例如-1,如上文关于图2所述。第一控制器304可以确定第一图形节点中的依赖关系信息指示层依赖性条件(a:-1,B:-1,C:-1),并且满足层依赖性条件。引擎调度器电路的寄存器值(-1,-1,-1)等于或小于图层依赖性条件中的相应值。一旦第一层被编程并且第一层的层依赖性条件被满足,第一控制器304使得第一固定功能引擎能够执行第一层。执行第一层后,第一个固定功能引擎报告状态更改为已完成,并且可以在ID阵列310中更新执行的层标识符。可以将完成的事件广播到其他引擎调度器电路,以确定各个引擎调度器电路是否可以启用其相应队列中的下一个条目。或者,其他引擎调度器电路可以检测所执行的层标识符中的变化,以确定相应的引擎调度器电路是否可以启用其相应队列中的下一条目。
在至少一个实施例中,硬件调度器电路300包括第二引擎调度器电路312,该第二引擎调度器电路312具有第二控制器314、第二队列316和第二DMA引擎318。第二DMA引擎318可经由存储器接口块380从存储器中提取由第二固定功能引擎执行的第二层。第二队列316可以存储与第二固定功能引擎要处理的层相对应的一个或更多个条目。第二DMA引擎318经由CSB/中断接口118从CPU或微控制器检索数据,并将该数据作为第二数据结构存储在第二队列306的条目中。第二控制器314可分析该条目以确定第二层的依赖关系信息。类似地,如上所述,对于第一引擎调度器电路302,第二引擎调度器电路312在使第二固定功能电路能够执行第二层之前,确定第二层被编程并且满足层依赖性条件(例如,a:0,B:-1,C:-1)。
在至少一个实施例中,硬件调度器电路300包括具有第三控制器324、第三队列326和第三DMA引擎328的第三引擎调度器电路322,其操作与第一引擎调度器电路302和第二引擎调度器电路312类似。在至少一个实施例中,硬件调度器电路300包括用于加速器核心的其他固定功能引擎的附加引擎调度器电路和用于外部组件(例如外部微控制器、外部CPU等)的附加引擎调度器电路。例如,在至少一个实施例中,硬件调度器电路300包括第四引擎调度器电路332,该第四引擎调度器电路332具有第四控制器334、第四队列336和第四DMA引擎338,其操作与第一引擎调度器电路302类似,只是因为其与外部组件通信,它使用GP控制器320与外部组件通信。例如,第四控制器334可以经由GP控制器320从外部组件接收状态信息,并且一旦满足操作的层依赖性条件,就可以在外部组件上执行操作。在至少一个实施例中,硬件调度器电路300可以包括可用于附加组件的第五引擎调度器电路342、第六引擎调度器电路352和第七引擎调度器电路362。例如,第四引擎调度器电路332可以与耦合到加速器核心的CPU执行的操作相关联,第五引擎调度器电路342可以与耦合到加速器核心的微控制器执行的操作相关联。
在至少一个实施例中,DMA引擎可耦合到DMA仲裁器340以管理对存储器接口块380的访问。在至少一个实施例中,颁发者仲裁器330可仲裁对耦合到加速器核心的每个固定功能引擎的内部总线370(GLB)的访问。颁发者仲裁器330可以将来自多个es的请求顺序化,因为多个es可以在同一周期中发起请求。假设存在配置DMA 350的一个实例,则颁发者仲裁器330可以决定可以授予哪个ES请求。
图4是根据至少一些实施例的硬件调度器电路的硬件状态机400的图。硬件状态机400在空闲状态402下启动。响应于满足第一条件401,硬件状态机400转换到DMA状态404以获取要执行的当前层。在至少一个实施例中,响应于剩余要执行的层的数量大于零的确定,并且队列中存在至少一个空时隙(这里也称为条目),满足第一条件401。或者,可以定义其他条件以确定是否从空闲状态402转换到DMA状态404。响应于满足第二条件403,硬件状态机400转换到分析状态406,其中硬件状态机400分析为编程和执行当前层而检索的数据。在至少一个实施例中,响应于确定时隙总数减去空时隙计数大于零,并且空寄存器组的数目大于零,满足第二条件403。或者,可以定义其他条件以确定是否从DMA状态404转换到分析状态406。在分析状态406中,硬件状态机400可以确定是否满足第三条件405或第四条件407。响应于满足第三条件405,硬件状态机400转换到编程状态408,其中当前层编程在寄存器组中。在至少一个实施例中,响应于确定尚未发出暂停命令(例如,Node.pause==0),满足第三条件405。响应于满足第四条件407,硬件状态机400转换到暂停事件调度器电路的暂停状态412。在至少一个实施例中,第四条件407可以具有比第三条件405更高的优先级。在至少一个实施例中,响应于已发出暂停命令的确定(例如,Node.pause==1),满足第四条件407。在暂停状态412中,硬件状态机400可以确定是否满足第五条件409以过渡到程序状态408。在至少一个实施例中,响应于确定引擎调度器电路将继续(例如,ES.continue==1),满足第五条件409。应当注意,暂停状态412可以用作调试特征。例如,响应于调试器向硬件调度器电路发送继续命令以退出暂停状态,可以满足该条件。在编程状态408中,硬件状态机400确定当前层是否在寄存器组中编程,并且满足第六条件411以便转换到启用状态410。在至少一个实施例中,响应于满足当前层的层依赖条件的确定(例如,ExecutedLayerId>=dep_layer_id),满足第六条件411。在启用状态410中,硬件状态机400向对应于硬件调度器电路的固定功能引擎发出启用信号。在启用状态410中,硬件状态机400确定是否满足第七条件413或第八条件415。在至少一个实施例中,如果仍有许多层要执行(例如,left_layer_num>0),则满足第七条件413。在至少一个实施例中,如果已执行所有层(例如,完成所有作业?),则满足第八条件415。如果满足第七条件413,则硬件状态机400转换到DMA状态404以获取后续层。如果满足第八条件415,则硬件状态机400转换到空闲状态402。
在至少一个实施例中,硬件调度器电路400包括多个ES(引擎调度器)。ES的数量应至少与固定功能引擎的数量相同。如本文所述,对于额外的外部组件可以有更多的ES。每个ES独立运行(包括节点获取、引擎编程、依赖性解析等)。例如,对于抓取,所有es同时向其DMA提出请求以从存储器中抓取图_节点,并且DMA仲裁器340可以决定请求的授予顺序。一旦固定功能引擎完成,将向相关的ES发送一个信号,以增加ID数组310中执行的层标识符。一旦ID数组310中有更新,该更新事件可以广播到所有ESE以调用依赖性解析。
还应注意,本文描述的实施例针对深度学习神经网络中的调度层。本文描述的方面和实施例还可用于任何有向无环图(DAG)计算图处理环境。
图5是根据至少一些实施例的与将由第一固定功能引擎执行的第一层相关联的示例图节点500。图形节点500是包括依赖关系信息502的数据结构,该依赖关系信息502包括用于加速器核心中的固定功能引擎的每个引擎调度器的依赖层标识符、配置信息504、地址信息506和操作启用字段508。例如,在第一字段524中包括用于第一固定功能(标记为ffe1_dep_layer_id)的第一依赖层标识符,在第二字段526中包括用于第二固定功能(标记为ffe2_dep_layer_id)的第二依赖层标识符,第三字段528中第三固定函数(标记为ffe3_dep_layer_id)的第三依赖层标识符,第四字段530中第四固定函数(标记为ffe4_dep_layer_id)的第四依赖层标识符,以及第五字段532中用于第五固定功能(标记为
ffe5_dep_layer_id)的第五依赖层标识符。依赖关系信息502还可以包括多个外部组件(例如CPU或微控制器)的依赖层标识符,在字段534-540中。数据结构可以包括用于确认信令的其他字段542和用于调试目的的暂停信令。
配置信息504可以是配置DMA条目,其包括关于源偏移510、目的地偏移512、总大小514、读取大小516、源类型518的信息,以及目的地类型520。当依赖关系信息502如本文所述被解析时,在操作启用字段508被设置为由与第一固定功能引擎相关联的第一引擎调度器启用之前,将不执行第一层的操作。第一引擎调度器可以检查其他每个固定功能引擎的执行层标识符,并将执行层标识符与依赖关系信息502进行比较。如本文所述,第一引擎调度器可以确定第一层被编程在配置寄存器中并且依赖关系信息502被解析。当编程第一层并且满足依赖关系信息502时,第一引擎调度器可以向配置DMA 350发送请求,以设置操作启用字段508以使第一固定功能引擎能够执行第一层。一旦第一个固定功能引擎完成,第一个固定功能引擎的状态完成,并且执行的层标识符增加。增加已执行层标识符可导致引擎调度器检查是否满足依赖关系信息,以允许执行下一层(假设下一层也已编程)。
图5还显示了配置信息504的示例配置DMA条目。配置DMA条目存储当前层的配置信息504。例如,配置信息504包括源和目的地地址偏移510、512、数据的总大小514、数据的读取大小516以及源和目的地类型518,520。配置信息504还可以包括一个或更多个保留字段522。配置DMA条目包含启动当前层的一个配置DMA(cfgdma)执行所需的信息。配置DMA条目可以包含指令存储在内存中的位置以及地址是绝对地址还是相对于基址的相对偏移量的信息。配置DMA条目可以包含寄存器值存储在内存中的位置以及地址是绝对地址还是相对于基址的相对偏移量的信息。配置DMA条目可以包含指示cfgdma将发出的指令数量的信息(例如,num_total_inst)。配置DMA条目可以包含指示在指令总数内用于读取的指令数的信息(例如,在指令总数内用于读取操作的ts_cfgdma_inst数)。
如上所述,对于每个图形节点,至少可以从引擎调度程序电路(ES)向配置DMA 350发出两个cfgdma请求,包括配置寄存器编程(cfg寄存器编程)和操作启用编程(OP_en编程),其中配置DMA 350设置操作启用字段508。由于配置DMA 350保证有序执行,一旦配置DMA 350接收到cfg寄存器编程请求,引擎调度器电路(ES)就知道相应的引擎被“编程”。应当注意,配置DMA 350实际上可能没有完成对寄存器的编程,但是引擎调度器电路(ES)知道这些配置寄存器最终将被编程。引擎调度器电路(ES)可以触发针对配置DMA 350的另一cfgdma请求以设置操作启用字段508(OP_EN),即使cfgdma仍然忙,因为配置DMA 350的顺序执行行为保证操作启用字段508(OP_EN)在配置寄存器编程完成之前未被编程。这可以实现以最小化引擎和硬件调度器电路300之间的通信。
图6是根据至少一些实施例,根据依赖条件调度神经网络层的方法600的流程图。方法600可通过包括硬件、软件、固件或其任何组合的处理逻辑来执行。在至少一个实施例中,方法600由图1的加速器核心100的硬件执行。在至少一个实施例中,方法600由图1的硬件调度器电路102执行。在至少一个实施例中,方法600由图3的硬件调度器电路300执行。在至少一个实施例中,方法600由图3的引擎调度器电路302、312、322、332、342、352或362中的任何一个执行。在至少一个实施例中,方法600由图4的硬件状态机400执行。
回到图6,方法600首先处理逻辑跟踪指示由第一固定功能引擎执行的最新层的第一索引(例如,第一执行层索引),指示由第二固定功能引擎执行的最新层的第二索引(例如,第二执行层索引),以及指示由第三固定功能引擎执行的最新层的第三索引(例如,第三执行层索引)(框602)。从第一固定功能引擎,处理逻辑接收指示第一固定功能引擎要执行的第一层的第一依赖条件(例如,第一层依赖条件)的第一依赖关系信息(框604)。处理逻辑确定满足第一依赖条件(框606)。处理逻辑使得第一固定功能引擎能够响应于满足第一依赖条件而执行第一层(框608),并且方法600结束。
在另一个实施例中,处理逻辑从第一固定功能引擎接收要由第一固定功能引擎处理的第一层的第一状态。在另一实施例中,处理逻辑隐式地确定第一层的第一状态,而不从第一固定功能引擎接收它。处理逻辑确定第一状态指示第一层在第一固定功能引擎处编程。第一固定功能引擎响应于满足的第一依赖条件而被启用,并且响应于第一状态,指示第一层被编程。
在另一个实施例中,处理逻辑从第一固定功能引擎接收第一层的第一状态。处理逻辑确定第一状态指示第一层在第一个固定功能引擎完成。处理逻辑将第一索引更新为更新后的第一索引。处理逻辑从第二固定功能引擎接收第二依赖关系信息,其指示第二固定功能引擎要执行的第二层的第二依赖性条件。处理逻辑使用更新的第一索引、第二索引和第三索引确定满足第二依赖条件。处理逻辑使得第二固定功能引擎能够响应于满足第二依赖条件而执行第二层。
在另一个实施例中,处理逻辑从第三固定功能引擎接收第三依赖关系信息,该信息指示第三层的第三依赖条件将由第一固定功能引擎执行。处理逻辑使用更新的第一索引、第二索引和第三索引确定满足第三依赖条件。处理逻辑使得第一固定功能引擎能够响应于满足第三依赖条件而执行第三层,其中第二层和第三层并发地执行。
在另一个实施例中,处理逻辑从第一固定功能引擎接收第一层的第一状态。处理逻辑确定第一状态指示第一层在第一个固定功能引擎完成。处理逻辑将第一索引更新为更新后的第一索引。处理逻辑从第二固定功能引擎接收第二依赖关系信息,该信息指示第二固定功能引擎要执行的第二层的第二依赖性条件(例如,第二层依赖性条件)。处理逻辑使用更新的第一索引、第二索引和第三索引确定满足第二依赖条件。处理逻辑使得第二固定功能引擎能够响应于满足第二依赖条件而执行第二层。处理逻辑从第三固定功能引擎接收第三依赖关系信息,该信息指示第三层的第三依赖性条件将由第三固定功能引擎执行。处理逻辑使用更新的第一索引、第二索引和第三索引确定满足第三依赖条件。处理逻辑使得第三固定功能引擎能够响应于满足的第三依赖条件执行第三层。在至少一个实施例中,并发地执行第二层和第三层。如本文所述,第一固定功能引擎和第二固定功能引擎是不同的引擎类型。第一固定功能引擎是卷积核心、SDP、PDP、CDP、数据整形引擎或桥接DMA模块中的一个。第二个固定功能引擎是卷积核心、SDP、PDP、CDP、数据整形引擎或BDMA模块中的另一个。在另一实施例中,引擎可以包括CPIPE(卷积管线引擎)、数据整形引擎(RUBIK)或BDMA模块。
在至少一个实施例中,图形节点组件准备依赖关系信息以指示每个层的启动条件。例如,如果有三个引擎调度器(ES)(在本文中也称为图形处理器),则所有执行的层标识符都初始化为-1,这意味着不需要依赖关系。对于每个ES,调度算法从其各自的队列中选择第一个条目,并检查启动条件是否满足。如果启动条件满足,ES启动该层,然后从队列中删除该条目;否则,它将保留在队列中。例如,对于第一引擎a,层A1,依赖关系信息是(a:-1,B:-1,C:-1),这意味着在启用层A1之前应满足所有条件(a执行的层id>=-1,B执行的层id>=-1和C执行的层id>=-1)。在层A1被启动之后,第一引擎A将请求DMA获取下一个节点以进行分析,并且在该节点被相应的固定功能电路执行之后,信号被触发到相应的ES,并且ES增加其执行的层标识符并将该事件广播到其他es,然后,调度算法过渡到A2层和B1层。当所有层都标记为完成时,ES(图形处理器)可以设置为空闲。如本文所述,通过访问系统存储器来更新依赖性的方法随着神经网络中的层数的增加而增加延迟。在本文描述的实施例中,延迟被降低并且保持恒定,而与神经网络中的层数无关。这种改进对于深度神经网络来说意义重大,因为这些网络中的层数可以是数百层(例如,600层或更多层,并且层数继续增长)。
图7是根据至少一些实施例的DLA系统700的框图。DLA系统700被认为是无头系统,其中DLA子系统702的逐单元管理发生在主系统处理器CPU 704上。DLA子系统702包括中断接口706、配置空间总线(CSB)接口708、主数据总线接口710(DBBIF)、辅助数据总线接口712,以及上文关于图1描述的硬件调度器电路102。CPU 704和DLA子系统702耦合到系统存储器714(例如,DRAM)。DLA子系统702经由主数据总线710耦合到系统存储器714。DLA子系统702可以耦合到辅助存储器,例如SRAM(图7中未示出)。应当注意,DLA系统700可以不包括可选的辅助存储器接口712,因为当总体系统性能低于优先级时,系统存储器714可以比SRAM消耗更少的功率。DLA系统700使用系统存储器714作为计算高速缓存可以更节能。
图7的DLA系统700代表的是一个比具有专用控制器或协处理器的DLA系统更具成本敏感性的系统,用于DLA子系统702的逐单元管理。DLA系统700可被视为一个小型系统模型。小型系统模型可用于成本敏感的物联网(IoT)类设备、人工智能(AI)和面向自动化的系统,这些系统具有明确定义的任务,其中成本、面积和功率是主要驱动因素。可通过DLA子系统702的可配置资源实现成本、面积和功率方面的节约。可预编译神经网络模型并优化其性能,从而降低较大模型的负载复杂性。反过来,负载复杂性的降低实现了按比例缩小的DLA实现,模型消耗更少的存储空间,系统软件加载和处理所需的时间更少。在至少一个实施例中,DLA系统700一次可以执行一个任务。或者,DLA系统700可以一次执行多个任务。对于DLA系统700,DLA系统700的上下文切换不会导致CPU 704因维护来自DLA子系统702的大量中断而负担过重。这消除了对额外微控制器的需要,并且CPU 704执行存储器分配和其他DLA子系统管理操作。如本文所述,DLA子系统702包括用于调度CPU 704的固定功能引擎和其他操作的硬件调度器电路102。
图8是根据至少一些实施例的DLA系统800的框图。DLA系统800被认为是一个有头系统,其中主系统处理器CPU 802将高中断频率任务委托给耦合到DLA子系统702的配套微控制器804。DLA系统800类似于DLA系统700,如类似参考号所示,除DLA系统800外,DLA系统800包括配套的微控制器804。DLA系统800可被视为一个更大的系统,其特征是添加专用控制协处理器和高带宽SRAM以支持DLA子系统702。更大的系统模型可用于可同时运行多个任务的IoT设备中。
在某些情况下,当需要更高的性能和多功能性时,使用图8中较大的DLA模型。面向性能的物联网系统可以在许多不同的网络拓扑上进行推理;因此,它们保持高度的灵活性。此外,这些系统可能一次执行许多任务,而不是序列化推理操作,因此推理操作不会消耗CPU 704上太多的处理能力。为了满足这些需求,DLA子系统702包括耦合到专用高带宽SRAM812的辅助存储器接口712。SRAM 812可由DLA子系统702用作高速缓存。SRAM 812还可由系统上的其他高性能计算机视觉相关组件使用,以进一步减少到主系统存储器714(例如,DRAM)。DLA子系统702启用与微控制器804(或专用控制协处理器)的接口以限制CPU704上的中断负载。在至少一个实施例中,微控制器804可以是基于RISC-V的PicoRV32处理器、ARMCortex-M或Cortex-R处理器或其他微控制器设计。使用专用协处理器(微控制器804),主机处理器(CPU704)可以处理与管理DLA子系统702相关联的一些任务。例如,尽管硬件调度器电路102负责DLA硬件的调度和细粒度编程,微控制器804或CPU 704仍然可以处理DLA硬件的一些粗粒度调度、DLA存储器访问的输入-输出存储器管理(IOMMU)映射(如需要)、输入数据的存储器分配和DLA子系统702上的固定权重阵列,以及在DLA子系统702上运行的其他系统组件和任务之间的同步。
在至少一个实施例中,DLA子系统702可编程为多种操作模式,例如独立模式、融合模式等。每个功能块可以在独立模式下进行配置,以确定其执行的时间和内容,每个功能块都在执行其分配的任务(类似于深度学习框架中的独立层)。独立操作可以执行内存对内存操作的在分配的块开始和结束,该操作在主系统内存或专用SRAM内存中进出。在融合模式下,一些块可以组装成管线。管线可以通过绕过通过内存的往返而提高性能,而不是让块通过小型先进先出(FIFO)队列相互通信。例如,卷积核可以将数据传递给单数据点处理器,单数据点处理器可以将数据传递给平面数据处理器和跨通道数据处理器)。
本文所公开的技术可并入可用于处理神经网络的任何处理器中,例如,中央处理单元(CPU)、GPU、智能处理单元(IPU)、神经处理单元(NPU)、张量处理单元(TPU)、神经网络处理器(NNP)、数据处理单元(DPU),视觉处理单元(VPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。这种处理器可以集成在个人计算机(例如笔记本电脑)、数据中心、物联网(IoT)设备、手持设备(例如智能手机)、车辆、机器人、语音控制设备或执行神经网络的推理、训练或任何其他处理的任何其他设备中。可以在虚拟化系统中使用这样的处理器,使得在系统上的虚拟机中执行的操作系统可以利用该处理器。
例如,结合本文所公开技术的处理器可用于处理机器中的一个或更多个神经网络,以识别、分类、操纵、处理、操作、修改或导航现实世界中的物理对象。例如,这种处理器可用于自主车辆(例如,汽车、摩托车、直升机、无人机、飞机、船、潜艇、运载机器人等)中,以在真实世界中移动车辆。此外,这种处理器可用于工厂的机器人中,以选择部件并将部件组装成组件。
例如,结合本文所公开技术的处理器可用于处理一个或更多个神经网络,以识别图像中的一个或更多个特征,或改变、生成或压缩图像。例如,这种处理器可用于增强使用光栅、光线跟踪(例如,使用NVIDIA RTX)和/或其他渲染技术渲染的图像。在另一示例中,这样的处理器可用于减少通过网络(例如,因特网、移动电信网络、WIFI网络以及任何其他有线或无线网络系统)从渲染设备传输到显示设备的图像数据量。此类传输可用于将图像数据从云中的服务器或数据中心流传输到用户设备(例如,个人计算机、视频游戏控制台、智能手机、其他移动设备等),以增强流传输图像的服务,例如NVIDIA GeForce Now(GFN)、Google Stadia等。
例如,结合本文所公开技术的处理器可用于处理一个或更多个可利用神经网络的任何其他类型应用的神经网络。例如,此类应用可能涉及翻译语言、识别和否定音频中的声音、检测商品和服务生产过程中的异常或缺陷、监视生物和非生物、医疗诊断、做出决策等。
其他变化符合本发明的精神。因此,尽管所公开的技术容易受到各种修改和替代构造的影响,但在附图中示出并在上文中详细描述了某些示出的实施例。然而,应当理解,并不打算将本公开限定于所公开的一种或多种特定形式,相反,本发明的意图是涵盖属于所附权利要求中定义的本发明的精神和范围内的所有修改、替代构造和等同物。
在描述所公开的实施例(尤其是在以下权利要求的上下文中)的上下文中,术语“一(a)”和“一个(an)”以及“所述(the)”和类似参考物的使用应解释为涵盖单数和复数,除非本文另有说明或与上下文明确矛盾,而不是作为术语的定义。除非另有说明,否则术语“包括”、“拥有”、“包括”和“包含”应解释为开放式术语(意思是“包括但不限于”)。“已连接”,未经修改且指物理连接时,应解释为部分或全部包含在、连接或连接在一起,即使有东西介入。除非本文另有说明,否则本文中对数值范围的叙述仅旨在作为单独引用该范围内每个单独数值的简写方法。每一个单独的值都被纳入本规范中,就好像在本文中单独叙述一样。在至少一个实施例中,术语“集合”(例如,“一组项目”)或“子集”的使用,除非上下文另有说明或矛盾,否则应解释为包含一个或更多个成员的非空集合。此外,除非上下文另有说明或矛盾,否则对应集的术语“子集”不一定表示对应集的适当子集,但子集和对应集可以相等。
除非另有明确说明或与上下文明显矛盾,否则连接语,如“A、B和C中的至少一个”或“A、B和C中的至少一个”形式的短语,应与上下文一起理解,通常用于表示项目、术语等,可以是A或B或C,或A,B,C集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连词短语“a、B和C中的至少一个”和“a、B和C中的至少一个”指以下集合中的任何一个:{a}、{B}、{C}、{a、B}、{a、C}、{B、C}、{a、B、C}。因此,这种连词语言通常并不意味着某些实施例要求A中的至少一个、B中的至少一个和C中的至少一个都存在。此外,除非上下文另有说明或矛盾,否则术语“复数”表示复数状态(例如,“复数项”表示多个项)。在至少一个实施例中,多个项目中的项目数量至少为两个,但当明确或通过上下文指示时,可以更多。此外,除非另有说明或上下文另有明确说明,“基于”一词是指“至少部分基于”而非“完全基于”。
本文所述过程的操作可以以任何适当的顺序进行,除非本文另有说明或上下文另有明确矛盾。在至少一个实施例中,在配置有可执行指令的一个或更多个计算机系统的控制下执行诸如本文所述的那些过程(或其变体和/或组合)的过程,并将其实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),通过硬件或其组合在一个或更多个处理器上集体执行。在至少一个实施例中,代码以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非瞬态计算机可读存储介质,其排除瞬态信号(例如,传播瞬态电或电磁传输),但包括非瞬态数据存储电路(例如,缓冲器、高速缓存、(和队列)在瞬态信号的收发器内。在至少一个实施例中,代码(例如,可执行代码或源代码)存储在一组或多个非暂时性计算机可读存储介质上,该存储介质上存储有可执行指令(或存储可执行指令的其他存储器),当执行时(即,作为由计算机系统的一个或更多个处理器执行的结果,使计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质的一个或更多个单独的非暂时性存储介质缺少所有代码,而多个非暂时性计算机可读存储介质共同存储所有代码。在至少一个实施例中,执行可执行指令,使得不同的处理器执行不同的指令-例如,非暂时性计算机可读存储介质存储指令,主中央处理单元(“CPU”)执行部分指令,而图形处理单元(“GPU”)和/或数据处理单元(“DPU”)——可能与GPU结合——执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行不同的指令子集。
因此,在至少一个实施例中,计算机系统被配置为实现一个或更多个单独或共同执行本文所述过程的操作的服务,并且这些计算机系统被配置有能够执行操作的适用硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一个实施例中,是一种分布式计算机系统,包括不同操作的多个设备,使得分布式计算机系统执行本文描述的操作,并且单个设备不执行所有操作。
使用本文提供的任何和所有示例或示例性语言(例如,“例如”)仅旨在更好地说明本公开的实施例,并且除非另有要求,否则不会对本公开的范围造成限制。说明书中的任何语言都不应被解释为表明任何未声明的元素对于本公开的实践是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,在此通过引用合并,其程度与每个参考文献单独明确表示通过引用合并并在本文中完整阐述的程度相同。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其衍生物。应该理解的是,这些术语可能不是彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或多个元件彼此直接或间接物理或电接触。”“耦合”也可能意味着两个或多个元件彼此不直接接触,但仍然相互合作或相互作用。
除非另有特别说明,否则可以理解,在整个规范术语中,例如“处理”、“计算”、“计算”、“确定”等,指的是计算机或计算系统或类似电子计算设备的动作和/或过程,将计算系统的寄存器和/或存储器中表示为物理量(如电子量)的数据操纵和/或转换为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中类似表示为物理量的其他数据。
以类似方式,术语“处理器”可指处理来自寄存器和/或存储器的电子数据并将该电子数据转换为可存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用,“软件”过程可包括例如随时间执行工作的软件和/或硬件实体,例如任务、线程和智能代理。此外,每个过程可指多个过程,用于连续或间歇地顺序或并行地执行指令。在至少一个实施例中,术语“系统”和“方法”在此互换使用,只要系统可以体现一个或更多个方法,并且方法可以被视为系统。
在本文件中,可参考获取、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器。在至少一个实施例中,获取、获取、接收或输入模拟和数字数据的过程可以通过多种方式实现,例如通过接收数据作为函数调用或对应用程序编程接口的调用的参数。在至少一个实施例中,可以通过经由串行或并行接口传输数据来完成获取、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,获取、获取、接收或输入模拟或数字数据的过程可以通过经由计算机网络从提供实体向获取实体传输数据来完成。在至少一个实施例中,还可以参考提供、输出、发送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据传输为函数调用的输入或输出参数、应用程序编程接口的参数或进程间通信机制来完成。
尽管本文中的描述阐述了所述技术的示例实施例,但其他体系结构可用于实现所述功能,并且旨在在本发明的范围内。此外,尽管为了描述的目的,可以在上文中定义具体的责任分配,但根据具体情况,可以以不同的方式分配和划分各种职能和责任。
此外,尽管主题已经用特定于结构特征和/或方法行为的语言描述,但应当理解,所附权利要求中要求保护的主题不一定限于所描述的特定特征或行为。相反,特定特征和动作被公开为实现权利要求的示例形式。
Claims (21)
1.一种加速器电路,包括:
多个固定功能电路,其中所述多个固定功能电路中的每一个处理不同层类型的神经网络;和
调度器电路,其耦合到所述多个固定功能电路,其中所述调度器电路用于:
确定与正由相应固定功能电路处理的相应层相关联的状态信息;
确定指示由所述相应固定功能电路处理的所述相应层的层依赖条件的依赖关系信息;
确定在所述多个固定功能电路中的第一固定功能电路处的当前层被编程;
使用所述状态信息和所述依赖关系信息确定所述第一固定功能电路处的所述当前层的层依赖性条件被满足;以及
使所述第一固定功能电路能够处理所述第一固定功能电路处的当前层。
2.根据权利要求1所述的加速器电路,其中所述调度器电路用于:
确定在所述多个固定功能电路中的第二固定功能电路处的当前层被编程;
使用所述状态信息和所述依赖关系信息确定在所述第二固定功能电路处的当前层的层相关性条件被满足;以及
使所述第二固定功能电路能够处理所述第二固定功能电路处的当前层。
3.根据权利要求2所述的加速器电路,其中所述第一固定功能电路处的当前层和所述第二固定功能电路处的当前层被并发地处理。
4.根据权利要求1所述的加速器电路,其中所述调度器电路包括第一引擎调度器电路,所述第一引擎调度器电路包括:
第一队列;
第一直接存储器访问DMA引擎,用于检索关于将由所述第一固定功能电路处理的一个或更多个层的第一信息,并将所述第一信息存储在所述第一队列的一个或更多个条目中,每个条目对应于将由所述第一固定功能电路处理的层;和
第一控制器,用于从与所述第一固定功能电路处的当前层相关联的所述第一队列中选择条目,确定所述第一固定功能电路处的当前层被编程并且所述层依赖条件被满足,以及响应于所述第一固定功能电路处的当前层被编程并且所述层依赖条件被满足而启动所述第一固定功能电路。
5.根据权利要求4所述的加速器电路,其中所述调度器电路包括第二引擎调度器电路,所述第二引擎调度器电路包括:
第二队列;
第二DMA引擎,用于检索关于将由所述多个固定功能电路中的第二固定功能电路处理的一个或更多个层的第二信息,并将所述第二信息存储在所述第二队列的一个或更多个条目中,每个条目对应于将由所述第二固定功能电路处理的层;以及
第二控制器,用于从与所述第二固定功能电路处的当前层相关联的所述第二队列中选择条目,确定所述第二固定功能电路处的当前层被编程并且所述层依赖条件被满足,以及响应于所述第二固定功能电路处的所述当前层被编程并且所述层依赖条件被满足而启动所述第二固定功能电路。
6.根据权利要求4所述的加速器电路,其中所述加速器电路耦合到微控制器,其中所述调度器电路包括第二引擎调度器电路,所述第二引擎调度器电路包括:
第二队列;
第二DMA引擎,用于检索关于将由所述微控制器处理的一个或更多个层的第二信息,并将所述第二信息存储在所述第二队列的一个或更多个条目中,每个条目对应于将由所述微控制器处理的层;以及
第二控制器,用于从与所述微控制器处的当前层相关联的所述第二队列中选择条目,确定所述微控制器处的当前层已编程且所述层依赖条件被满足,以及响应于所述微控制器处的当前层被编程并且所述层依赖条件被满足而启动所述微控制器。
7.根据权利要求4所述的加速器电路,其中所述第一控制器是硬件状态机。
8.根据权利要求4所述的加速器电路,其中所述调度器电路还包括:
第二引擎调度器电路;
图形处理器(GP)控制器,其耦合到所述第一引擎调度器电路和所述第二引擎调度器电路;以及
标识符(ID)阵列,其耦合到所述第一引擎调度器电路和所述第二引擎调度器电路。
9.根据权利要求1所述的加速器电路,其中所述第一固定功能电路是卷积核、单数据点处理器(SDP)、平面数据处理器(PDP)、跨通道数据处理器(CDP)、数据整形引擎或桥接直接存储器访问(BDMA)模块。
10.一种深度学习加速器DLA核心,包括:
寄存器文件,用于存储与包括多个层的神经网络的至少一部分相关联的配置信息;
第一固定功能引擎,用于处理所述多个层中的第一层类型;
第二固定功能引擎,用于处理所述多个层中的第二层类型;
第三固定功能引擎,用于处理所述多个层中的第三层类型;以及
耦合到所述寄存器文件、所述第一固定功能引擎、所述第二固定功能引擎和所述第三固定功能引擎的硬件调度器电路,其中所述硬件调度器电路用于:
追踪指示由所述第一固定功能引擎执行的最新层的第一索引、指示由所述第二固定功能引擎执行的最新层的第二索引以及指示由所述第三固定功能引擎执行的最新层的第三索引;
确定指示将由所述第一固定功能引擎执行的第一层的第一依赖条件的第一依赖关系信息;
使用所述第一索引、所述第二索引和所述第三索引确定所述第一依赖条件被满足;以及
使所述第一固定功能引擎能够响应于所述第一依赖条件被满足而执行所述第一层。
11.根据权利要求10所述的DLA内核,其中所述硬件调度器电路进一步用于:
确定将由所述第一固定功能引擎处理的所述第一层的第一状态;以及
确定所述第一状态指示所述第一层在所述第一固定功能引擎处被编程,其中响应于所述第一依赖条件被满足并且响应于所述第一状态指示所述第一层被编程而启用所述第一固定功能引擎。
12.根据权利要求10所述的DLA内核,其中所述硬件调度器电路进一步用于:
确定所述第一层的第一状态;
确定所述第一状态指示所述第一层在所述第一固定功能引擎处被完成;
将所述第一索引更新为更新后的第一索引;
确定指示将由所述第二固定功能引擎执行的第二层的第二依赖条件的第二依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第二依赖条件被满足;以及
使所述第二固定功能引擎能够响应于所述第二依赖条件被满足而执行所述第二层。
13.根据权利要求12所述的DLA内核,其中所述硬件调度器电路进一步用于:
确定指示将由所述第一固定功能引擎执行的第三层的第三依赖条件的第三依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第三依赖条件被满足;以及
使所述第一固定功能引擎能够响应于所述第三依赖条件被满足而执行所述第三层,其中所述第二层和所述第三层被并发地执行。
14.根据权利要求12所述的DLA内核,其中所述硬件调度器电路进一步用于:
确定所述第一层的第一状态;
确定所述第一状态指示所述第一层在所述第一固定功能引擎处被完成;
将所述第一索引更新为更新后的第一索引;
确定指示将由所述第二固定功能引擎执行的第二层的第二依赖条件的第二依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第二依赖条件被满足;
使所述第二固定功能引擎响应于所述第二依赖条件被满足而执行所述第二层;
确定指示将由所述第三固定功能引擎执行的第三层的第三依赖条件的第三依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第三依赖条件被满足;以及
使所述第三固定功能引擎能够响应于所述第三依赖条件被满足而执行所述第三层,其中所述第二层和所述第三层被并发地执行。
15.根据权利要求10所述的DLA内核,其中所述第一固定功能引擎和所述第二固定功能引擎是不同的引擎类型,并且其中所述第一固定功能引擎是卷积核、单数据点处理器(SDP)、平面数据处理器(PDP)、跨通道数据处理器(CDP)、数据整形引擎或桥接直接存储器访问(BDMA)模块中的一个,其中所述第二固定功能引擎是所述卷积核、所述SDP、所述PDP、所述CDP、所述数据整形引擎或所述BDMA模块中的另一个。
16.一种方法,包括:
通过加速器电路的硬件调度器电路,追踪指示由所述加速器电路的第一固定功能引擎执行的最新层的第一索引,追踪指示由所述加速器电路的第二固定功能引擎执行的最新层的第二索引,以及指示由所述加速器电路的第三固定功能引擎执行的最新层的第三索引;
确定指示将由所述第一固定功能引擎执行的第一层的第一依赖条件的第一依赖关系信息;
使用所述第一索引、所述第二索引和所述第三索引确定所述第一依赖条件被满足;以及
使所述第一固定功能引擎能够响应于所述第一依赖条件被满足而执行所述第一层。
17.根据权利要求16所述的方法,还包括:
确定将由所述第一固定功能引擎处理的所述第一层的第一状态;以及
确定所述第一状态指示所述第一层在所述第一固定功能引擎处被编程,其中响应于所述第一依赖条件被满足并且响应于所述第一状态指示所述第一层被编程而启用所述第一固定功能引擎。
18.根据权利要求16所述的方法,还包括:
确定所述第一层的第一状态;
确定所述第一状态指示所述第一层在所述第一固定功能引擎处被完成;
将所述第一索引更新为更新后的第一索引;
确定指示将由所述第二固定功能引擎执行的第二层的第二依赖条件的第二依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第二依赖条件被满足;以及
使所述第二固定功能引擎能够响应于所述第二依赖条件被满足而执行所述第二层。
19.根据权利要求18所述的方法,还包括
确定指示将由所述第一固定功能引擎执行的第三层的第三依赖条件的第三依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第三依赖条件被满足;以及
使所述第一固定功能引擎能够响应于所述第三依赖条件被满足而执行所述第三层,其中所述第二层和所述第三层被并发地执行。
20.根据权利要求18所述的方法,还包括:
确定所述第一层的第一状态;
确定所述第一状态指示所述第一层在所述第一固定功能引擎处被完成;
将所述第一索引更新为更新后的第一索引;
确定指示将由所述第二固定功能引擎执行的第二层的第二依赖条件的第二依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第二依赖条件被满足;
使所述第二固定功能引擎响应于所述第二依赖条件被满足而执行所述第二层;
确定指示将由所述第三固定功能引擎执行的第三层的第三依赖条件的第三依赖关系信息;
使用所述更新后的第一索引、所述第二索引和所述第三索引确定所述第三依赖条件被满足;以及
使所述第三固定功能引擎能够响应于所述第三依赖条件被满足而执行所述第三层,其中所述第二层和所述第三层被并发地执行。
21.根据权利要求16所述的方法,其中所述第一固定功能引擎和所述第二固定功能引擎是不同的引擎类型,并且其中所述第一固定功能引擎是卷积核、单数据点处理器(SDP)、平面数据处理器(PDP)、跨通道数据处理器(CDP)、数据整形引擎或桥接直接存储器访问(BDMA)模块中的一个,其中所述第二固定功能引擎是所述卷积核、所述SDP、所述PDP、所述CDP、所述数据整形引擎或所述BDMA模块中的另一个。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/095739 WO2022246639A1 (en) | 2021-05-25 | 2021-05-25 | Hardware circuit for deep learning task scheduling |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115698937A true CN115698937A (zh) | 2023-02-03 |
Family
ID=84195182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180006557.4A Pending CN115698937A (zh) | 2021-05-25 | 2021-05-25 | 用于深度学习任务调度的硬件电路 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11983566B2 (zh) |
CN (1) | CN115698937A (zh) |
WO (1) | WO2022246639A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230185694A1 (en) * | 2021-12-10 | 2023-06-15 | International Business Machines Corporation | Debugging communication among units on processor simulator |
KR20240087096A (ko) * | 2022-12-12 | 2024-06-19 | 주식회사 모빌린트 | 리오더버퍼와 인터리빙을 이용한 dma와 dram 간 접속 장치 및 이를 이용한 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10949736B2 (en) * | 2016-11-03 | 2021-03-16 | Intel Corporation | Flexible neural network accelerator and methods therefor |
US10572376B2 (en) * | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
GB2568082B (en) * | 2017-11-03 | 2021-06-16 | Imagination Tech Ltd | Hierarchical mantissa bit length selection for hardware implementation of deep neural network |
GB2568081B (en) * | 2017-11-03 | 2022-01-19 | Imagination Tech Ltd | End-to-end data format selection for hardware implementation of deep neural network |
CN107844833A (zh) * | 2017-11-28 | 2018-03-27 | 郑州云海信息技术有限公司 | 一种卷积神经网络的数据处理方法、装置及介质 |
CN108256636A (zh) * | 2018-03-16 | 2018-07-06 | 成都理工大学 | 一种基于异构计算的卷积神经网络算法设计实现方法 |
CN109409510B (zh) * | 2018-09-14 | 2022-12-23 | 深圳市中科元物芯科技有限公司 | 神经元电路、芯片、系统及其方法、存储介质 |
US11055828B2 (en) * | 2019-05-09 | 2021-07-06 | Adobe Inc. | Video inpainting with deep internal learning |
US20190391796A1 (en) * | 2019-06-28 | 2019-12-26 | Intel Corporation | Control of scheduling dependencies by a neural network compiler |
CN115643815A (zh) * | 2021-05-18 | 2023-01-24 | 辉达公司 | 用于检测同质处理单元中的故障的基于硬件的故障扫描器 |
CN115867921A (zh) * | 2021-06-25 | 2023-03-28 | 辉达公司 | 用于神经网络的块之间的重叠数据的存储器管理 |
-
2021
- 2021-05-25 WO PCT/CN2021/095739 patent/WO2022246639A1/en active Application Filing
- 2021-05-25 CN CN202180006557.4A patent/CN115698937A/zh active Pending
- 2021-07-13 US US17/374,361 patent/US11983566B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2022246639A1 (en) | 2022-12-01 |
US11983566B2 (en) | 2024-05-14 |
US20220382592A1 (en) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8743131B2 (en) | Course grain command buffer | |
CN108279927B (zh) | 可调整指令优先级的多通道指令控制方法及系统、控制器 | |
US11403104B2 (en) | Neural network processor, chip and electronic device | |
TWI802800B (zh) | 用以致能工作負載之靜態映射的亂序管線化執行之方法及設備 | |
US20220043770A1 (en) | Neural network processor, chip and electronic device | |
US11983566B2 (en) | Hardware circuit for deep learning task scheduling | |
US20210319298A1 (en) | Compute-based subgraph partitioning of deep learning models for framework integration | |
EP3662376B1 (en) | Reconfigurable cache architecture and methods for cache coherency | |
US20220413752A1 (en) | Memory management for overlap data between tiles of neural networks | |
US20210326189A1 (en) | Synchronization of processing elements that execute statically scheduled instructions in a machine learning accelerator | |
CN111767995A (zh) | 运算方法、装置及相关产品 | |
CN111047035B (zh) | 神经网络处理器、芯片和电子设备 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
US20240233066A1 (en) | Kernel optimization and delayed execution | |
CN112949847A (zh) | 神经网络算法加速系统、调度系统及调度方法 | |
US11726857B2 (en) | Hardware-based fault scanner to detect faults in homogeneous processing units | |
US20190318229A1 (en) | Method and system for hardware mapping inference pipelines | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
WO2021212045A1 (en) | Synchronization of processing elements and software managed memory hierarchy in a machine learning accelerator | |
KR20210021262A (ko) | 다수의 비동기 소비자들을 위한 방법들 및 장치들 | |
US12026510B1 (en) | Using cycle counts to serve compute elements executing statically scheduled instructions for a machine learning accelerator | |
CN117234674A (zh) | 用于执行任务调度的方法及其相关产品 | |
CN111047503A (zh) | 一种顶点数组类命令的属性存储与组装优化电路 |
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 |