CN113010845A - 执行矩阵乘法的计算装置、方法及相关产品 - Google Patents

执行矩阵乘法的计算装置、方法及相关产品 Download PDF

Info

Publication number
CN113010845A
CN113010845A CN202110302811.7A CN202110302811A CN113010845A CN 113010845 A CN113010845 A CN 113010845A CN 202110302811 A CN202110302811 A CN 202110302811A CN 113010845 A CN113010845 A CN 113010845A
Authority
CN
China
Prior art keywords
cluster
core
matrix
result
computing device
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
CN202110302811.7A
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202110302811.7A priority Critical patent/CN113010845A/zh
Publication of CN113010845A publication Critical patent/CN113010845A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Abstract

本披露公开了一种执行矩阵乘法的计算装置、利用计算装置执行矩阵乘法运算的方法及相关产品。该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案利用多核架构来有效支持特殊规模的矩阵乘法,其可以简化处理,提高机器的处理效率。

Description

执行矩阵乘法的计算装置、方法及相关产品
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及执行矩阵乘法的计算装置、利用计算装置执行矩阵乘法运算的方法、芯片和板卡。
背景技术
矩阵乘法运算是数学和工程领域的常用运算之一,例如近年来迅猛发展的深度学习算法中涉及密集的矩阵乘法运算。
矩阵乘法运算可以一般地表示为CM×N=AM×K*BK×N。在一些神经网络的运算中,会遇到K维度非常大、M和N维度非常小这种特殊规模的矩阵乘法运算。例如resetnet50神经网络的反向训练权值的情况下,会遇到例如M=64,N=64,K=401408这样的极端情况。
现有的矩阵乘法方案针对这种特殊规模的矩阵乘法很难利用多核架构的计算装置来提升计算性能。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种执行矩阵乘法的计算装置、利用计算装置执行矩阵乘法运算的方法、芯片和板卡。
在第一方面中,本披露公开一种执行矩阵乘法的计算装置,所述计算装置包括S个集群,每个集群包括至少一个处理核和一个存储核,左乘矩阵A的维度大小为M×K,右乘矩阵B的维度大小为K×N,左乘矩阵A和右乘矩阵B的K维度对应地拆分为S对相互配对的子矩阵,M、K、N、S为自然数,其中:所述S个集群配置用于:分别针对一对配对的子矩阵Ai和Bi执行矩阵乘法运算,以得到S个中间结果Ci,其中i=0,…,S-1;以及对所述S个中间结果执行规约计算,以得到最终结果。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的计算装置。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种利用计算装置执行矩阵乘法运算的方法,其中所述计算装置包括S个集群,每个集群包括至少一个处理核和一个存储核,左乘矩阵A的维度大小为M×K,右乘矩阵B的维度大小为K×N,所述方法包括:将左乘矩阵A和右乘矩阵B的K维度对应地拆分为S对相互配对的子矩阵Ai和Bi,M、K、N、S为自然数,i=0,…,S-1;将所述S对配对的子矩阵分发至所述S个集群;第i个集群针对配对的子矩阵Ai和Bi执行矩阵乘法运算,得到对应的中间结果Ci;以及利用所述S个集群对运算得到的S个所述中间结果执行规约计算,以得到最终结果。
通过如上所提供的执行矩阵乘法的计算装置、使用该计算装置执行矩阵乘法运算的方法、芯片和板卡,本披露实施例提供了一种支持特殊规模的矩阵乘法的计算装置,其能够通过优化乘法运算过程,充分利用多核架构的运算效力,由此提高机器的运算效率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的多核计算装置的内部结构示意图;
图4示例性示出CDMA的工作原理;
图5示例性示出了根据本披露实施例的规约计算过程;以及
图6示意性示出了根据本披露实施例的利用计算装置执行矩阵乘法运算的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为多核的内部结构示意图。多核计算装置300采用分层结构设计,多核计算装置300作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置300是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图3所示,多核计算装置300包括外部存储控制器31、外设通信模块32、片上互联模块33、同步模块34以及多个集群35。
外部存储控制器31可以有多个,在图中示例性地展示2个,其用以响应处理核发出的访问请求,访问外部存储设备,例如图2中的DRAM 204,从而自片外读取数据或是将数据写入。外设通信模块32用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块33将外部存储控制器31、外设通信模块32及多个集群35连接起来,用以在各个模块间传输数据和控制信号。同步模块34是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群35是多核计算装置300的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的多核计算装置300还可以包括8个、16个、64个、甚至更多的集群35。集群35用以高效地执行深度学习算法。
以集群的层级来看,如图3右上方所示,每个集群35包括处理单元302和存储核(MEM core)304。处理单元302执行各种计算任务。在一些实现中,处理单元可以是多核架构,例如包括多个处理核(IPU core)311-1~311-n,以完成诸如大规模向量计算任务。本披露不限制处理核311的数量。
处理核311的内部架构如图3下方所示。每个处理核311内可以具有多个用于执行计算任务的计算模块324-1~324-m,以及为执行计算任务所需要的本地存储模块323。需特别说明的是,本地存储模块323可以包括各种通信模块,以与外部存储单元进行数据交换。例如,本地存储模块323可以包括通信模块321,以与存储核304中的共享存储模块315通信。通信模块321例如可以是搬运直接内存访问模块(move direct memory access,MVDMA)。本地存储模块323还可以包括通信模块322,以与片外内存,例如DRAM 308进行数据交换。通信模块322例如可以是输入/输出直接内存访问模块(input/output direct memory access,IODMA)。IODMA 322控制本地存储模块323中的NRAM/WRAM(图3未示出)与DRAM 308的访存;MVDMA 321则用以控制本地存储模块323中的NRAM/WRAM与共享存储模块315的访存。
继续图3右上方视图,存储核304主要用以存储和通信,即存储处理核311间的共享数据或中间结果、以及执行集群35与DRAM 308之间的通信、集群35间彼此的通信、处理核311间彼此的通信等。在其他实施例中,存储核304具有标量运算的能力,用以执行标量运算,以实现数据通信中的运算任务。
存储核304包括一个较大的共享存储模块(SRAM)315、广播总线314、集群直接内存访问模块(cluster direct memory access,CDMA)318、全局直接内存访问模块(globaldirect memory access,GDMA)316及通信时计算模块317。SRAM 315承担高性能数据中转站的角色,在同一个集群35内不同处理核311之间所复用的数据不需要通过处理核311各自向DRAM 308获得,而是经SRAM 315在处理核311间中转,存储核304只需要将复用的数据从SRAM 315迅速分发给多个处理核311即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线314、CDMA 318及GDMA 316则分别用来执行处理核311间的通信、集群35间的通信和集群35与DRAM 308的数据传输。以下将分别说明。
广播总线314用以完成集群35内各处理核311间的高速通信,此实施例的广播总线314支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理核至单一处理核)的数据传输,多播是将一份数据从SRAM 315传输到特定几个处理核311的通信方式,而广播则是将一份数据从SRAM 315传输到所有处理核311的通信方式,属于多播的一种特例。
CDMA 318用以控制在同一个计算装置301内不同集群35间的SRAM315的访存。
GDMA 316与外部存储控制器31协同,用以控制集群35的SRAM 315到DRAM 308的访存,或是将数据自DRAM 308读取至SRAM 315中。从前述可知,DRAM 308与本地存储模块323中的NRAM/WRAM间的通信可以经由2个渠道来实现。第一个渠道是通过IODMA 322直接联系DRAM 308与本地存储模块323;第二个渠道是先经由GDMA 316使得数据在DRAM 308与SRAM315间传输,再经过MVDMA 321使得数据在SRAM 315与本地存储模块323间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 308与本地存储模块323间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
在一些实施例中,存储核304可以作为集群35内的一个缓存层级,大到拓宽通信带宽的作用。进一步地,存储核304还可以完成与其他集群35之间的通信。存储核304例如能够实现集群35之间的广播(Broadcast)、撒播(Scatter)、收集(Gather)、规约(Reduce)和全规约(All-reduce)等通信功能。其中,广播是指将同一份数据分发广播给所有集群;撒播是指将不同数据分发给不同的集群;收集是指将多个集群的数据会聚在一起;规约是指将多个集群中的数据按照指定的映射函数进行运算得到最后的结果发送给某个集群;而全规约与规约的区别在于后者最后的结果只发送给一个集群,而全规约需要发送给所有集群。
通信时计算模块317可以用于在通信过程中完成例如上述规约、全规约等通信中的计算任务,而不需要借助处理单元302,从而提升通信效率,达到“存算一体”的效果。取决于不同的硬件实现,通信时计算模块317和共享存储模块315可以整合在相同或不同部件中,本披露实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
图4示出当一个处理核欲将数据写入至另一个集群的处理核时的示意图,以说明CDMA 318的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理核,同样为了说明方便,图中的集群0仅展示处理核0,集群1仅展示处理核1。处理核0欲将数据写入至处理核1。
首先,处理核0发送单播写请求将数据写入本地的SRAM 0中,CDMA0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM1中,接着从端发送写响应B作为回应,最后集群1的处理核1发送单播读请求将数据从SRAM 1中读取出来。
如前所述,矩阵乘法运算可以一般地表示为CM×N=AM×K*BK×N,其中M、K、N为自然数。已知的在多核架构上运行矩阵乘法运算时,主要是在M维度和N维度进行拆分。如果M维度和N维度太小,对这两个维度进行拆分会导致加载的数据尺寸比较小,造成带宽的极大浪费。例如,如果将N维度拆分到X个处理核上,在B矩阵不转置的情况下,要加载的数据尺寸则为N/X。当数据尺寸小到只有几或者几十的时候,其带宽会非常低,在几百G的总带宽中只能利用其中几个G的带宽,造成大量浪费。
另一方面,在M维度和N维度太小时使用现有的这种拆分方式还会造成大量的重复输入输出(IO)。例如,在对M维度进行拆分的时候,B矩阵需要在集群间来回轮换,当K非常大时,这种轮换带来的通讯代价也非常高。举例来说,M=N=64,K=410408,数据类型为int8的场景下,B矩阵需要在共享存储核上来回交换三次(在图3所示四个集群的场景下),总的通讯数据量是大概是N*K*3=75M左右。
本披露实施例基于前述的硬件环境,提供一种执行矩阵乘法的计算装置,该计算装置包括多个集群,每个集群包括至少一个处理核和一个存储核。通过拆解特殊规模的矩阵乘法运算,可以充分利用多核计算装置的多个集群的算力,最大限度地发挥多核并行计算的优势,提升运算效率。
下面描述本披露实施例的拆解矩阵乘法的示意性原理。
矩阵乘法运算同样表示为CM×N=AM×K*BK×N,其中M、K、N为自然数。当K维度非常大,而M和N维度非常小时,可以对K维度进行拆分。
为了充分利用多核计算装置内的各个集群,可以根据计算装置内可用集群的数量S,将左乘矩阵A和右乘矩阵B的K维度对应地拆分为S份,形成S对相互配对的子矩阵Ai和Bi,其中i=0,…,S-1,S为自然数。从前面的硬件结构描述可知,不同的硬件结构可以有不同数量的集群,因此S的取值可以是4、8、16、64、甚至更多。通常情况下,S=2P,P是自然数。
上述拆分可以表示如下:
Figure BDA0002986986580000091
由公式(1)可以看出,通过拆分K维度,可以将整个矩阵乘法运算拆分成S个子矩阵乘法运算,得到的S个中间结果再进行规约计算,从而得到最终结果。
因此,在本披露的实施例中,计算装置内的S个集群可以配置用于分别针对一对拆分出的配对子矩阵Ai和Bi执行矩阵乘法运算,以得到S个中间结果Ci,其中i=0,…,S-1;以及对这S个中间结果执行规约计算,以得到最终结果C。
在一些实施例中,对K维度的拆分可以均匀地进行,例如平均拆分成S份,每份大小K/S,从而形成S对相互配对的、K维度大小均为K/S的子矩阵。
在另一些实施例中,取决于可用的S个集群的可用资源,例如可用的存储空间、计算模块等,可以按比例拆分K维度。可以理解,可以对K维度进行各种拆分,只要确保左乘子矩阵与右乘子矩阵能够对应或配对,例如A1和B1构成一个子矩阵对(A1,B1)以执行矩阵乘法。
可选地或附加地,在一些实施例中,在集群内的子矩阵乘法运算中,可以基于可用的处理核资源,进一步拆分子矩阵乘法运算,通过并行处理来提高运算效率。
在一些实现中,可以根据集群内可用处理核的数量L,将该集群要处理的配对的子矩阵Ai和Bi中的左乘子矩阵Ai的M维度拆分为L份,从而形成L个左乘小矩阵Aji,j=0,…,L-1。由此,该集群内的这L个处理核可以配置用于:分别针对一个左乘小矩阵Aji与对应的右乘子矩阵Bi执行矩阵乘法运算,以得到对应的乘积结果Cji。可以理解,这L个处理核运算得到的L个乘积结果Cji直接拼接即为该集群执行子矩阵乘法运算得到的中间结果Ci。上述集群内的子矩阵乘法拆分运算可以表示如下:
Figure BDA0002986986580000101
在一些实施例中,对M维度的拆分可以均匀地进行,例如平均拆分成L份,每份大小M/L,从而形成L个M维度大小均为M/L的左乘小矩阵。
在另一些实施例中,取决于可用的L个处理核的可用资源,例如可用的存储空间、计算模块等,可以按比例拆分M维度。可以理解,可以对M维度进行各种拆分,只要保证后续对应累加部分的维度大小一致即可。
在一些情况下,要执行矩阵乘法运算的矩阵规模可能非常大,超出处理核一次能够处理的数据量。例如,每个处理核一次可处理的K维度数量量大小为Δk,而经过拆分(例如平均拆分)后的子矩阵的K维度大小K/S仍然远远大于Δk,则在这些情况下,可以以Δk为步长,逐步加载和计算,直至每个集群上的计算任务完成,得到对应的中间结果Ci。
具体地,基于前面描述的多核计算装置的架构,每个集群内有一个存储核,供其所属集群内的处理核共享。在一些实施例中,存储核可以配置用于以每个处理核一次可处理的K维度数据量大小Δk为步长,步进式加载由其所属集群处理的子矩阵。
为了提升处理效率,可以采用流水线来执行前述各个集群内的子矩阵乘法计算任务。在这些实施例中,集群内的存储核可以配置有至少两个存储区,用以支持在其中一个存储区与所属集群外的存储单元之间进行数据访存的同时,在另一存储区与所属集群内的处理核之间进行数据访存。这两个存储区可以称为乒存储空间与乓存储空间,也即采用乒乓(pingpong)流水方式。
具体地,在L个处理核针对存储核的乒存储空间上的数据执行计算时,存储核以Δk为步长向其乓存储空间上加载下一次的计算数据。从前面的硬件架构描述可知,存储核与其集群外的存储单元之间的访存接口不同于存储核与其集群内的处理核之间的访存接口,因此,可以支持上述并行方式,从而构成流水线处理。
从公式(2)可知,同一集群内的各个处理核所涉及的右乘子矩阵Bi是相同的,左乘小矩阵则各不相同。因此,可以采用不同的数据传播方式来传送左乘小矩阵和右乘子矩阵。在一些实施例中,集群内的存储核可以配置用于:将右乘子矩阵Bi广播至所属集群内的L个处理核;以及将L个左乘小矩阵Aji分发给所属集群内的L个处理核。
集群内的处理核可以将每次(Δk为步长)计算得到的结果进行累加,直至完成分配给该集群的子矩阵的计算任务。具体地,第i(0≤i≤S-1)个集群内的第j(0≤j≤L-1)个处理核对每次计算结果累加后得到的中间结果为Cji。从前面的公式(2)可以理解,同一集群内的L个处理核得到的L个中间结果Cji,这L个处理核运算得到的L个中间结果Cji直接拼接即为该集群执行子矩阵乘法运算得到的中间结果Ci,因此无需额外的运算处理。
此后,将参与计算的S个集群的S个中间结果进行规约计算,以得到最终结果
Figure BDA0002986986580000111
在一些实施例中,上述S个集群可以配置用于对S个中间结果进行多轮两两累加的规约计算,以得到最终结果。
图5示例性示出了根据本披露实施例的规约计算过程。如前所述,集群的数量S通常是2的幂次,例如表示为S=2P,由此通过多轮两两累加的方式,需要P轮规约计算以得到最终结果。在每轮规约计算中:将集群计算得到的中间结果或前一轮规约的规约结果两两累加进行规约,得到当前轮规约计算的规约结果。
在图5的示例中示出了S=16=24个集群的示例。初始地,每个集群通过前面描述的矩阵乘法计算方式,得到了对应的中间结果Ci,更具体地,Ci包括在集群的L个处理核上并行运算得到中间结果Cji。
如图所示,在第一轮规约计算中,将第0个集群的中间结果C0和第1个集群的中间结果C1,在第0个集群内累加,也即执行运算C0=C0+C1;将第2个集群的中间结果C2和第3个集群的中间结果C3,在第2个集群内累加,也即执行运算C2=C2+C3;依次类推。
结合前面的硬件架构,在执行时,可以将第(2q+1)个集群内各个处理核上计算得到的中间结果Cj,(2q+1)回存到该集群内的存储核上,其中q=0,…,S/2-1。然后,该存储核可以通过访存接口CDMA通道传送到第2q个集群的存储核上。在该第2q个集群内,各个处理核从其集群内存储核加载对应的中间结果,与其本地存储的中间结果进行累加,得到规约结果,从而完成第一轮规约计算。例如,第2q个集群内的第j个处理核把Cj,(2q+1)加载到处理核上,执行Cj,2q=Cj,2q+Cj,(2q+1),从而完成首轮规约计算。
接下来,在第二轮规约计算中,将第0个集群的规约结果C0和第2个集群的规约结果C2,在第0个集群内累加,也即执行运算C0=C0+C2;将第4个集群的规约结果C4和第6个集群的规约结果C6,在第4个集群内累加,也即执行运算C4=C4+C6;依次类推。
类似地,在执行时,可以将第(4q+2)个集群内各个处理核上规约得到的规约结果Cj,(4q+2)回存到该集群内的存储核上,此时q=0,…,S/4-1。然后,该存储核可以通过访存接口CDMA通道传送到第4q个集群的存储核上。在该第4q个集群内,各个处理核从其集群内存储核加载对应的中间结果,与其本地存储的前一轮规约结果进行累加,从而完成第二轮规约计算。例如,第4q个集群内的第j个处理核把Cj,(4q+2)加载到处理核上,执行Cj,4q=Cj,4q+Cj,(4q+2),从而完成第二轮规约计算。
以此类推,循环往复,直到完成P轮规约,得到最终的计算结果。
更一般地,在第k轮规约计算中,k=1,…,P,参与计算的S个集群中的第(2q+1)*2k -1个集群配置用于将其内各处理核计算得到的中间结果或前一轮规约结果经由集群内的存储核传送至第q*2k个集群的存储核上,其中q=0,…,S/2k-1;并且S个集群中的第q*2k个集群配置用于将其存储核上的中间结果或前一轮规约结果分发至对应的处理核,以与该处理核上的中间结果或前一轮规约结果进行累加运算,得到当前轮规约计算的规约结果。例如,为了方便起见,令b=(2q+1)*2k-1,a=q*2k,则第a个集群内的第j个处理核把Cj,b加载到处理核上,执行Cj,a=Cj,a+Cj,b,从而完成第k轮规约计算。
从上面的规约计算过程可以看出,在本披露实施例的规约计算中充分利用了集群之间的CDMA通讯能力,减小与片外存储单元的通讯耗时,由此可以大大提升运算效率。本披露实施例的矩阵乘法方案尤其适用于矩阵的K维度非常大,M和N维度非常小(例如小于128)的情况下,在这种情况下具有绝对优势。
此外,采取拆分K维度的方式,各集群的共享存储核只有在规约的时候需要交互,相比于现有的M和N维度拆分导致的IO通讯量,可以减少集群间的IO量。仍以前面的示例为例,M=N=64,K=410408,数据类型为int8,此时总的通讯数据量只有M*N*3=24K(输出一般)。
另一方面,由于M维度和N维度都是完整的,当二者处在最低维度的时候,在存取数时可以进行连续存取,从而占满整个总带宽,提高带宽利用率。
从上面的描述可知,本披露实施例还提供了一种利用计算装置来执行矩阵乘法运算的方法,该计算装置包括S个集群,每个集群包括至少一个处理核和一个存储核。
图6示意性示出了根据本披露实施例的利用计算装置执行矩阵乘法运算的示例性流程图。不防假设左乘矩阵A的维度大小为M×K,右乘矩阵B的维度大小为K×N。
如图所示,在步骤S610中,根据可用集群数量S,对矩阵的K维度进行拆分。具体地,将左乘矩阵A和右乘矩阵B的K维度对应地拆分为S对相互配对的子矩阵Ai和Bi,S为自然数,i=0,…,S-1。
接着,在步骤S620中,将这S对配对的子矩阵分配给上述S个集群进行运算。例如,将子矩阵通过分发方式传播给S个集群。在数据量较大的情况下,各个集群的存储核还可以以每个处理核一次可处理的K维度数据量大小Δk为步长,步进式加载由其所属集群处理的子矩阵。
接着,在步骤S630中,各个集群分别针对所分发的子矩阵执行矩阵乘法运算,以得到对应的中间结果。例如,第i个集群针对所分发的配对的子矩阵Ai和Bi执行矩阵乘法运算,得到对应的中间结果Ci。
在一些实施例中,集群内的矩阵乘法运算可以进一步拆分,以分配在集群内的L个处理核上并行处理。在这些实施例中,方法可以进一步包括:将集群处理的配对的子矩阵中的左乘子矩阵Ai的M维度拆分为L份形成L个左乘小矩阵Aji,j=0,…,L-1;将这L个左乘小矩阵分发至上述L个处理核;第j个处理核针对左乘小矩阵Aji与对应的右乘子矩阵Bi执行矩阵乘法运算,以得到对应的乘积结果Cji。可以理解,L个处理核运算得到的L个乘积结果Cji拼接成1个中间结果Ci。
最后,在步骤S640中,利用这S个集群对运算得到的S个中间结果执行规约计算,以得到最终结果。规约计算过程可以参考前面结合图5的描述,此处不再重复。
上面结合流程图描述了本披露实施例的矩阵乘法运算过程。可以理解,前面结合硬件结构针对矩阵乘法运算描述的特征同样适用于上述方法,因此此处不再赘述。同样地,本披露一些实施例还提供了包含上述执行矩阵乘法运算的计算装置的芯片和板卡,其可以包含前面描述的对应特征,此处不再重复。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (22)

