CN114270307A - 用于同步处理器的分片 - Google Patents
用于同步处理器的分片 Download PDFInfo
- Publication number
- CN114270307A CN114270307A CN202080058480.0A CN202080058480A CN114270307A CN 114270307 A CN114270307 A CN 114270307A CN 202080058480 A CN202080058480 A CN 202080058480A CN 114270307 A CN114270307 A CN 114270307A
- Authority
- CN
- China
- Prior art keywords
- slices
- slice
- candidate
- different
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 88
- 239000011159 matrix material Substances 0.000 claims abstract description 33
- 238000004590 computer program Methods 0.000 claims abstract description 13
- 230000001360 synchronised effect Effects 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims description 49
- 230000015654 memory Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 27
- 238000013467 fragmentation Methods 0.000 claims description 14
- 238000006062 fragmentation reaction Methods 0.000 claims description 14
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 5
- 238000001994 activation Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
- G06F15/825—Dataflow computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4451—Avoiding pipeline stalls
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
- G06F9/5044—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 considering hardware capabilities
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/506—Constraint
Abstract
用于为具有多个同步切片的设备分片数据流图的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。其中一种方法包括接收包括多个节点的数据流图的表示,每个节点表示将由具有多个同步切片的设备执行的相应矩阵运算。根据设备的一个或多个资源约束来评估数据流图的相应部分的到多个同步切片中的每个切片的候选分配。基于评估每个候选分配来选择候选分配之一。
Description
背景技术
本说明书涉及集成电路加速器的编译器技术。
同步集成电路加速器是为执行高度并行同步操作而设计的专用集成电路(application-specific integrated circuit,ASIC)。并行性是通过集成许多可以并发执行的不同独立处理元件来实现的。
这种设备非常适合于加速通过神经网络的推理过程(inference pass),例如,独立的处理元件中的每一个执行具有权重的层输入的不同乘法或加法。神经网络是采用多层运算从一个或多个输入预测一个或多个输出的机器学习模型。神经网络通常包括位于输入层和输出层之间的一个或多个隐藏层。每一层的输出被用作网络中另一层(例如下一个隐藏层或输出层)的输入。
加速器可以使用多个独立的处理切片(tile)。在本说明书中,切片指的是具有计算单元阵列的任何适当设备,该计算单元阵列可以至少部分并行地对矩阵的一部分执行计算。因此,每个单元包括允许该单元执行数学或其他计算的电路。在典型场景中,切片接收输入向量,使用计算阵列将输入向量乘以权重矩阵,并生成输出向量。
在本说明书中,切片是同步的意味着由计算阵列执行的操作不执行分支执行,例如在命令程序的if/else语句中。相反,操作可以部分或全部提前调度。例如,一些同步处理器的操作可以被调度到单个周期级别,这意味着计算阵列每个处理元件的每个操作都被分配给执行周期序列中的特定时隙。
发明内容
本说明书描述了编译为具有多个同步处理器的系统编写的程序的技术。如上所述,为了简洁,这种设备在本说明书中将被称为切片。
编译器可以利用周期级精度,可以在该精度下调度在多个同步处理器上执行的程序的操作。这允许操作的细粒度分片,以及其他性能增强。本说明书中描述的技术对于在操作线性阵列中的多个切片的系统中调度操作特别有用,其中每个切片仅与其在线性阵列中的相邻切片通信。然而,同样的技术也可以用在缺乏这种硬件配置的系统中。
可以实施本说明书中描述的主题的特定实施例,以便实现一个或多个以下优点。编译器可以利用各种分片技术来提高具有多个计算切片的设备的性能。在这样的设备上执行任务可以使用分片技术来适应设备规范/约束。编译器可以使用子层分片来提高设备的利用。编译器还可以使用平行四边形时间切分来减少或消除空闲区,在这些区域中,切片不执行任何工作,因为它们在等待某件事情发生。编译器还可以使用过度分片来改善切片之间的负载平衡,并处理编译时不可预测的负载平衡情况。编译器也可以使用锯齿形分片来平衡切片中的存储器和计算需求。
本说明书主题的一个或多个实施例的细节在附图和以下描述中阐述。根据描述、附图和权利要求,本主题的其他特征、方面和优点将变得明显。
附图说明
图1是用于分片具有多个切片的设备的矩阵操作的示例过程的流程图。
图2A-2B示出了子层分片的示例。
图3A-3D示出了平行四边形时间切分的示例。
图4A-C示出了过度分片的示例。
图5A-5C示出了称为锯齿形分片的另一种版本的过度分片的示例。
图6示出了可以用于在具有多个同步处理器的系统中实施处理的切片的示例。
不同附图中相同的附图标记和名称表示相同的元件。
具体实施方式
图1是用于分片具有多个切片的设备的矩阵操作的示例过程的流程图。如上所述,目标设备可以具有布置成线性阵列或被配置为作为其中每个切片仅与其相邻切片通信的线性阵列操作的切片。因此,响应于接收到数据流图,系统可以生成考虑到线性阵列中切片的排序的图的节点和切片之间的分配。为了方便起见,示例过程将被描述为由位于一个或多个位置并且根据本说明书被适当地编程的一个或多个计算机的系统执行。
该系统接收数据流图的表示,该数据流图指定了将由具有多个切片的设备执行的矩阵运算(110)。在本上下文中,矩阵运算应理解为包括矩阵或向量运算。数据流图的每个节点指定将在专用于该节点的矩阵上执行的矩阵运算。例如,图中的每个节点可以表示神经网络的一层,矩阵存储针对该层要使用和学习的权重。图的每条边代表数据的传播,其中一个节点的输出成为下一个节点的输入。该系统生成数据流图的部分的到多个切片中的每个切片的多个候选分配(120)。分片问题可以被公式化为搜索问题,以从多个候选分配当中找到数据流图的部分的到设备上的切片的最佳分配。下文更详细地描述了与生成待评估候选相关的各种技术。哪些候选分配实际上是最好的,这在很大程度上取决于数据流图和特定的应用。
系统根据设备的一个或多个资源约束来评估每个候选分配(130)。重要的资源约束包括存储器约束和带宽约束。
机器学习加速器的一个示例存储器约束是分配给特定切片的所有矩阵的所有权重必须适合该切片本地的静态随机存取存储器(SRAM)。换句话说,每个切片可以具有集成数量的常驻SRAM,这在执行分片时成为存储器约束。这种约束的原因涉及速度和带宽。首先,机器学习加速器被设计成尽可能快地执行通过模型的推理过程。对于某些应用,动态随机存取存储器(DRAM)不够快。此外,矩阵的权重可能很大,因此很难移动。因此,当分配给特定切片的所有矩阵的所有权重可以适合该切片的本地SRAM时,该切片不需在推理过程期间或在训练更新期间花费时间读取和写入权重。
另一个示例存储器约束是带宽约束。带宽约束指定了数据在图的节点之间要移动的速度。如果提议的分配将超过图中特定边的带宽阈值,则系统可以确定违反了带宽约束。
系统基于评估每个候选分配来选择候选分配之一(140)。作为一个示例,该系统可以执行层分片,其中来自输入程序的不同层的不同矩阵被分配给不同的相应切片。因此,例如,具有8层的神经网络可以将其权重矩阵分别分配给8个切片。
对于满足一个或多个资源约束的候选分配,系统可以确定哪个分配最佳地优化了设备上切片的利用。通常,这涉及计算所有切片的最大计算时间量,然后选择具有最小最大计算时间量的候选分配。对于具有同步切片的设备,该设备可以提前调度到周期级别,这些计算比其他类型设备的编译器估计要精确得多。
在选择候选分配之后,系统可以通过生成将由设备的切片执行的硬件指令来执行数据流图程序的进一步下降(lowering)。然后,系统可以将硬件指令连同矩阵的权重一起加载到设备上,并在设备上执行硬件指令,以便实现数据流图所表示的操作。
图2A-2B示出了子层分片的示例。子层分片指的是分割数据流图中特定节点的一个矩阵,并将不同的部分分配给不同的切片。图2A示出了一个示例候选分割,其中矩阵200的元素沿着对角线分割。图2B示出了另一示例候选分割,其中矩阵200的元素在列之间被分割。替代地或附加地,矩阵200可以在行之间分割。在一些实施方式中,每当矩阵超过大小阈值时,系统使用子层分片来生成候选分配。
为了生成子层分片的候选分配,需要向数据流图添加一些附加的复杂性。具体地,每一层的向量输入通常必须广播到接收子层分片结果的一部分的每个切片。此外,由单个切片生成的部分和或激活(activation)必须在稍后阶段合并到最终和或激活中,或在相同的切片上,或在不同的切片上。当评估涉及子层分片的候选分配时,编译器可以考虑这些附加的复杂性。
图3A-3C示出了平行四边形时间切分的示例。当切片在具有不同执行斜率的不同过程(pass)中执行某些操作时,平行四边形时间切分可能是有利的。执行斜率是指切片能够以多快的速度完全执行序列中的所有操作。这种应用对于神经网络来说是常见的,例如,通过所有切片单次过程可以表示通过网络的一次推理过程。
图3A示出了由不同的执行斜率引起的冲突。在图3A中,横轴表示时间。图3A中的切片以线性阵列结构布置,使得每个切片只能向其两个紧邻的邻居提供数据,并且只能从其两个紧邻的邻居接收数据。在一些实施方式中,线性阵列结构环绕,例如作为环形结构,使得最后一个切片可以与第一个切片通信,反之亦然。
因此,切片首先顺序执行“过程A”,从切片0开始向上到切片7。过程A具有机器学习模型的共同属性,即每个切片在接收到前一个切片的输出之前无法开始执行。因此,切片1必须等待切片0完成,切片2必须等待切片1完成,依此类推。
图3A中的虚线示出了这种普通模式如何形成过程A的平行四边形。
图3A还示出了第二过程,即过程B。过程B的操作花费的时间没有过程A多,因此,过程B比过程A具有更陡的执行斜率。
在本示例中,过程A和过程B的不同执行斜率会导致切片5和切片6之间的冲突。发生冲突的原因是,在切片5完成过程B时,切片6尚未完成过程A的部分。因此,必须由编译器或运行时间引入停顿301和302,这使切片5等待为过程B提供结果,直到切片6已经完成过程A的操作。
图3B示出了管理不同执行斜率的替代策略,其是在过程B甚至开始之前引入单个停顿303,使得过程B在切片7上的最后操作可以在过程A的最后操作之后立即执行。
这两种策略都导致空闲区310和320,其中切片处于空闲状态而不做任何工作。空闲区310小于空闲区320,尽管引入多个停顿引入了附加的编译时间或运行时间控制复杂性,这是图3B中的策略所缺乏的。
图3C示出了不同的执行斜率实际上如何引入附加的空闲区。在图3C中,具有更陡的执行斜率的过程B导致第一空闲区330。但是如果在过程B之后再次执行过程A,这将引入第二空闲区340。
图3D说明了如何使用平行四边形时间切分来管理不同的执行斜率。为了减少不同执行斜率引入的空闲区,编译器可以生成调度,强制所有过程有效地具有相同的执行斜率。因此,不同的过程有效地配合在一起,以消除空闲区。
编译器可以使用停顿或缓冲来强制执行较浅的斜率。例如,如图3D所示,过程在不同的切片之间引入缓冲,已经降低了过程B的执行斜率。换句话说,在切片0已经完成过程B之后,结果被存储在缓冲器360中。切片0然后可以立即开始处理过程A的第二次迭代。替代地或附加地,编译器可以在过程B的结束和过程A的第二次迭代的开始之间插入停顿。注意,尽管这种解决方案相比图3A所示的方法引入了更多的停顿,但是总体空闲区要小得多。
强制变浅执行斜率引入附加的控制复杂性,编译器在评估候选分配时可以考虑到这一点。特别地,强制变浅的执行斜率对某些过程引入了时序约束。例如,在图3D中,时序约束是切片1上的过程B不可以在切片0上的过程B之后立即开始。
图4A-C示出了过度分片的示例。过度分片是指比硬件要求更精细地分片矩阵的技术。换句话说,计算可以由单个切片来执行,但是矩阵由于其他原因而被分片。通常,这些其他原因与负载平衡有关。
图4A示出了在8个切片上执行具有9层的单次过程A。因此,本示例中的第9层完全分配给切片0。尽管切片0具有完全执行第9层所有操作的可用性和存储器容量,但这使得在此期间其余的切片完全未被占用。
图4B示出了过程A的第9层的过度分片。换句话说,即使单个切片可以执行第9层的所有操作,第9层也被过度分片以将其分布在所有8个其他切片上。可能存在也可能不存在层内数据相关性,因此,第9层的不同部分可以部分或完全并行执行。
因此,与只有一个切片执行第9层相比,该设备具有更好的负载平衡。当设备也在执行其他计算时,这尤其有利。
图4C示出了处理运行时负载平衡的过度分片的另一个应用。对于某些应用,事先不知道切片上的运行时负载。一个这样的示例是,该设备可以用于使用针对不同翻译训练的多个不同模型来提供自动机器翻译。例如,如图4C的左侧所示,切片0可以被分配来执行模型A,切片1可以被分配来执行模型B等。然而,在编译时并不知道这些模型的实际使用顺序,尤其是当设备用在为即将到来的互联网业务提供服务的后端服务器中时。
因此,可能的情况是切片0处理绝大多数请求,并且其他切片很少使用。
为了提供一些运行时负载平衡,编译器可以对模型进行过度分片,并将所有模型分布在所有芯片上,如图4C右侧所示。
现在,在运行时,无论运行时负载的实际分布如何,所有的切片都可以具有基本相等的利用。
图5A-5C示出了称为锯齿形分片的另一种版本的过度分片的示例。对于包括神经网络在内的许多机器学习应用来说,一个共同的模式出现了:层的计算复杂度降低,但存储器需求增加。
因此,如图5A所示,存储器模式会导致每个后续的切片需要越来越多的存储器。并且如图5B所示,计算模式需要越来越少的计算资源。
编译器可以使用锯齿形分片,使得所有的切片都有更平衡的存储器和计算分配。锯齿形分片本质上是将不同的互补层配对在一起,以便它们由同一个切片执行。因此,例如,锯齿形分片可以确保同一切片将执行第一层和第八层、第二层和第七层、第三层和第六层以及第四层和第五层。这种分配如图5C所示,其中计算模式呈锯齿形。
如图5C所示,第一层,层1,被过度分片并分布在切片0-3中,以分散第一层的计算复杂度。以类似但互补的方式,第八层也被分割并分布在相同的切片0-3中,以分散第八层的存储器需求。
同样,第二层总是被分配给与第七层相同的切片,第三层总是被分配给与第六层相同的切片,并且第四层总是被分配给与第五层相同的切片。
上面结合图2-4描述的分片技术的示例中的每一个都可以单独使用或者与其他分片技术中的任何一种或多种结合使用。
图6示出了可以用于在具有多个同步处理器的系统中实施处理的切片600的示例。例如,切片600可以用作切片线性阵列中或者切片作为切片线性阵列操作的系统中的一个切片。
每个切片600包括本地存储器602和耦合到存储器602的计算阵列604。本地存储器602包括位于计算阵列604附近的物理存储器。计算阵列604包括多个单元606。计算阵列604的每个单元606包括被配置为基于对单元606的数据输入(诸如激活输入和权重输入)来执行计算(例如乘法和累加操作)的电路。每个单元可以在时钟信号的周期上执行计算(例如,乘法和累加操作)。计算阵列604可以具有比列多的行、比行多的列或者相等数量的列和行。例如,在图6所示的示例中,计算阵列604包括排列成8行8列的64个单元。其他计算阵列大小也是可能的,诸如具有16个单元、32个单元、128个单元或256个单元等的计算阵列。每个切片可以包括相同数量的单元和/或相同大小的计算阵列。
包含在切片600中的存储器602可以包括例如随机存取存储器(RAM),诸如SRAM。每个存储器602可以被配置为存储与具有多个切片的系统的n个切片502相关联的总存储器的第(1/n)。存储器602可以被提供为单个芯片或多个芯片。例如,图6中所示的存储器602被提供为四单端口SRAM,其中的每一个都耦合到计算阵列604。替代地,存储器602可以作为两单端口SRAM或八单端口SRAM等来提供。在纠错编码之后,存储器的联合容量可以是但不限于例如16kB、32kB、64kB或128kB。通过将物理存储器602本地提供给计算阵列,可以极大地降低布线密度。
切片600还包括可控总线线路。可控总线线路可以分为多个不同的组。例如,可控总线线路可以包括第一组通用可控总线线路610,该第一组通用可控总线线路610被配置为在每个主方向上在切片之间传输数据。也就是说,第一组可控总线线路610可以包括:总线线路610a,被配置为沿着切片网格的第一维501向第一方向(在图6中被称为“东”)传输数据;总线线路610b,被配置为沿着切片网格的第一维101向第二方向(在图6中被称为“西”)传输数据,其中第二方向与第一方向相反;总线线路610c,被配置为沿着切片网格的第二维103向第三方向(在图6中被称为“北”)传输数据;以及总线线路610d,被配置为沿着切片网格的第二维103向第四方向(在图6中称为“南”)传输数据,其中第四方向与第三方向相反。通用总线线路610可以被配置为承载控制数据、激活输入数据、来自和/或去往通信接口的数据、来自和/或去往矢量处理单元的数据、以及将被切片600存储和/或使用的数据(例如,权重输入)。切片600可包括一个或多个控制元件621(例如,触发器和复用器),用于控制可控总线线路,并因此将数据路由到切片600和/或从存储器602路由数据和/或从切片600和/或从存储器602路由数据。
可控总线线路还可以包括第二组可控总线线路,本文称为计算阵列部分和总线线路620。计算阵列部分和总线线路620可以被配置为承载由计算阵列604执行的计算的数据输出。例如,如图6所示,总线线路620可以被配置为承载从计算阵列604中的行获得的部分和数据。在这种情况下,总线线路620的数量将与阵列604中的行数相匹配。例如,对于8×8计算阵列,将有8条部分和总线线路620,其中每一条都耦合到计算阵列604中对应行的输出。计算阵列输出总线线路620可以进一步被配置为耦合到系统内的另一个切片,例如作为切片线性阵列中相邻切片的计算阵列的输入。例如,切片600的阵列部分和总线线路620可以被配置成接收位于距切片600至少一个切片的第二切片的计算阵列的输入(例如,部分和620a)。计算阵列604的输出然后被添加到部分和线路620,以产生新的部分和620b,其可以从切片600输出。然后,部分和620b可以被传递到另一个切片,或者,替代地,传递到向量处理单元。例如,每条总线线路620可以耦合到向量处理单元的对应段(诸如图5中的段506)。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在包括本说明书中公开的结构及其结构等同物的计算机硬件中、或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以实施为一个或多个计算机程序,即编码在有形的非暂时性存储介质上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备或它们中的一个或多个的组合。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,其被生成来编码信息以传输到合适的接收器设备,用于由数据处理装置执行。
术语“数据处理装置”指的是数据处理硬件,并且包括用于处理数据的各种装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
也可以称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码)的计算机程序可以用任何版本的编程语言(包括编译或解释语言,或声明性或过程性语言)编写,并且它可以以任何形式(包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元)部署。程序可以,但不是必须,对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本,存储在专用于所讨论的程序的单个文件中,或者存储在多个协同文件中,例如存储一个或多个模块、子程序或代码部分的文件中。计算机程序可以被部署为在一台计算机上或位于一个站点或分布在多个站点并通过数据通信网络互连的多台计算机上执行。
对于由一台或多台计算机组成的系统来说,被配置为执行特定的操作或动作意味着该系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中导致该系统执行这些操作或动作。对于一个或多个计算机程序来说,被配置为执行特定操作或动作意味着一个或多个程序包括指令,当由数据处理装置执行时,该指令使得该设备执行这些操作或动作。
如在本说明书中所使用的,“引擎”或“软件引擎”指的是提供不同于输入的输出的软件实施的输入/输出系统。引擎可以是编码的功能块,诸如库、平台、软件开发工具包(“SDK”)或对象。每个引擎可以在任何适当类型的计算设备(例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或包括一个或多个处理器和计算机可读介质的其他固定或便携式设备)上实施。附加地,两个或更多个引擎可以在相同的计算设备上实施,或者在不同的计算设备上实施。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程计算机来执行。这些过程和逻辑流程也可以由专用逻辑电路,例如FPGA或ASIC,或者由专用逻辑电路和一个或多个编程计算机的组合来执行。
适于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或者任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的中央处理单元和一个或多个用于存储指令和数据的存储器设备。中央处理单元和存储器可以由专用逻辑电路来补充,或者包含在专用逻辑电路中。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从其接收数据或向其传输数据,或两者兼有。然而,计算机不需要有这样的设备。此外,计算机可以嵌入到另一个设备(例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器等)中。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及光盘和DVD光盘。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器),以及键盘和定点设备,例如鼠标、轨迹球或存在敏感显示器或用户可以向计算机提供输入的其他表面。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户设备上的网络浏览器。此外,计算机可以通过向个人设备(例如,智能电话)发送文本消息或其他形式的消息、运行消息应用并反过来从用户接收响应消息来与用户交互。
本说明书中描述的主题的实施例可以在计算系统中实施,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面、网络浏览器或用户可以通过其与本说明书中描述的主题的实施进行交互的应用的客户端计算机,或者一个或多个这样的后端、中间件或前端组件的任意组合。该系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户机和服务器的关系是通过运行在各自计算机上,并且彼此之间具有客户机-服务器关系的计算机程序产生的。在一些实施例中,服务器将数据(例如,HTML页面)传输到充当客户端的用户设备,例如,为了向与该设备交互的用户显示数据和从该用户接收用户输入。在用户设备处生成的数据,例如用户交互的结果,可以在服务器处从该设备接收。
除了上述实施例之外,以下实施例也是创新的:
实施例1是一种方法,包括:
接收包括多个节点的数据流图的表示,每个节点表示将由具有多个同步切片的设备执行的相应矩阵操作;
生成数据流图的相应部分的到多个同步片的每个切片的多个候选分配;
根据设备的一个或多个资源约束来评估多个候选分配当中的每个候选分配;以及
基于评估每个候选分配来选择候选分配之一。
实施例2是实施例1的方法,其中多个同步切片中的每个切片包括独立处理元件的计算阵列。
实施例3是实施例1-2中任一实施例的方法,其中根据一个或多个资源约束来生成多个候选分配包括根据SRAM存储器约束来生成候选分配,SRAM存储器约束指定相关联的操作的所有权重必须适合在对应同步切片本地的本地SRAM。
实施例4是实施例3的方法,其中每个本地SRAM是集成到将执行操作的同一同步切片中的常驻存储器。
实施例5是实施例1-4中任一实施例的方法,其中生成多个候选分配包括将不同相应层的矩阵分配给不同相应切片。
实施例6是实施例1-5中任一实施例的方法,其中生成多个候选分配包括对程序中特定节点的矩阵执行子层分片,包括将矩阵的不同块分配给不同的相应同步切片。
实施例7是实施例6的方法,其中将矩阵的不同块分配给不同的相应同步切片包括沿着行或列分割矩阵或者对角分割矩阵。
实施例8是实施例7的方法,其中操作还包括对超过大小阈值的任何矩阵执行子层分片。
实施例9是实施例1-8中任一实施例的方法,其中生成多个候选分配包括执行平行四边形时间切分,使得最初具有不同执行斜率的不同过程具有基本相似的执行斜率。
实施例10是实施例9的方法,其中执行平行四边形时间切分包括:
为两个不同的过程中的每一个计算相应的执行斜率;
确定第一过程具有比第二过程更小的执行斜率;以及
作为响应,修改候选分配,使得第一过程具有较浅的执行斜率。
实施例11是实施例10的方法,其中修改候选分配包括在候选分配当中插入缓冲或停顿。
实施例12是实施例1-11中任一实施例的方法,其中生成多个候选分配包括执行过度分片,使得可以完全由切片之一执行的数据流图的节点被分割在多个不同的切片当中。
实施例13是实施例12的方法,其中执行过度分片包括向每个切片分配一个相应的层,并将最后一层分割到所有切片当中。
实施例14是实施例12的方法,其中执行过度分片包括横跨所有切片分割多个矩阵。
实施例15是实施例1-14中任一实施例的方法,其中生成多个候选分配包括通过将具有不同存储器和计算要求的不同层配对在一起来执行锯齿形分片。
实施例16是实施例15的方法,其中将不同层配对在一起包括将第一层与最后一层配对,使得同一切片执行第一层和最后一层二者。
实施例17是实施例16的方法,其中第一层具有最大的计算需求,并且最后一层具有最大的存储器需求。
实施例18是实施例1-17中任一实施例的方法,其中切片被排列成线性阵列,使得每个切片被配置为仅向一个或两个相邻切片提供数据。
实施例19是一种系统,包括:一个或多个计算机和存储指令的一个或多个存储设备,当由一个或多个计算机执行时,该指令可操作以使一个或多个计算机执行权利要求1至18中任一项的方法。
实施例20是编码有计算机程序的计算机存储介质,该程序包括指令,当由数据处理装置执行时,该指令可操作以使数据处理装置执行实施例1至18中任一实施例的方法。
尽管本说明书包含许多具体的实施细节,但这些不应被解释为对任何发明的范围或对所要求保护的范围的限制,而是对特定发明的特定实施例可能特有的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或者在任何合适的子组合中实施。此外,尽管特征可以在上面被描述为在某些组合中起作用,并且甚至最初被这样要求保护,但是在一些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以指向子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描述了操作,但是这不应该被理解为要求以所示的特定顺序或顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中或者封装到多个软件产品中。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个示例,附图中描述的过程不一定需要所示的特定顺序或顺序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
Claims (20)
1.一种系统,包括:
一个或多个计算机和一个或多个存储指令的存储设备,当由所述一个或多个计算机执行时,所述指令可操作以使所述一个或多个计算机执行操作,所述操作包括:
接收包括多个节点的数据流图的表示,每个节点表示将由具有多个同步切片的设备执行的相应矩阵操作;
生成所述数据流图的相应部分的到所述多个同步切片中的每个切片的多个候选分配;
根据设备的一个或多个资源约束来评估所述多个候选分配当中的每个候选分配;以及
基于评估每个候选分配来选择所述候选分配中的一个。
2.根据权利要求1所述的系统,其中所述多个同步切片中的每个切片包括独立处理元件的计算阵列。
3.根据权利要求1所述的系统,其中根据一个或多个资源约束生成所述多个候选分配包括根据SRAM存储器约束生成所述候选分配,所述SRAM存储器约束指定相关联的操作的所有权重必须适合在对应同步切片本地的本地SRAM。
4.根据权利要求3所述的系统,其中每个本地SRAM是集成到将执行所述操作的同一同步切片中的常驻存储器。
5.根据权利要求1所述的系统,其中生成所述多个候选分配包括将不同相应层的矩阵分配给不同相应切片。
6.根据权利要求1所述的系统,其中生成所述多个候选分配包括对所述程序中特定节点的矩阵执行子层分片,包括将所述矩阵的不同块分配给不同的相应同步切片。
7.根据权利要求6所述的系统,其中将所述矩阵的不同块分配给不同的相应同步切片包括沿着行或列分割所述矩阵或者对角分割所述矩阵。
8.根据权利要求7所述的系统,其中所述操作还包括对超过大小阈值的任何矩阵执行子层分片。
9.根据权利要求1所述的系统,其中生成所述多个候选分配包括执行平行四边形时间切分,使得最初具有不同执行斜率的不同过程具有基本相似的执行斜率。
10.根据权利要求9所述的系统,其中执行平行四边形时间切分包括:
为两个不同的过程中的每一个计算相应的执行斜率;
确定第一过程具有比第二过程更小的执行斜率;以及
作为响应,修改所述候选分配,使得所述第一过程具有较浅的执行斜率。
11.根据权利要求10所述的系统,其中修改所述候选分配包括将缓冲或停顿插入到所述候选分配当中。
12.根据权利要求1所述的系统,其中生成所述多个候选分配包括执行过度分片,使得可以完全由所述切片之一执行的所述数据流图的节点被分割在多个不同的切片当中。
13.根据权利要求12所述的系统,其中执行过度分片包括向每个切片分配一个相应的层,并将最后一层分割到所有所述切片当中。
14.根据权利要求12所述的系统,其中执行过度分片包括横跨所有所述切片分割多个矩阵。
15.根据权利要求1所述的系统,其中生成所述多个候选分配包括通过将具有不同存储器和计算要求的不同层配对在一起来执行锯齿形分片。
16.根据权利要求15所述的系统,其中将不同的层配对在一起包括将第一层与最后一层配对,使得同一切片执行所述第一层和所述最后一层两者。
17.根据权利要求16所述的系统,其中所述第一层具有最大的计算需求,并且所述最后一层具有最大的存储器需求。
18.根据权利要求1所述的系统,其中所述切片被布置成线性阵列,使得每个切片被配置为仅向一个或两个相邻切片提供数据。
19.一种方法,包括执行权利要求1至18中任一项的操作。
20.一种编码有计算机程序的计算机存储介质,所述程序包括指令,当由数据处理装置执行时,所述指令可操作以使所述数据处理装置执行权利要求1至18中任一项的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962890471P | 2019-08-22 | 2019-08-22 | |
US62/890,471 | 2019-08-22 | ||
PCT/US2020/047206 WO2021035055A1 (en) | 2019-08-22 | 2020-08-20 | Sharding for synchronous processors |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114270307A true CN114270307A (zh) | 2022-04-01 |
Family
ID=72474370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080058480.0A Pending CN114270307A (zh) | 2019-08-22 | 2020-08-20 | 用于同步处理器的分片 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220300450A1 (zh) |
EP (1) | EP3987394A1 (zh) |
JP (2) | JP7423757B2 (zh) |
KR (1) | KR20220031717A (zh) |
CN (1) | CN114270307A (zh) |
TW (1) | TWI776212B (zh) |
WO (1) | WO2021035055A1 (zh) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPQ131399A0 (en) * | 1999-06-30 | 1999-07-22 | Silverbrook Research Pty Ltd | A method and apparatus (NPAGE02) |
US5682107A (en) * | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
TWI353521B (en) * | 2006-09-28 | 2011-12-01 | Sandisk Corp | Soft-input soft-output decoder for nonvolatile mem |
US8862625B2 (en) * | 2008-04-07 | 2014-10-14 | Teradata Us, Inc. | Accessing data in a column store database based on hardware compatible indexing and replicated reordered columns |
JP5036523B2 (ja) * | 2007-12-21 | 2012-09-26 | 三菱電機株式会社 | プログラム並列化装置 |
US9176794B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
KR101497516B1 (ko) * | 2010-12-29 | 2015-03-02 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화 |
JP5798378B2 (ja) * | 2011-05-30 | 2015-10-21 | キヤノン株式会社 | 装置、処理方法、およびプログラム |
US9563399B2 (en) * | 2013-08-30 | 2017-02-07 | Cavium, Inc. | Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features |
CN105630441B (zh) * | 2015-12-11 | 2018-12-25 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于统一染色技术的gpu系统 |
US11562115B2 (en) * | 2017-01-04 | 2023-01-24 | Stmicroelectronics S.R.L. | Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links |
US10387298B2 (en) * | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US10452452B2 (en) * | 2017-04-17 | 2019-10-22 | Wave Computing, Inc. | Reconfigurable processor fabric implementation using satisfiability analysis |
WO2018195120A1 (en) * | 2017-04-17 | 2018-10-25 | Oshea Timothy James | Placement and scheduling of radio signal processing dataflow operations |
WO2018193370A1 (en) * | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
US10380063B2 (en) * | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
-
2020
- 2020-08-20 JP JP2022511309A patent/JP7423757B2/ja active Active
- 2020-08-20 US US17/636,805 patent/US20220300450A1/en active Pending
- 2020-08-20 EP EP20771947.7A patent/EP3987394A1/en active Pending
- 2020-08-20 WO PCT/US2020/047206 patent/WO2021035055A1/en unknown
- 2020-08-20 KR KR1020227004916A patent/KR20220031717A/ko not_active Application Discontinuation
- 2020-08-20 CN CN202080058480.0A patent/CN114270307A/zh active Pending
- 2020-08-21 TW TW109128609A patent/TWI776212B/zh active
-
2024
- 2024-01-17 JP JP2024005431A patent/JP2024040198A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2024040198A (ja) | 2024-03-25 |
US20220300450A1 (en) | 2022-09-22 |
WO2021035055A1 (en) | 2021-02-25 |
TW202111562A (zh) | 2021-03-16 |
JP7423757B2 (ja) | 2024-01-29 |
JP2022544842A (ja) | 2022-10-21 |
KR20220031717A (ko) | 2022-03-11 |
TWI776212B (zh) | 2022-09-01 |
EP3987394A1 (en) | 2022-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6898496B2 (ja) | 計算グラフの処理 | |
US11087216B2 (en) | Modifying computational graphs | |
US20210295161A1 (en) | Training neural networks represented as computational graphs | |
KR20200021104A (ko) | 계산 그래프들의 스트림-기반 가속기 프로세싱 | |
CN110889439B (zh) | 一种图像特征提取方法、装置及电子设备和存储介质 | |
US11868243B2 (en) | Topological scheduling | |
US20220276847A1 (en) | Compilation for synchronous processor | |
US11221979B1 (en) | Synchronization of DMA transfers for large number of queues | |
JP2023145676A (ja) | 伝搬レイテンシの短縮 | |
CN114270307A (zh) | 用于同步处理器的分片 | |
US11775299B1 (en) | Vector clocks for highly concurrent execution engines | |
Cao | Performance Optimization of Big Data Computing Workflows for Batch and Stream Data Processing in Multi-Clouds |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40071879 Country of ref document: HK |