CN112346852A - 矩阵求和运算的分布式物理处理 - Google Patents
矩阵求和运算的分布式物理处理 Download PDFInfo
- Publication number
- CN112346852A CN112346852A CN202010781703.8A CN202010781703A CN112346852A CN 112346852 A CN112346852 A CN 112346852A CN 202010781703 A CN202010781703 A CN 202010781703A CN 112346852 A CN112346852 A CN 112346852A
- Authority
- CN
- China
- Prior art keywords
- processing
- elements
- processing elements
- perform
- output
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 256
- 239000011159 matrix material Substances 0.000 title claims abstract description 51
- 238000000638 solvent extraction Methods 0.000 claims abstract description 41
- 238000000034 method Methods 0.000 claims description 53
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 4
- 239000000306 component Substances 0.000 description 13
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 8
- 238000005192 partition Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004557 technical material Substances 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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
- 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/505—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 load
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Multi Processors (AREA)
Abstract
本申请涉及矩阵求和运算的分布式物理处理。接收执行矩阵的指定部分的一个或更多个逐元素求和的运算的规范。分析运算的规范以选择要应用的处理负载划分的类型。基于所选择的要应用的处理负载划分的类型,对在多个物理处理元件上并行执行该运算所需的处理进行划分。经划分的处理被分配给物理硬件处理元件,以并行执行矩阵的指定部分的逐元素求和。
Description
发明背景
矩阵运算是科学和工程计算中使用的许多数值算法的核心组成部分。例如,沿着一个或更多个维度对矩阵中的元素求和是人工智能计算(例如推理)的一个重要部分。矩阵运算通常是计算密集型的,需要大量的计算机存储器、处理器和数据传输资源。许多运算都与繁重的计算和数据移动组件相关联。需要硬件和技术来减少矩阵运算的计算负担。
附图简述
在以下的详细描述和附图中公开了本发明的各种实施例。
图1A和图1B示出了对矩阵的指定部分执行逐元素求和(element-wise sum)的示例。
图2是示出用于分配矩阵求和运算的物理处理的系统的实施例的框图。
图3A示出了处理元件(processing element)的示例网格(mesh)。
图3B示出了包括主处理元件的处理元件的示例网格。
图4是示出用于分配矩阵求和运算的物理处理的过程的实施例的流程图。
图5是示出基于计算度量的分析来对执行矩阵求和运算所需的处理进行划分的过程的实施例的流程图。
图6是示出通过将处理元件的网格的指定部分分配给与长度向量(lengthsvector)中的条目相关联的每组索引来对处理进行划分的过程的实施例的流程图。
图7是示出通过将所有输出元素(output element)分配给每个处理元件来对处理进行划分的过程的实施例的流程图。
详细描述
本发明可以以多种方式实现,包括作为过程;装置;系统;物质的组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,例如被配置为执行存储在耦合到处理器的存储器上和/或由该存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,可以改变所公开的过程的步骤顺序。除非另有说明,否则被描述为被配置为执行任务的诸如处理器或存储器的组件可以被实现为在给定时间被临时配置为执行任务的通用组件或者被制造为执行任务的特定组件。如本文所使用的,术语“处理器”指的是被配置成处理数据(例如计算机程序指令)的一个或更多个设备、电路和/或处理核心。
下面提供了本发明的一个或更多个实施例的详细描述连同说明本发明原理的附图。结合这些实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包括许多替代、修改和等同物。为了提供对本发明的全面理解,在以下描述中阐述了许多具体细节。这些细节是出于示例的目的而提供的,并且本发明可以根据权利要求来被实施,而不需要这些具体细节中的一些或全部。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术材料,以便不会不必要地模糊本发明。
公开了分配矩阵求和运算的物理处理。在一些实施例中,接收执行矩阵的指定部分的逐元素求和的运算的规范(specification)。分析运算的规范以选择要应用的处理负载划分(processing load partitioning)的类型。基于所选择的要应用的处理负载划分的类型,对在多个物理处理元件上并行执行运算所需的处理进行划分。经划分的处理被分配给物理处理元件,以并行执行矩阵的指定部分的逐元素求和。所公开技术的实际益处和技术益处包括减少矩阵运算的延迟、降低功耗以及潜在地有更多的计算资源分配给其他工作负载(workload)。
在一些实施例中,矩阵的指定部分的逐元素求和由系统执行,在该系统中,各个计算单元(在本文也称为处理元件)具有它们自己的私有存储器空间,并且可以使用一组通信原语(communication primitive)以规则模式在它们之间进行通信。由于这些处理元件的连接性质,该系统可被视为分布式存储器并行系统。在各种实施例中,矩阵的指定部分的逐元素求和对于并行化而言是具有挑战性的运算,因为它可能需要以不规则的方式读取大量数据,并且可能具有相对低的算术强度,限制了可以用于隐藏数据移动成本的计算量。进一步加大复杂性的是,所需的计算可能在输出元素之间不均匀地分布。
可以执行输出元素的并行化和单独输出元素的计算的并行化。在一些实施例中,处理元件的子集可以使处理元件的网格的总存储器带宽饱和,这允许仅将处理元件的子集分配给与存储器流量相关的操作,留下额外的处理元件可用于支持计算(bolstercomputation)。如上所述,一个挑战是每个输出元素可以在所需的计算量方面发生变化,如果并行化效率低,会导致处理元件之间的负载不均衡。为了解决这个问题,在一些实施例中,执行负载均衡操作,使得每个处理元件负责大致相同的总计算量。
处理元件可以被分组为单元,其中每组单元基于负载均衡方法被分配一个或更多个输出元素。每个输出元素的计算可以跨给定组中的处理元件并行化。通过对计算单元进行分组,可以通过调整侧重于存储器流量的单元(memory-traffic focused unit)与侧重于计算的单元之间的均衡,来均衡逐元素求和运算的存储器密集型部分和计算密集型部分。也可以使用将所有输出元素分配给每个处理元件的替代并行化方案。在该方案下,每个处理元件负责计算每个输出元素的唯一部分更新(partial update)。一旦所有的部分更新被(并行)计算,涉及所有处理元件的最终归算(final reduction)将部分更新累积成最终输出。
图1A和图1B示出了对矩阵的指定部分进行逐元素求和的示例。图1A示出了涉及数据张量D(例如,矩阵)和索引向量I的逐元素求和。计算张量切片(slice)的逐元素求和,使得输出O[:]=总和(D[I[:],:])。在该示例中,求和仅在第一维度中,并且其余维度保留在输出中。如图1A所示,该计算可以用图形表示,其中阴影输出O等于D的两个阴影输入区域的总和。要进行求和的D的索引位置在1和3,因为索引编号从零开始。
图1B示出了一个更复杂的逐元素求和。在图1B所示的示例中,针对不同的索引集的多个独立的求和运算被执行。每个总和对应于输出O的不同行。在所示的示例中,提供多个独立的求和运算是通过将独立求和中涉及的索引集连接在一起并提供长度向量L来为每个输出划定(delineate)贡献(contribution)来实现的。例如,如图1B所示,长度向量L表示第一输出总和涉及来自I的前两个索引位置的贡献。因此,如阴影所示,第一输出总和包括D[2,:]和D[4,:](其中索引编号从零开始)。类似地,因为长度向量L指示第二输出总和涉及来自I的接下来的三个索引位置的贡献,所以对D[3,:]、D[1,:]和D[5,:]求和以获得第二输出总和(如图1B中的第二种阴影所示)。
具有多个独立的求和运算在输出切片之间引入了计算失衡,因为不同的输出切片通常具有不同的计算要求。例如,如图1B所示,第一个输出求和涉及两个索引位置的求和,而第二个输出求和涉及三个索引位置的计算更密集型求和。一般来说,失衡会更重大(例如,对于第一输出总和,仅仅在两个索引位置求和,对于第二输出总和,在10个索引位置求和,对于第三输出总和,在50个索引位置求和,等等)。一般来说,在产生单个输出总和时,可能涉及任意大数量的索引位置。换句话说,输出O的每个切片都有与之相关的潜在的显著不同的计算成本。为了利用分布式存储器并行系统(例如,被配置成分配物理处理的系统),在处理元件之间对计算负载进行均衡。
对矩阵的特定部分进行逐元素求和在许多技术领域都有应用。例如,这种运算用于许多神经网络表示(例如,SparseNN模型)。可以执行逐元素求和来组合表中的条目(例如,与神经网络中的连接相关联的权重)。组合条目在各种应用中是有用的(例如,生成用于匹配(诸如图像识别模型中的图像与标签的匹配、广告模型中的广告与用户的匹配等)的度量)。
图2是示出用于分配矩阵求和运算的物理处理的系统的实施例的框图。分布式矩阵求和系统200获取输入202并产生输出210。在一些实施例中,输入202包括数据张量(例如,矩阵)D和索引向量I。图1A示出了包括数据张量D和索引向量I的示例输入。输入202还可以包括长度向量L。图1B示出了包括数据张量D、索引向量I和长度向量L的示例输入。在一些实施例中,输出210是包括求和运算的结果的输出向量/矩阵/张量O。图1A示出了输出O的示例,该输出是通过在特定索引位置在第一维度上对数据张量D求和而得到的。输出210还可以包括来自其他求和运算的结果。换句话说,输出210可以包括来自多个独立求和运算的结果。图1B示出了示例输出,其中如由长度向量L划定的,数据张量D的两个独立的索引集贡献了两个独立的输出总和。
图2所示的示例包括接口模块204、处理负载划分模块206和处理元件的网格208。接口模块204接收执行矩阵(或张量)的指定部分的逐元素求和的运算的规范。在一些实施例中,该规范源自输入202(例如,来自指示要进行求和的矩阵的指定部分的索引和长度向量)。接口模块204接收输入202,接收由处理元件的网格208产生的处理结果,并返回输出210。接口模块204的示例实现包括任何硬件和/或软件系统、组件、过程和/或应用。接口模块204可以被实现为在一个或更多个处理器上执行的软件组件、被实现为诸如可编程逻辑器件的硬件、被实现为专用集成电路等。
在一些实施例中,处理负载划分模块206分析由接口模块204接收的运算规范,以便选择要应用的处理负载划分(本文也称为负载均衡)的类型。在各种实施例中,基于所选择的要应用的处理负载划分的类型,处理负载划分模块206对在多个物理处理元件上并行执行运算所需的处理进行划分。在各种实施例中,处理负载划分模块206将由接口模块204接收的输入202转发给处理元件的网格208进行处理。如本文进一步详细描述的(例如,参见图5),处理负载划分模块206可以基于要执行的处理的特性从多个负载均衡技术中进行选择,这取决于特定输入202和输出210的特性(因为运算基于每个请求而工作)和/或处理硬件(例如,处理元件的网格208)的特性。
处理负载划分模块206的示例实现包括任何硬件和/或软件系统、组件、过程和/或应用。处理负载划分模块206可以被实现为在一个或更多个处理器上执行的软件组件、被实现为诸如可编程逻辑器件的硬件、被实现为专用集成电路等。硬件实现(例如,使用专用数字逻辑)的优点是更快的处理和更低的延迟。还可以将接口模块204和处理负载划分模块206实现为单个组合模块。在这样的实现中,组合模块将接收输入202、与处理元件的网格208连接以及返回输出210。
在各种实施例中,处理元件的网格208根据由处理负载划分模块206确定的经划分的处理方法来执行对输入202的处理以产生输出210。处理元件的网格中的每个处理元件是物理处理元件,其被配置为执行逐元素相加。物理处理元件的示例包括专用数字逻辑电路、可重编程逻辑(例如,现场可编程门阵列)、专用集成电路、中央处理单元等。在各种实施例中,处理元件的网格208将经划分的处理分配给物理处理元件,以并行执行输入202中包括的对矩阵的指定部分的逐元素求和(例如,通过使用不同的处理元件同时对矩阵的不同部分求和)。图3A和图3B更详细地示出了处理元件的网格208的示例架构。
在图2所示的示例中,示出了组件之间的部分通信路径。可能存在其他通信路径,并且图2的示例已被简化以清楚地说明该示例。例如,没有详尽示出在各种组件之间传输数据的通信信道。尽管为了简化图表,只示出了组件的单一实例,但是图2中示出的任何组件的附加实例都可能存在。图2中所示的组件和连接的数量仅仅是说明性的。图2中未示出的组件也可能存在。
图3A示出了处理元件的示例网格。在所示的示例中,处理元件的网格300包括处理元件的组A 302、组B 304、组C 306和组D 308。每个单独的处理元件(PE)在类型上可以不同于其他处理元件。处理元件的示例包括专用数字逻辑电路、可重编程逻辑(例如,现场可编程门阵列)、专用集成电路、中央处理单元等。该示例是说明性的,而不是限制性的。不同数量的组、每个组中的单独元件以及组的排列都是可能的。
图示的示例示出了示意图/逻辑组。处理元件的分组和/或单个处理元件不一定位于同一物理位置。在各种实施例中,每个处理元件具有其自己的私有存储器空间(图3A中未示出),并且使用一组通信协议以规则模式与其他处理元件通信。例如,每个处理元件可以经由网络(图3A中未示出)与其他处理元件通信和/或从处理元件的网格300外部接收数据。网络的示例包括以下项中的一个或更多个:直接或间接物理通信连接、移动通信网络、互联网、内联网、局域网、广域网、存储区域网以及将两个或更多个系统、组件或存储设备连接在一起的任何其他形式。
在各种实施例中,与处理元件的网格相关联的目标是在处理元件之间均衡计算工作负载。因为(例如,图2的输出210的)每个输出元素可能需要不同的工作量,所以潜在地希望将多个输出元素分配给单个处理元件,使得该处理元件不会空闲。存储器带宽可能是一个限制因素。例如,几个处理元件可能足以使存储器带宽饱和。在各种实施例中,负载均衡考虑了计算和存储器带宽之间的均衡。组内并行化可以用于减少存储器带宽使用。存储器带宽成为限制因素的程度取决于用于处理的特定硬件。例如,一些硬件可以快速计算,但获取数据较慢(使存储器带宽更令人担忧),反之亦然(使存储器带宽不太令人担忧)。因此,对处理与存储器流量相关的运算和与计算相关的运算的处理元件的特定分配组合是依赖于硬件的。
图3B示出了包括主处理元件的处理元件的示例网格。图3A和图3B中示出的示例类似(例如,在处理元件的实现和处理元件之间的通信方面),除了图3B中示出的示例包括主处理元件。处理元件的网格310包括处理元件的组A 312、组B 314、组C 316和组D 318,并且每个组包括主处理元件。主处理元件也可以被实现为专用数字逻辑电路、可重编程逻辑(例如,现场可编程门阵列)、专用集成电路、中央处理单元等。如本文进一步详细描述的,主处理元件处理与工作队列相关联的附加协调任务。
图4是示出用于分配矩阵求和运算的物理处理的过程的实施例的流程图。在一些实施例中,图4的过程由图2的分布式矩阵求和系统200执行。
在402,接收执行与矩阵的指定部分相关联的运算的请求。在一些实施例中,运算是对矩阵的指定部分的一个或更多个逐元素求和。例如,可以执行如图1A和图1B所示的沿着维度的逐元素求和。如图1B所示,与矩阵相关联的索引向量和长度向量可以用于指定矩阵的哪些部分应被求和以形成哪些输出。在一些实施例中,执行运算的请求由图2的接口模块204接收。
在404,分析请求以选择处理负载划分的类型。在一些实施例中,该分析由图2的处理负载划分模块206执行。在一些实施例中,分析索引向量和长度向量(例如,如图1B所示)。例如,长度向量中条目的数量对应于输出元素的数量。此外,长度向量中条目的值对应于与产生每个输出元素相关联的相关计算量。例如,在图1B中,第一个输出元素需要对D的两个区域求和,而第二个输出元素需要对三个区域求和,这对应于更高的计算负载。在一些实施例中,确定每个输出元素的计算工作量。该度量是特定于硬件的,并且可以取决于存储器带宽是限制因素的程度。例如,一些硬件可以快速计算,但获取数据较慢(使存储器带宽更令人担忧),反之亦然(使存储器带宽不太令人担忧)。
可以基于分析来选择各种类型的处理负载划分(负载均衡)。负载均衡方法的一个示例是将处理元件的网格的指定部分(例如,单个处理元件、一行处理元件、一组处理元件等)分配到与长度向量中的条目相关联的每组索引(对应于对单个输出元素的贡献)。例如,图1B中的L的第一条目可以被分配给图3A的处理元件的网格300中的第一组,而图1B中的L的第二条目可以被分配给处理元件的网格300中的第二组。在一些实施例中,长度向量L的条目被划分,使得每个分区的计算工作负载近似相等。例如,如果L=[2,3,1],则L的第一元素和第三元素可以被分配给第一组处理元件,并且L的第二元素可以被分配给第二组处理元件,从而在第一组处理元件和第二组处理元件之间产生均衡的工作负载。I的具有大致相同的数据传输和计算要求的区域可以被分配给每个处理元件或处理元件组。可以在处理元件的网格的第二维度上对D的索引进行划分,以并行化计算。如下面进一步详细描述的,对L进行划分的问题(例如,如在L=[2,3,1]示例中)是NP完全(NP-Complete)问题(或者最好的情况下是NP难题(NP-Hard)),对于该问题,近似算法存在,该算法具有不同的界限和运行时间。当每个输出元素的计算工作量相对较低时,上述负载均衡方法通常更合适。
负载均衡方法的另一个示例是将所有输出元素分配给每个处理元件,并向各个处理元件分派计算对每个输出元素的最终结果的部分贡献(partial contribution)的任务。在这种方法中,一旦每个处理元件完成,就执行最终归算,以将部分贡献累积成最终结果。当每个输出元素的计算工作量相对较高时,这种负载均衡方法通常更合适,因为当每个输出元素的计算工作量相对较高时,使用利用处理元件的整个网格的负载均衡方法更高效。
在一些实施例中,使用工作队列而不是在计算矩阵求和运算之前运行负载均衡逻辑,其中队列的元素对应于输出元素。通过这种方法,关于同一个输出元素协同工作的多组处理元件可以从工作队列中取出项目并执行相关的计算。这可以通过为每个组指定一个主处理元件(例如,如图3B的处理元件的网格310所示)来实现,该主处理元件负责以原子方式(atomically)访问工作队列,以确定该组将致力于的下一个索引(例如,长度向量L的索引)。然后,主处理元件可以将要致力于的新的索引广播给组中的其他成员,他们可以开始关于这个特定的结果的计算。就硬件而言,这需要逻辑来实现某种形式的原子性(atomicity)。使用工作队列而不是预先使用负载均衡算法的一个优点是减少了与前期负载均衡算法相关的开销延迟。通过使用工作队列,可以保持处理元件组之间的均衡性,因为任何空闲的组都可以访问工作队列来获得更多的工作。当没有更多的工作可用时,处理元件可以简单地等待其他工作完成后再继续。
在406,对在多个物理处理元件上执行运算所需的处理进行划分。在一些实施例中,该划分由图2的处理负载划分模块206执行。在一些实施例中,使用这样的划分方法,该方法将处理元件的网格的指定部分(例如,单个处理元件、一行处理元件、一组处理元件等)分配给与长度向量中的条目相关联的每组索引。在一些实施例中,使用这样的划分方法,该方法将所有输出元素分配给每个处理元件并向各个处理元件分派计算对每个输出元素的最终结果的部分贡献的任务。在一些实施例中,使用工作队列方法。其他划分(负载均衡)方法也是可能的。
在408,经划分的处理被分配给物理处理元件以执行运算。在一些实施例中,这种分配发生在图2的处理元件的网格208、图3A的处理元件的网格300或图3B的处理元件的网格310中。在一些实施例中,使用连接物理处理元件的通信网络来执行这种分配。
图5是示出基于计算度量的分析来对执行矩阵求和运算所需的处理进行划分的过程的实施例的流程图。在一些实施例中,图5的过程由图2的处理负载划分模块206执行。在一些实施例中,在图4的404和406中执行图5的过程的至少一部分。
在502,计算与处理负载相关联的计算度量值。在一些实施例中,计算度量值至少部分基于每个输出元素的计算工作量。
在504,确定所计算的计算度量值是否满足指定的阈值。在一些实施例中,这对应于确定每个输出元素的计算工作量是否满足硬件特定的阈值。如果在504确定计算度量值不满足指定阈值,则在506,根据第一类型的处理负载划分(负载均衡)来对处理进行划分。例如,当每个输出元素的计算工作量相对较低时,可以使用这样的负载均衡方法,该方法将处理元件的网格的指定部分(例如,单个处理元件、一行处理元件、一组处理元件等)分配给与长度向量中的条目相关联的每组索引。通过这种方法,可以为一小组处理元件分配工作量,而不使用其他处理元件。因为计算工作量相对较低,所以从效率的角度来看,确保所有处理元件都用于计算可能并不重要。
如果在504确定计算度量值满足指定阈值,则在508,根据第二类型的处理负载划分(负载均衡)来对处理进行划分。例如,当每个输出元素的计算工作量相对较高时,可以使用这样的负载均衡方法,该方法将所有输出元素分配给每个处理元件并向各个处理元件分派计算对每个输出元素的最终结果的部分贡献的任务。通过这种方法,每个处理单元被分配相对较大的工作量,并且执行大致相同的计算量。因为计算工作量相对较高,所以更重要的是利用所有可用的处理元件(例如,图2的处理元件的网格208或图3A的处理元件的网格300中的所有处理元件)。
图6是示出通过将处理元件的网格的指定部分分配给与长度向量中的条目相关联的每组索引来对处理进行划分的过程的实施例的流程图。在一些实施例中,图6的过程由图2的处理负载划分模块206执行。在一些实施例中,图6的过程的至少一部分在图5的506中执行。
在602,接收输入数据。在各种实施例中,输入数据包括矩阵D、索引向量I和长度向量L(例如,参见图1B所示的示例)。在一些实施例中,输入数据是图2的输入202。
在604,接收处理元件配置数据。这是与可用于计算的处理元件(例如,图2的处理元件的网格208或图3A的处理元件的网格300中的处理元件)相关联的信息。在一些实施例中,随着处理元件被添加和/或从处理元件的网格中被移除,该信息被更新。处理元件的配置影响工作负载计算的并行化。例如,如果每个处理元件具有可用于计算的T个线程,那么这些T个线程可以用于并行化与分配给每个处理元件的矩阵D的每个子区域相关联的计算。在一些实施例中,一组处理元件被分配了工作负载(例如,工作负载是与一个输出元素相关联的D的一组索引),并且该组处理元件中的处理元件被用于并行化计算。
在606,特定的工作负载被分配给特定的处理元件。在一些实施例中,分配工作负载是将n个工作负载(对应于n个输出元素)分配给k个分区(对应于k个处理元件或k组处理元件)的NP完全(或最好的情况下是NP难题)问题。可以使用各种算法将n个工作负载划分给k个分区。这些算法(具有各种计算效率)的示例包括扩展贪婪算法(extended greedyalgorithm)(在最优的4/3+1/(3k)内实现的O(2k*n2))、贪婪启发式算法(greedyheuristic)(实现O(1/n)的差异的O(n*log(n))),以及Karmarkar-Karp(KK)启发式算法(对于某个α实现O(1/n^(α*log(n)))的差异的O(n*log(n)))。其他算法也是可能的。一些输出元素可能需要比其他输出元素多得多的计算(例如,如果长度向量L中的值特别不均匀)。在一些实施例中,执行划分,使得分配给每个输出元素的处理元件的数量与和该输出元素相关联的长度向量值L[i]成比例。
如果每个处理元件(例如,CPU)都有T个线程,那么划分问题可以被定义为将n个工作负载分配给k*T个分区。然而,增加划分的数量会使划分问题的计算成本更高。为了减少计算开销,T个线程可以用于在每个处理元件(例如,CPU)内并行化计算,使得每个线程作用于分配给该处理元件的矩阵部分的子区域。
图7是示出通过将所有输出元素分配给每个处理元件来对处理进行划分的过程的实施例的流程图。在一些实施例中,图7的过程由图2的处理负载划分模块206执行。在一些实施例中,图7的过程的至少一部分在图5的508中执行。
在702,接收输入数据。在各种实施例中,输入数据包括矩阵D、索引向量I和长度向量L(例如,参见图1B所示的示例)。在一些实施例中,输入数据是图2的输入202。
在704,接收处理元件配置数据。这是与可用于计算的处理元件(例如,图2的处理元件的网格208或图3A的处理元件的网格300中的处理元件)相关联的信息。在一些实施例中,随着处理元件被添加和/或从处理元件的网格中被移除,该信息被更新。处理元件的配置影响工作负载计算的并行化。例如,如果每个处理元件具有可用于计算的T个线程,则这些T个线程可以用于并行化与分配给每个处理元件的矩阵D的每个子区域相关联的计算。在一些实施例中,一组处理元件被分配了工作负载(例如,工作负载是与一个输出元素相关联的D的一组索引),并且该组处理元件中的处理元件被用于并行化计算。
在706,单独的处理元件被分配给部分贡献任务的计算。利用这种划分方法,每个处理元件被分配与每个输出元素相关联的工作负载(例如,对输出元素有部分贡献的D的子区域),并且没有未利用的处理元件。如果每个处理元件具有T个线程,则每个线程可以被分配给子区域用于并行化(例如分配给I的索引的子区域)。在各种实施例中,目标是每个处理元件或线程对每个部分贡献执行大致相同的计算量。
在708,部分贡献被累积成最终结果。因为没有输出元素由单个处理元件或线程处理,所以需要累积。在一些实施例中,累积逻辑被实现为专用数字逻辑电路、可重编程逻辑(例如,现场可编程门阵列)、专用集成电路、中央处理单元等。在一些实施例中,指定特定的处理元件来执行将部分贡献累积成最终结果(例如,输出元素)。
尽管为了清楚理解的目的已经详细描述了前述实施例,但是本发明不限于所提供的细节。有许多实现本发明的替代实现方式。所公开的实施例是说明性的,而不是限制性的。
Claims (20)
1.一种方法,包括:
接收执行矩阵的指定部分的一个或更多个逐元素求和的运算的规范;
分析所述运算的规范以选择要应用的处理负载划分的类型;
基于所选择的要应用的处理负载划分的类型,对在多个物理处理元件上并行执行所述运算所需的处理进行划分;和
将经划分的处理分配给所述物理处理元件,以并行执行所述矩阵的指定部分的逐元素求和。
2.根据权利要求1所述的方法,还包括产生与所述运算相关联的一个或更多个输出元素。
3.根据权利要求1所述的方法,其中,所述规范包括指示将被包括在所述运算中的所述矩阵的索引的第一向量。
4.根据权利要求3所述的方法,其中,所述规范还包括指示所述第一向量的索引分组的第二向量。
5.根据权利要求1所述的方法,其中,分析所述规范以选择要应用的处理负载划分的类型包括确定计算度量值是否满足指定阈值。
6.根据权利要求5所述的方法,其中,所述计算度量值至少部分基于所述运算的每个输出元素的计算工作量。
7.根据权利要求6所述的方法,其中,响应于确定所述计算度量值不满足所述指定阈值,所选择的要应用的处理负载划分的类型与以下操作相关联:将所述物理处理元件的指定部分分配给与关联于所述运算的长度向量中的条目相关联的每组索引。
8.根据权利要求6所述的方法,其中,响应于确定所述计算度量值满足所述指定阈值,所选择的要应用的处理负载划分的类型与以下操作相关联:将所述运算的所有输出元素分配给所述物理处理元件中的每一个以及向所述物理处理元件中的每一个分派计算对于与所述运算的输出元素相关联的最终结果的部分贡献的任务。
9.根据权利要求1所述的方法,其中,所述物理处理元件包括以下项中的一个:专用数字逻辑电路、现场可编程门阵列、专用集成电路或中央处理单元。
10.根据权利要求1所述的方法,其中,执行所述运算所需的处理包括:在所述物理处理元件的至少一部分之间均衡所述运算的输出元素的集合的计算工作负载。
11.根据权利要求1所述的方法,其中,执行所述运算所需的处理包括:与关联于每个输出元素的长度向量值成比例地将所述物理处理元件的一部分分配给所述运算的每个输出元素。
12.根据权利要求1所述的方法,其中,执行所述运算所需的处理包括:对所述运算的输出元素的不同集合进行分组,使得所述不同集合需要基本相似量的计算资源。
13.根据权利要求1所述的方法,其中,执行所述运算所需的处理利用以下划分算法中的至少一种:扩展贪婪算法、贪婪启发式算法或Karmarkar-Karp启发式算法。
14.根据权利要求1所述的方法,其中,执行所述运算所需的处理包括:分配所述物理处理元件中的每一个以计算与所述运算的每个输出元素相关联的部分贡献,并累积每个输出元素的部分贡献。
15.根据权利要求1所述的方法,其中,将经划分的处理分配给所述物理处理元件包括使用网络来访问所述物理处理元件。
16.根据权利要求1所述的方法,其中,执行所述运算所需的处理包括:使用一个或更多个工作队列来分配所述运算的输出元素。
17.根据权利要求16所述的方法,其中,所述工作队列由所述物理处理元件内的一个或更多个主处理元件协调。
18.根据权利要求1所述的方法,其中,所述物理处理元件物理上位于一个以上物理位置。
19.一种系统,包括:
处理器,其被配置为:
接收执行矩阵的指定部分的一个或更多个逐元素求和的运算的规范;
分析所述运算的规范以选择要应用的处理负载划分的类型;
基于所选择的要应用的处理负载划分的类型,对在多个物理处理元件上并行执行所述运算所需的处理进行划分;和
将经划分的处理分配给所述物理处理元件,以并行执行所述矩阵的指定部分的逐元素求和;和
存储器,其耦合到所述处理器并被配置为向所述处理器提供指令。
20.一种体现计算机程序产品的非暂时性计算机可读存储介质,所述计算机程序产品包括用于以下操作的计算机指令:
接收执行矩阵的指定部分的一个或更多个逐元素求和的运算的规范;
分析所述运算的规范以选择要应用的处理负载划分的类型;
基于所选择的要应用的处理负载划分的类型,对在多个物理处理元件上并行执行所述运算所需的处理进行划分;和
将经划分的处理分配给所述物理处理元件,以并行执行所述矩阵的指定部分的逐元素求和。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/533,588 US11010202B2 (en) | 2019-08-06 | 2019-08-06 | Distributed physical processing of matrix sum operation |
US16/533,588 | 2019-08-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112346852A true CN112346852A (zh) | 2021-02-09 |
Family
ID=74188539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010781703.8A Pending CN112346852A (zh) | 2019-08-06 | 2020-08-06 | 矩阵求和运算的分布式物理处理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11010202B2 (zh) |
CN (1) | CN112346852A (zh) |
DE (1) | DE102020118517A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12112212B2 (en) * | 2021-02-26 | 2024-10-08 | Google Llc | Controlling system load based on memory bandwidth |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4787057A (en) * | 1986-06-04 | 1988-11-22 | General Electric Company | Finite element analysis method using multiprocessor for matrix manipulations with special handling of diagonal elements |
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
CN105518625A (zh) * | 2013-08-30 | 2016-04-20 | 微软技术许可有限责任公司 | 具有高带宽存储器接口的计算硬件 |
CN105843781A (zh) * | 2015-02-02 | 2016-08-10 | 国际商业机器公司 | 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统 |
CN106970896A (zh) * | 2017-03-30 | 2017-07-21 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN107305538A (zh) * | 2016-04-22 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
US20180113840A1 (en) * | 2016-10-25 | 2018-04-26 | Wisconsin Alumni Research Foundation | Matrix Processor with Localized Memory |
CN108874744A (zh) * | 2017-05-08 | 2018-11-23 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006120664A2 (en) * | 2005-05-13 | 2006-11-16 | Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin | A data processing system and method |
US9785700B2 (en) * | 2008-02-11 | 2017-10-10 | Nuix Pty Ltd | Systems and methods for load-balancing by secondary processors in parallelized indexing |
US8707320B2 (en) * | 2010-02-25 | 2014-04-22 | Microsoft Corporation | Dynamic partitioning of data by occasionally doubling data chunk size for data-parallel applications |
WO2011156247A2 (en) * | 2010-06-11 | 2011-12-15 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
US8620054B2 (en) * | 2010-09-08 | 2013-12-31 | SOCPRA—Sciences Sante et Humaines, s.e.c. | Image reconstruction based on accelerated method using polar symmetries |
JP6083300B2 (ja) * | 2013-03-29 | 2017-02-22 | 富士通株式会社 | プログラム、並列演算方法および情報処理装置 |
US9910714B2 (en) * | 2015-06-29 | 2018-03-06 | Advanced Micro Devices, Inc. | Scriptable dynamic load balancing in computer systems |
US20180188972A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Matrix storage using data shifting memory |
US10521488B1 (en) * | 2016-12-30 | 2019-12-31 | X Development Llc | Dynamic partitioning |
US11487846B2 (en) * | 2018-05-04 | 2022-11-01 | Apple Inc. | Performing multiply and accumulate operations in neural network processor |
US10691464B1 (en) * | 2019-01-18 | 2020-06-23 | quadric.io | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit |
-
2019
- 2019-08-06 US US16/533,588 patent/US11010202B2/en active Active
-
2020
- 2020-07-14 DE DE102020118517.0A patent/DE102020118517A1/de active Pending
- 2020-08-06 CN CN202010781703.8A patent/CN112346852A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4787057A (en) * | 1986-06-04 | 1988-11-22 | General Electric Company | Finite element analysis method using multiprocessor for matrix manipulations with special handling of diagonal elements |
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
CN105518625A (zh) * | 2013-08-30 | 2016-04-20 | 微软技术许可有限责任公司 | 具有高带宽存储器接口的计算硬件 |
CN105843781A (zh) * | 2015-02-02 | 2016-08-10 | 国际商业机器公司 | 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统 |
CN107305538A (zh) * | 2016-04-22 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
US20180113840A1 (en) * | 2016-10-25 | 2018-04-26 | Wisconsin Alumni Research Foundation | Matrix Processor with Localized Memory |
CN106970896A (zh) * | 2017-03-30 | 2017-07-21 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
CN108874744A (zh) * | 2017-05-08 | 2018-11-23 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
Non-Patent Citations (5)
Title |
---|
ELIZABETH BLESZYNSKI等: ""Analytical evaluation of matrix elements of electromagnetic integral equations with RWG basis functions for arbitrarily oriented pairs of triangular surface elements"", 《2018 INTERNATIONAL APPLIED COMPUTATIONAL ELECTROMAGNETICS SOCIETY SYMPOSIUM (ACES)》 * |
唐俊奇;: "多处理机中矩阵乘法的算法研究", 中国西部科技(学术), no. 02 * |
张新菊;刘羽;韩枭;: "行划分的矩阵相乘并行改进及其DSP实现", 微计算机信息, no. 20 * |
桂小林, 王庆江, 龚文强, 钱德沛: "面向网格计算的机器选择算法研究", 计算机研究与发展, no. 12 * |
苏畅;付忠良;谭雨辰;: "一种在GPU上高精度大型矩阵快速运算的实现", 计算机应用, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
DE102020118517A1 (de) | 2021-02-11 |
US11010202B2 (en) | 2021-05-18 |
US20210042116A1 (en) | 2021-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Le et al. | Allox: compute allocation in hybrid clusters | |
Barbosa et al. | Dynamic scheduling of a batch of parallel task jobs on heterogeneous clusters | |
Panda et al. | Task partitioning scheduling algorithms for heterogeneous multi-cloud environment | |
US11620510B2 (en) | Platform for concurrent execution of GPU operations | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN111159859B (zh) | 一种云容器集群的部署方法及系统 | |
CN114911612A (zh) | 一种面向cpu-gpu异构资源的任务调度方法 | |
Arabnejad et al. | Fair resource sharing for dynamic scheduling of workflows on heterogeneous systems | |
US11966783B1 (en) | Real time scheduling using expected application resource usage | |
CN112612613B (zh) | 用于在虚拟分布式异构环境下实现多gpu调度的方法和系统 | |
CN112346852A (zh) | 矩阵求和运算的分布式物理处理 | |
Dongarra et al. | Matrix product on heterogeneous master-worker platforms | |
Epstein et al. | Max-min online allocations with a reordering buffer | |
Lin et al. | Joint deadline-constrained and influence-aware design for allocating MapReduce jobs in cloud computing systems | |
CN112306670A (zh) | 一种Docker虚拟化场景下的服务器集群优化方法 | |
Bahnasawy et al. | Optimization procedure for algorithms of task scheduling in high performance heterogeneous distributed computing systems | |
Dongarra et al. | Revisiting matrix product on master-worker platforms | |
US20220206863A1 (en) | Apparatus and method to dynamically optimize parallel computations | |
CN109522106B (zh) | 一种基于协同计算的风险价值模拟动态任务调度方法 | |
Gupta et al. | Task allocation model for balance utilization of available resource in multiprocessor environment | |
Maalej et al. | CUDA-accelerated task scheduling in vehicular clouds with opportunistically available V2I | |
CN111240818A (zh) | 一种多相同gpu异构系统环境下的任务调度节能方法 | |
KR102248978B1 (ko) | 다수 사용자의 분산 기계학습에서 평균 지연 속도 절감을 위한 자원 할당 방법 및 장치 | |
Zafari et al. | Distributed dynamic load balancing for task parallel programming |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Yuan platform Co. Address before: California, USA Applicant before: Facebook, Inc. |