1.一种执行矩阵乘法的计算装置,所述计算装置包括S个集群,每个集群包括至少一个处理核和一个存储核,左乘矩阵A的维度大小为M×K,右乘矩阵B的维度大小为K×N,左乘矩阵A和右乘矩阵B的K维度对应地拆分为S对相互配对的子矩阵,M、K、N、S为自然数,其中:
所述S个集群配置用于:
分别针对一对配对的子矩阵Ai和Bi执行矩阵乘法运算,以得到S个中间结果Ci,其中i=0,…,S-1;以及
对所述S个中间结果执行规约计算,以得到最终结果。
2.根据权利要求1所述的计算装置,其中K>M且K>N,并且所述左乘矩阵A和右乘矩阵B的K维度平均拆分为S对相互配对的子矩阵。
3.根据权利要求1-2任一所述的计算装置,其中一个集群内包括L个处理核,所述集群处理的配对的子矩阵中的左乘子矩阵Ai的M维度拆分为L份形成L个左乘小矩阵Aji,j=0,…,L-1,其中所述集群内的所述L个处理核配置用于:
分别针对一个左乘小矩阵Aji与对应的右乘子矩阵Bi执行矩阵乘法运算,以得到对应的乘积结果Cji
其中所述L个处理核运算得到的L个所述乘积结果Cji拼接成1个所述中间结果Ci
4.根据权利要求3所述的计算装置,其中所述左乘子矩阵Ai的M维度平均拆分为L份形成所述L个左乘小矩阵。
5.根据权利要求3-4任一所述的计算装置,其中所述存储核在集群内的多个处理核之间共享,并且所述存储核配置用于以每个处理核一次可处理的K维度数据量大小Δk为步长,步进式加载由其所属集群处理的子矩阵。
6.根据权利要求3-5任一所述的计算装置,其中第i个集群内的所述存储核配置用于:
将右乘子矩阵Bi广播至所属集群内的所述L个处理核;以及
将所述L个左乘小矩阵Aji分发给所属集群内的所述L个处理核。
7.根据权利要求1-6任一所述的计算装置,其中所述存储核配置有至少两个存储区,用以支持在其中一个存储区与所属集群外的存储单元之间进行数据访存的同时,在另一存储区与所属集群内的处理核之间进行数据访存。
8.根据权利要求1-7任一所述的计算装置,其中所述S个集群进一步配置用于对所述S个中间结果进行多轮两两累加的规约计算,以得到所述最终结果。
9.根据权利要求8所述的计算装置,其中S=2P,并且所述S个集群进一步配置用于执行P轮规约计算以得到所述最终结果,在每轮规约计算中:将所述中间结果或前一轮规约的规约结果两两累加进行规约,得到当前轮规约计算的规约结果。
10.根据权利要求9所述的计算装置,其中对于第k轮规约,k=1,…,P,
所述S个集群中的第(2q+1)*2k-1个集群配置用于将其内各处理核计算得到的中间结果或前一轮规约结果经由集群内的存储核传送至第q*2k个集群的存储核上,其中q=0,…,S/2k-1;并且
所述S个集群中的第q*2k个集群配置用于将其存储核上的中间结果或前一轮规约结果分发至对应的处理核,以与所述处理核上的中间结果或前一轮规约结果进行累加运算,得到当前轮规约计算的规约结果。
11.一种芯片,包括根据权利要求1-10任一所述的计算装置。
12.一种板卡,包括根据权利要求11所述的芯片。
13.一种利用计算装置执行矩阵乘法运算的方法,其中所述计算装置包括S个集群,每个集群包括至少一个处理核和一个存储核,左乘矩阵A的维度大小为M×K,右乘矩阵B的维度大小为K×N,所述方法包括:
将左乘矩阵A和右乘矩阵B的K维度对应地拆分为S对相互配对的子矩阵Ai和Bi,M、K、N、S为自然数,i=0,…,S-1;
将所述S对配对的子矩阵分发至所述S个集群;
第i个集群针对配对的子矩阵Ai和Bi执行矩阵乘法运算,得到对应的中间结果Ci;以及
利用所述S个集群对运算得到的S个所述中间结果执行规约计算,以得到最终结果。
14.根据权利要求13所述的方法,其中K>M且K>N,并且所述左乘矩阵A和右乘矩阵B的K维度平均拆分为S对相互配对的子矩阵。
15.根据权利要求13-14任一所述的方法,其中一个集群内包括L个处理核,并且所述方法进一步包括:
将所述集群处理的配对的子矩阵中的左乘子矩阵Ai的M维度拆分为L份形成L个左乘小矩阵Aji,j=0,…,L-1;
将所述L个左乘小矩阵分发至所述L个处理核;
第j个处理核针对左乘小矩阵Aji与对应的右乘子矩阵Bi执行矩阵乘法运算,以得到对应的乘积结果Cji
其中所述L个处理核运算得到的L个所述乘积结果Cji拼接成1个所述中间结果Ci
16.根据权利要求15所述的方法,其中所述左乘子矩阵Ai的M维度平均拆分为L份形成所述L个左乘小矩阵。
17.根据权利要求15-16任一所述的方法,其中所述存储核在集群内的多个处理核之间共享,并且所述方法进一步包括:
以每个处理核一次可处理的K维度数据量大小Δk为步长,所述存储核步进式加载由其所属集群处理的子矩阵。
18.根据权利要求15-17任一所述的方法,进一步包括:
第i个集群内的所述存储核将右乘子矩阵Bi广播至所属集群内的所述L个处理核;以及
将所述L个左乘小矩阵Aji分发给所属集群内的所述L个处理核。
19.根据权利要求13-18任一所述的方法,其中所述存储核配置有至少两个存储区,并且所述方法进一步包括:
在其中一个存储区与所属集群外的存储单元之间进行数据访存的同时,在另一存储区与所属集群内的处理核之间进行数据访存。
20.根据权利要求13-19任一所述的方法,进一步包括:
所述S个集群对所述S个中间结果进行多轮两两累加的规约计算,以得到所述最终结果。
21.根据权利要求20所述的方法,其中S=2P,并且所述方法进一步包括:
所述S个集群执行P轮规约计算以得到所述最终结果,在每轮规约计算中,将所述中间结果或前一轮规约的规约结果两两累加进行规约,得到当前轮规约计算的规约结果。
22.根据权利要求21所述的方法,其中对于第k轮规约,k=1,…,P,所述方法包括:
所述S个集群中的第(2q+1)*2k-1个集群将其内各处理核计算得到的中间结果或前一轮规约结果经由集群内的存储核传送至第q*2k个集群的存储核上,其中q=0,…,S/2k-1;以及
所述S个集群中的第q*2k个集群将其存储核上的中间结果或前一轮规约结果分发至对应的处理核,以与所述处理核上的中间结果或前一轮规约结果进行累加运算,得到当前轮规约计算的规约结果。
CN202110302811.7A 2021-03-22 2021-03-22 执行矩阵乘法的计算装置、方法及相关产品 Pending CN113010845A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110302811.7A CN113010845A (zh) 2021-03-22 2021-03-22 执行矩阵乘法的计算装置、方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110302811.7A CN113010845A (zh) 2021-03-22 2021-03-22 执行矩阵乘法的计算装置、方法及相关产品

Publications (1)

Publication Number Publication Date
CN113010845A true CN113010845A (zh) 2021-06-22

Family

ID=76404359

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110302811.7A Pending CN113010845A (zh) 2021-03-22 2021-03-22 执行矩阵乘法的计算装置、方法及相关产品

Country Status (1)

Country Link
CN (1) CN113010845A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434813A (zh) * 2021-06-26 2021-09-24 上海寒武纪信息科技有限公司 一种基于神经网络的矩阵乘运算方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980182A (zh) * 2010-10-15 2011-02-23 清华大学 基于矩阵运算的并行计算方法
US20180373902A1 (en) * 2016-01-21 2018-12-27 Hewlett Packard Enterprise Development Lp Analog sub-matrix computing from input matrixes
CN109754076A (zh) * 2018-12-27 2019-05-14 中国科学院上海微系统与信息技术研究所 多核心类脑芯片
CN111199275A (zh) * 2018-11-20 2020-05-26 上海登临科技有限公司 用于神经网络的片上系统
CN111753979A (zh) * 2019-03-28 2020-10-09 国际商业机器公司 基于矩阵因子分解的梯度压缩

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980182A (zh) * 2010-10-15 2011-02-23 清华大学 基于矩阵运算的并行计算方法
US20180373902A1 (en) * 2016-01-21 2018-12-27 Hewlett Packard Enterprise Development Lp Analog sub-matrix computing from input matrixes
CN111199275A (zh) * 2018-11-20 2020-05-26 上海登临科技有限公司 用于神经网络的片上系统
CN109754076A (zh) * 2018-12-27 2019-05-14 中国科学院上海微系统与信息技术研究所 多核心类脑芯片
CN111753979A (zh) * 2019-03-28 2020-10-09 国际商业机器公司 基于矩阵因子分解的梯度压缩

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SHUAI KANG: "Porous core-shell zeolitic imidazolate framework-derived Co/NPC@ZnO-decorated reduced graphene oxide for lightweight and broadband electromagnetic wave absorber", JOURNAL OF ALLOYS AND COMPOUNDS, vol. 818, pages 1 - 15 *
孙全超;: "基于Seysen算法的新型同步格基规约算法研究", 山东化工, no. 09, pages 238 - 242 *
张朝龙: "CUDA并行算法系列之规约 - 张朝龙(行之)", 博客园, pages 2 - 11 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434813A (zh) * 2021-06-26 2021-09-24 上海寒武纪信息科技有限公司 一种基于神经网络的矩阵乘运算方法及相关装置

Similar Documents

Publication Publication Date Title
CN111047022B (zh) 一种计算装置及相关产品
CN112799726B (zh) 数据处理装置、方法及相关产品
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
CN112633490A (zh) 执行神经网络模型的数据处理装置、方法及相关产品
CN110059797A (zh) 一种计算装置及相关产品
CN111930681B (zh) 一种计算装置及相关产品
CN111079908B (zh) 片上网络数据处理方法、存储介质、计算机设备和装置
CN115221102B (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
CN113837922A (zh) 计算装置、数据处理方法及相关产品
CN113010845A (zh) 执行矩阵乘法的计算装置、方法及相关产品
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
CN111047021B (zh) 一种计算装置及相关产品
CN113469337B (zh) 用于优化神经网络模型的编译方法及其相关产品
CN111047024B (zh) 一种计算装置及相关产品
CN112801276A (zh) 数据处理方法、处理器及电子设备
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
CN111047023B (zh) 一种计算装置及相关产品
CN115878072A (zh) 执行多维数据的二元运算的计算装置、方法及相关产品
WO2022143799A1 (zh) 用于矩阵乘操作的集成电路装置、计算设备、系统和方法
CN111062469B (zh) 计算装置及相关产品
CN114444677A (zh) 进行稀疏化训练的装置、板卡、方法及可读存储介质
CN114429194A (zh) 处理神经网络计算的装置、板卡、方法及可读存储介质
CN114282659A (zh) 计算神经网络的装置、板卡、方法及可读存储介质
CN114358261A (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