CN113434813B - 一种基于神经网络的矩阵乘运算方法及相关装置 - Google Patents
一种基于神经网络的矩阵乘运算方法及相关装置 Download PDFInfo
- Publication number
- CN113434813B CN113434813B CN202110715209.6A CN202110715209A CN113434813B CN 113434813 B CN113434813 B CN 113434813B CN 202110715209 A CN202110715209 A CN 202110715209A CN 113434813 B CN113434813 B CN 113434813B
- Authority
- CN
- China
- Prior art keywords
- matrix
- clusters
- data blocks
- input data
- cluster
- 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.)
- Active
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 236
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 24
- 238000004891 communication Methods 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 7
- PSYGHMBJXWRQFD-UHFFFAOYSA-N 2-(2-sulfanylacetyl)oxyethyl 2-sulfanylacetate Chemical compound SCC(=O)OCCOC(=O)CS PSYGHMBJXWRQFD-UHFFFAOYSA-N 0.000 description 4
- 101000685982 Homo sapiens NAD(+) hydrolase SARM1 Proteins 0.000 description 4
- 102100023356 NAD(+) hydrolase SARM1 Human genes 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000849 selective androgen receptor modulator Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 108700039708 galantide Proteins 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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
- 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/045—Combinations of networks
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本披露公开了一种基于神经网络的矩阵乘运算方法及相关装置,该方法包括应用于芯片,芯片包括N个集群,N个集群中的每个集群包括M个处理器核,N和M属于正整数,方法包括:将输入矩阵和权值矩阵写入N个集群中,其中,输入矩阵包括N个输入数据块,权值矩阵包括N*M个权值数据块,每个输入数据块分别写入在每个集群中,每个权值数据块分别写入每个处理器核中;按照预设顺序将第一输入数据块在N个集群中依次传递并计算,得到矩阵乘结果,其中,第一输入数据块为N个输入数据块中的任意一个输入数据块,矩阵乘结果为输入矩阵和权值矩阵的相乘结果。通过本披露,在一定程度上可以充分利用集群之间的通信宽带,节省IO时间,提高运行效率。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种基于神经网络的矩阵乘运算方法及相关装置。
背景技术
全连接层(Fully Connected Layers,FC)在整个神经网络中起到“分类器”的作用,作为神经网络中较为基础的运算,其数学表示为Y=X*M+b。也即,输入矩阵X与权值矩阵M先进行矩阵乘,然后加上偏置b,得到输出Y。
一般来说,现代处理器多采用多核并行的架构,每个处理器核上的空间有限。由于神经网络FC层的权值矩阵M较大,单个核难以完成矩阵乘运算。一般需要较多次的输入/输出(Input/Output,IO)操作才可以完成矩阵乘计算,而多次IO操作可能会增加通信时间,降低处理器的运行效率。
发明内容
为了解决如上所提到的一个或多个技术问题,本申请实施例在多个方面提出了提供了基于神经网络的矩阵乘运算方法及相关装置,按照预设顺序将输入数据块在N个集群中依次传递并计算,在一定程度上可以充分利用集群之间的通信宽带,节省IO时间,提高运行效率。
在第一方面中,本申请实施例提供了一种基于神经网络的矩阵乘运算方法,所述,该述方法应用于芯片,所述芯片包括N个集群,所述N个集群中的每个集群包括M个处理器核,N和M属于正整数,所述方法包括:将输入矩阵和权值矩阵写入所述N个集群中,其中,所述输入矩阵包括N个输入数据块,所述权值矩阵包括N*M个权值数据块,每个输入数据块分别写入在每个集群中,每个权值数据块分别写入每个处理器核中;按照预设顺序将第一输入数据块在所述N个集群中依次传递并计算,得到矩阵乘结果,其中,所述第一输入数据块为所述N个输入数据块中的任意一个输入数据块,所述矩阵乘结果为所述输入矩阵和所述权值矩阵的相乘结果。
在第二方面中,本申请实施例提供了一种基于神经网络的矩阵乘运算装置,该装置包括:写入单元,用于将输入矩阵和权值矩阵写入所述N个集群中,其中,所述输入矩阵包括N个输入数据块,所述权值矩阵包括N*M个权值数据块,每个输入数据块分别写入在每个集群中,每个权值数据块分别写入每个处理器核中;处理单元,用于按照预设顺序将第一输入数据块在所述N个集群中依次传递并计算,得到矩阵乘结果,其中,所述第一输入数据块为所述N个输入数据块中的任意一个输入数据块,所述矩阵乘结果为所述输入矩阵和所述权值矩阵的相乘结果。
在第三方面中,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当所述计算机程序在一个或多个处理器上运行时,执行如前述第一方式的任一实施例的方法。
在第四方面中,本申请实施例提供了一种芯片系统,该芯片系统包括至少一个处理器、存储器和接口电路,所述存储器中存储有计算机程序,当所述计算机程序在一个或多个处理器上运行时,执行如前述第一方式的任一实施例的方法。
通过如上所提供的基于神经网络的矩阵乘运算方法及相关装置,本申请实施例的方案利用了集群上的存储空间,将数据(比如说输入矩阵和权值矩阵)一次写入到N个集群中,并且本申请实施例的方案还利用了集群之间的通信宽带,按照预设顺序将第一输入数据块在N个集群中依次传递并计算来完成输入矩阵与权值矩阵的矩阵乘运算。可以看出,对于神经网络FC层来说,当进行一次读取操作,将FC层的输入矩阵和权值矩阵写入到集群中后,利用集群之间的通信宽带,完成输入矩阵和权值矩阵的矩阵乘运算,相比于现有技术而言,可以减少IO操作,提高运行效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是示出此实施例的一种板卡10的结构示意图;
图2是示出此实施例中的组合处理装置的结构图;
图3示出了计算装置201为单核的内部结构示意图;
图4示出了计算装置201为多核的内部结构示意图;
图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图;
图6示出矩阵乘的拆分方式的示意图;
图7A示出一种基于神经网络的矩阵乘运算方法的流程示意图;
图7B示出的一种对输入矩阵和权值矩阵进行拆分的示意图;
图7C示出第一输入数据块在N个集群中依次传递的示意图;
图8是示出一种基于神经网络的矩阵乘运算装置800的结果示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面结合附图来详细描述本方案的具体实施方式。
图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中所示的组合处理装置20包括计算装置201、接口装置202、处理装置203和动态随机存取存储器(Dynamic Random Access Memory,DRAM)204。其中,组合处理装置20中的计算装置201、接口装置202和处理装置203可以为芯片101中的装置。
计算装置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整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核的内部结构示意图。单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入矩阵或输入数据,单核计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果,比如说本披露中提及的输入矩阵或左矩阵;WRAM 332则用以存储深度学习网络的卷积核,即权值,比如说本披露中提及的权值矩阵或右矩阵;DMA 333通过总线34连接DRAM 204,负责单核计算装置301与DRAM 204间的数据搬运。
在一些实现中,存储模块33可以包括多级存储单元,例如多级缓存,以便支持本申请实施例的数据级流水线。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置400采用分层结构设计,多核计算装置400作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置400是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置400包括外部存储控制器41、外设通信模块42、片上互联模块43、同步模块44以及多个集群45。
外部存储控制器41可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块42用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块43将外部存储控制器41、外设通信模块42及多个集群45连接起来,用以在各个模块间传输数据和控制信号。同步模块44是一种全局同步屏障控制器(Global Barrier Controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群45是多核计算装置400的计算核心,在图中示例性地展示4个,随着硬件的发展,本公开的多核计算装置400还可以包括8个、16个、64个、甚至更多的集群45。集群45用以高效地执行深度学习算法。
以集群的层级来看,如图4右上方所示,每个集群45包括处理单元402和存储器核(MEM core)404。处理单元402执行各种计算任务。在一些实现中,处理单元可以是多核架构,例如包括多个处理器核(IPU core)411-1~411-n,以完成诸如大规模向量或矩阵计算任务。本公开不限制处理器核411的数量。
处理器核411的内部架构如图4下方所示。每个处理器核411内可以具有多个用于执行计算任务的计算模块424-1~424-m,以及为执行计算任务所需要的本地存储模块423。需特别说明的是,本地存储模块423可以包括各种通信模块,以与外部存储单元进行数据交换。例如,本地存储模块423可以包括通信模块421,以与存储器核404中的共享存储模块415通信。通信模块421例如可以是搬运直接内存访问模块(Move Direct Memory Access,MVDMA)。本地存储模块423还可以包括通信模块422,以与片外内存,例如DRAM 408进行数据交换。通信模块422例如可以是输入/输出直接内存访问模块(Input/ouput Direct MemoryAccess,IODMA)。IODMA 422控制本地存储模块423中的NRAM/WRAM(图4未示出,参见图3)与DRAM 408的访存;MVDMA 421则用以控制本地存储模块423中的NRAM/WRAM与共享存储模块415的访存。
继续图4右上方视图,存储器核404主要用以存储和通信,即存储处理器核411间的共享数据或中间结果、以及执行集群45与DRAM 408之间的通信、集群45间彼此的通信、处理器核411间彼此的通信等。在其他实施例中,存储器核404具有标量运算的能力,用以执行标量运算,以实现数据通信中的运算任务。
存储器核404包括一个较大的共享存储模块(SRAM)415、广播总线414、集群直接内存访问模块(cluster direct memory access,CDMA)418、全局直接内存访问模块(globaldirect memory access,GDMA)416及通信时计算模块417。SRAM 415承担高性能数据中转站的角色,在同一个集群45内不同处理器核411之间所复用的数据不需要通过处理器核411各自向DRAM 408获得,而是经SRAM 415在处理器核411间中转,存储器核404只需要将复用的数据从SRAM 415迅速分发给多个处理器核411即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线414、CDMA 418及GDMA 416则分别用来执行处理器核411间的通信、集群45间的通信和集群45与DRAM 408的数据传输。以下将分别说明。
广播总线414用以完成集群45内各处理器核411间的高速通信,此实施例的广播总线414支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 415传输到特定几个处理器核411的通信方式,而广播则是将一份数据从SRAM 415传输到所有处理器核411的通信方式,属于多播的一种特例。
CDMA 418用以控制在同一个计算装置201内不同集群45间的SRAM415的访存。
GDMA 416与外部存储控制器41协同,用以控制集群45的SRAM 415到DRAM 408的访存,或是将数据自DRAM 408读取至SRAM 415中。从前述可知,DRAM 408与本地存储模块423中的NRAM/WRAM间的通信可以经由2个渠道来实现。第一个渠道是通过IODMA 422直接联系DRAM 408与本地存储模块423;第二个渠道是先经由GDMA 416使得数据在DRAM 408与SRAM415间传输,再经过MVDMA 421使得数据在SRAM 415与本地存储模块423间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 408与本地存储模块423间的通信通过第二个渠道可能更有效率。本公开的实施例可根据本身硬件条件选择数据传输渠道。
在一些实施例中,存储器核404可以作为集群45内的一个缓存层级,起到拓宽通信带宽的作用。进一步地,存储器核404还可以完成与其他集群45之间的通信。存储器核404例如能够实现集群45之间的广播(Broadcast)、撒播(Scatter)、收集(Gather)、规约(Reduce)和全规约(All-reduce)等通信功能。其中,广播是指将同一份数据分发广播给所有集群;撒播是指将不同数据分发给不同的集群;收集是指将多个集群的数据会聚在一起;规约是指将多个集群中的数据按照指定的映射函数进行运算得到最后的结果发送给某个集群;而全规约与规约的区别在于后者最后的结果只发送给一个集群,而全规约需要发送给所有集群。
通信时计算模块417可以用于在通信过程中完成例如上述规约、全规约等通信中的计算任务,而不需要借助处理单元402,从而提升通信效率,达到“存算一体”的效果。取决于不同的硬件实现,通信时计算模块417和共享存储模块415可以整合在相同或不同部件中,本申请实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本申请实施例类似,均属于本申请实施例的保护范围。同理,取决于不同的硬件实现,本文展示的硬件结构,均可以根据实际需要,进行整合或删减,本申请实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本申请实施例类似,均属于本申请实施例的保护范围。
图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA 418的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
接下来,对本申请实施例中的矩阵乘的拆分方式进行解释说明,以便本领域技术人员理解。本申请实施例中的矩阵乘主要实现输入矩阵(也叫左矩阵)行与权值矩阵(也叫右矩阵)列上元素的对应位相乘求和,由于存储模块33上的存储空间和/或运算模块32的运算能力有限,当输入矩阵和/或权值矩阵的维度太大时,一般很难一次完成对输入矩阵和权值矩阵的矩阵乘。所以需要将矩阵乘进行拆分,多次计算得到最终结果。图6示出矩阵乘的拆分方式的示意图,从图6的(a)可以看出,输入矩阵的维度为[s,m],权值矩阵的维度为[m,n]。
从图6的(b)可以看出,将输入矩阵X按行拆分,也即根据预设数量将输入矩阵按行拆分为num份,每份矩阵的维度为[s/num,m]。将每份矩阵分别与权值矩阵相乘,可以得到num个第一局部结果。然后将num个第一局部结果在行维度上拼接,可以得到最终的计算结果。
从图6的(c)可以看出,将权值矩阵按列拆分,也即根据预设数量将权值矩阵按列拆分为num份,每份矩阵的维度为[m,n/num]。将输入矩阵分别与拆分得到的各部分权值矩阵相乘,可以得到num个第二局部结果。然后将num个第二局部结果在列维度上拼接,可以得到最终的计算结果。
从图6的(d)可以看出,将输入矩阵按列拆分,将权值矩阵按行拆分。因为矩阵乘要求左矩阵与右矩阵的维度要一致,所以这种情况下两个矩阵要拆分成相同的份数。也即,根据预设数量将输入矩阵按列拆分为num份,每份矩阵的维度为[s,m/num];根据预设数量将权值矩阵按行拆分为num份,每份矩阵的维度为[m/num,n]。将相应的部分进行矩阵乘可以得到num个第三局部结果,然后将num个第三局部结果进行累加即可以得到最终的计算结果。
需要说明的是,矩阵乘的拆分方式不限于图6所示的,图6所示的拆分方式可以组合使用,从而达到更小的拆分,以适应任意规模的矩阵乘。
请参见图7A,图7A示出一种基于神经网络的矩阵乘运算方法的流程示意图,该方法可以应用于图1所示的芯片101。该方法包括如下步骤:
步骤S701,将输入矩阵和权值矩阵写入N个集群中。
具体地,芯片101具有片外存储空间和片上存储空间,片外存储空间可以包括DDR内存,片上存储空间可以包括NRAM331和WRAM332。芯片101为多核结构时,芯片101可以包括N个集群45,每个集群45可以包括M个处理器核411。其中,每个处理器核内可以具有多个为执行计算任务所需要的本地存储模块423(比如说NRAM和/或WRAM)。每个集群45还可以包括存储器核404,存储器核404可以包括共享存储模块(SRAM)415。
因此,当需要对神经网络(比如说FC层)进行运算时,芯片101可以将神经网络(比如说FC层)的输入矩阵[s,m]平均分成N个输入数据块,将神经网络(比如说FC层)的权值矩阵[m,n]平均分成N*M个权值数据块。然后芯片101可以将N个输入数据块存储到集群的SRAM中,将N*M个权值数据块存储到集群的处理器核的WRAM中。因为神经网络(比如说FC层)的输入矩阵和权值矩阵需要进行矩阵乘运算,而处理器核用于完成各种计算任务。所以矩阵乘运算可以在处理器核上完成,因此需要将存储在每个集群的SRAM中的输入数据块转移到每个集群的处理器核的NRAM中。这样,就可以在每个集群的处理器核中完成对应的输入数据块和对应的权值数据块的矩阵乘运算。
在一种可能的实现方式中,芯片101可以根据集群的数量N将输入矩阵按行拆分为N个输入数据块,拆分得到的每个输入数据块的维度为[s/N,m]。同样的,因为芯片101可以包括N个集群,而每个集群可以包括M个处理器核,所以处理器核的数量可以是N*M。芯片101可以根据处理器核的数量N*M将权值矩阵按列拆分为N*M个权值数据块,每个权值数据块的维度为[m,n/N*M]。举例来说,请参见图7B,图7B示出的一种对输入矩阵和权值矩阵进行拆分的示意图。从图7B可以看出,当集群的数量N为4,每个集群上处理器核的数量为4时。输入矩阵X可以按行被拆分为4份输入数据块,分别是X-0、X-1、X-2和X-3。权值矩阵M可以按列被拆分为16份权值数据块,分别是M-0、M-1、M-2、M-3、M-4、M-5、M-6、M-7、M-8、M-9、M-10、M-11、M-12、M-13、M-14、M-15。
这样的拆分方式减少了N个集群间结果进行累加的操作,只需在集群内做中间结果累加即可,有效减少运行时间,提高运行效率。
当将拆分得到的N个输入数据块[s/N,m]分别写入每个集群的SARM,以及将拆分得到的N*M个权值数据块[m,n/N*M]分别写入每个集群的处理器核的WARM之后。芯片101可以将每个集群的SARM存储的输入数据块[s/N,m]转移到每个集群的处理器核上完成输入数据块[s/N,m]与权值数据块[m,n/N*M]的矩阵乘运算。
在一种可能的实现方式中,芯片101可以根据集群的数量N将输入矩阵按列拆分为N个输入数据块,拆分得到的每个输入数据块的维度为[s,m/N]。同样的,芯片101可以根据集群的数量N先将权值矩阵[m,n]按行拆分为N个目标数据块,每个目标数据块的维度为[m/N,n]。然后再根据每个集群中处理器核的数量M将每个集群中的目标数据块[m/N,n]按列进行拆分,最后可以得到N*M个权值数据块[m/N,n/M]。
当将拆分得到的N个输入数据块[s,m/N]分别写入集群的SARM,以及将拆分得到的N*M个权值数据块[m/N,n/M]分别写入每个集群的处理器核的WARM之后。芯片101可以将每个集群的SARM存储的输入数据块[s,m/N]转移到每个集群的处理器核上完成输入数据块[s,m/N]与权值数据块[m/N,n/M]的矩阵乘运算。
在一种可能的实现方式中,芯片101可以根据集群的数量N将输入矩阵按列拆分为N个输入数据块,拆分得到的每个输入数据块的维度为[s,m/N]。同样的,芯片101可以根据所有处理器核的数量N*M将权值矩阵[m,n]按行拆分得到N*M个权值数据块,每个权值数据块的维度为[m/N*M,n]。
当将拆分得到的N个输入数据块[s,m/N]分别写入集群的SARM,以及将拆分得到的N*M个权值数据块[m/N*M,n]分别写入每个集群的处理器核的WARM之后。因此,输入数据块的列维度与权值数据块的行维度不对应,为了保证输入数据块和权值数据块可以进行矩阵乘运算,芯片101可以按照每个集群中处理器核的数量M将输入数据块[s,m/N]按列再拆分为M个输入数据块[s,m/N*M]。芯片101可以将拆分后的输入数据块[s,m/N*M]转移到每个集群的处理器核上完成输入数据块[s,m/N*M]与权值数据块[m/N*M,n]的矩阵乘运算。
在一种可能的实现方式中,芯片101可以根据集群的数量N将输入矩阵按行拆分为N个输入数据块,拆分得到的每个输入数据块的维度为[s/N,m]。同样的,芯片101可以根据集群的数量N先将权值矩阵[m,n]按列拆分为N个目标数据块,每个目标数据块的维度为[m,n/N]。然后再根据每个集群中处理器核的数量M将每个集群中的目标数据块[m,n/N]按行进行拆分,最后可以得到N*M个权值数据块[m/M,n/N]。
这样的拆分方式减少了N个集群间结果进行累加的操作,只需在集群内做中间结果累加即可,有效减少运行时间,提高运行效率。
当将拆分得到的N个输入数据块[s/N,m]分别写入集群的SARM,以及将拆分得到的N*M个权值数据块[m/M,n/N]分别写入每个集群的处理器核的WARM之后。因此,输入数据块的列维度与权值数据块的行维度是不对应的,为了保证输入数据块和权值数据块可以进行矩阵乘运算,芯片101可以按照每个集群中处理器核的数量M将输入数据块[s/N,m]按行再拆分为M个输入数据块,拆分后的输入数据块的维度为[s/N,m/M]。芯片101可以将拆分后的输入数据块[s/N,m/M]转移到每个集群的处理器核上,来完成输入数据块[s/N,m/M]与权值数据块[m/M,n/N]的矩阵乘运算。
需要说明的是,当出现矩阵无法被整除的问题时,也即矩阵无法被平均拆分时,可以通过补齐的方式来解决上述问题。
可以看出,通过按照处理器核的数量来拆分权值矩阵,和通过按照集群的数量来拆分输入矩阵,可以将矩阵乘运算的运算量均匀分布到每个集群的处理器核中,从而来实现高效并行。
步骤S702,按照预设顺序将第一输入数据块在N个集群中依次传递并计算,得到矩阵乘结果。
具体地,矩阵相乘运算是将左矩阵的每一行与右矩阵的每一列进行对应相乘,通过步骤S701已经在任意一个集群的处理器核中完成该集群中的输入数据块与权值数据块的矩阵乘运算,并将进行矩阵乘运算所得到的计算结果保存在集群的片上存储中。为了得到完整且准确的输入矩阵与权值矩阵的矩阵乘结果,芯片101需要按照预设顺序将第一输入数据块在每个集群中依次传递,使得传输到第一集群中的第一输入数据块与第一集群中的每个处理器核中的权值数据块进行矩阵乘运算,得到多个相乘结果。其中,第一输入数据块为N个输入数据块中的任意一个输入数据块,第一集群为N个集群中的任意一个集群。比如说,请参见图7C,图7C示出第一输入数据块在N个集群中依次传递的示意图。从图7C可以看出,第一集群可以是集群1,第一输入数据块可以是X-0。因此传输到集群1中的第一输入数据块X-0可以与集群1中的权值数据块M-4、M-5、M-6、M-7进行矩阵乘运算,得到相乘结果。
在一种可能的实现方式中,N个集群之间存在环状通信链路,也即在环状通信链路上的集群由顺时针方向或者逆时针方向连接成封闭回路,每一个集群与它左右相邻的集群连接。因此,芯片101可以通过环状通信链路按照顺时针或者逆时针将第一输入数据块在N个集群中依次传递。
举例来说,请参见图7C,图7C所示的芯片101通过环状通信链路按照顺时针方向将第一输入数据块在每个集群中依次传递。在第一次传递中,输入数据块X-0由集群0传递到集群1,因此可以在集群1的处理器核中可以完成输入数据块X-0与权值数据块M-4、M-5、M-6、M-7的矩阵相乘,得到相乘结果;输入数据块X-1由集群1传递到集群2,因此可以在集群2的处理器核中完成输入数据块X-1与权值数据块M-8、M-9、M-10、M-11的矩阵相乘,得到相乘结果;输入数据块X-2由集群2传递到集群3,因此可以在集群3的处理器核中完成输入数据块X-2与权值数据块M-12、M-13、M-14、M-15的矩阵相乘,得到相乘结果;输入数据块X-3由集群3传递到集群0,因此可以在集群0的处理器核中完成输入数据块X-3与权值数据块M-0、M-1、M-2、M-3的矩阵相乘,得到相乘结果,并将进行矩阵乘运算所得到的相乘结果保存在集群的片上存储中。
在第二次轮转中,输入数据块X-0由集群1传递到集群2,并与集群2中存储的权值数据块进行矩阵乘运算,得到相乘结果;输入数据块X-1由集群2传递到集群3,并与集群3中存储的权值数据块进行矩阵乘运算,得到相乘结果;输入数据块X-2由集群3传递到集群0,并与集群0中存储的权值数据块进行矩阵乘运算,得到相乘结果;输入数据块X-3由集群0传递到集群1,并与集群1中存储的权值数据块进行矩阵乘运算,得到相乘结果,并将进行矩阵乘运算所得到的相乘结果保存在集群的片上存储中。
在第三次轮转中,输入数据块X-0由集群2传递到集群3,并与集群3中存储的权值数据块进行矩阵乘运算,得到相乘结果;输入数据块X-1由集群3传递到集群0,并与集群0中存储的权值数据块进行矩阵乘运算,得到相乘结果;输入数据块X-2由集群0传递到集群1,并与集群1中存储的权值数据块进行矩阵乘运算,得到相乘结果;输入数据块X-3由集群1传递到集群2,并与集群2中存储的权值数据块进行矩阵乘运算,得到相乘结果,并将进行矩阵乘运算所得到的相乘结果保存在集群的片上存储中。
综上所述,经过三次轮转后,每个输入数据块可以与每个权值数据块完成矩阵乘运算,从而芯片101可以得到多个相乘结果。然后,芯片101可以根据多个相乘结果得到输入矩阵和权值矩阵的矩阵乘结果。可以看出,芯片101将输入数据块一次性地从DDR写入到每个集群的SRAM后,不需要再重复将写入到每个集群的数据从DDR中读出,节省了片上片外的通信时间,提高了处理器的运行效率。
可以理解的是,如果输入数据块的维度为[s/N,m],权值数据块的维度为[m,n/N*M],则芯片101将每个集群的处理器核上计算得到的相乘结果进行拼接,即可得到矩阵乘结果。如果输入数据块的维度为[s,m/N],权值数据块的维度为[m/N,n/M],则芯片101先将每个集群上计算得到的相乘结果进行累加,然后再将累加得到的结果进行拼接即可得到矩阵乘结果。如果输入数据块的维度为[s,m/N],权值数据块的维度为[m/N*M,n],则芯片101将每个集群的处理器核上计算得到的相乘结果进行累加,即可得到矩阵乘结果。如果输入数据块的维度为[s/N,m],权值数据块的维度为[m/M,n/N],则芯片101先将每个集群上计算得到的相乘结果进行累加,然后再将累加得到的结果进行拼接即可得到矩阵乘结果。
需要说明的是,若输入数据块的列维度与权值数据块的行维度对应时,传递到集群中的输入数据块可以与权值数据块之间进行矩阵乘运算。若输入数据块的列维度与权值数据块的行维度不对应时,传递到集群中的输入数据块需要进行进一步的拆分,使得输入数据块可以和权值数据块进行矩阵乘运算。
需要说明的是,上述提及的s、m和n所对应的数量可以是相等的,也可以是不相等的。
需要说明的是,本发明中的数据(如,第一输入数据块)在N个集群中的传递和计算是可以同时并行的,也就是说,计算的时候同时已经完成传递了,因此可以有效节省运行时间,提高效率。
请参阅图8,图8是示出一种基于神经网络的矩阵乘运算装置800的结果示意图,基于神经网络的矩阵乘运算装置800可以为节点,也可以为节点中的器件,例如芯片或者集成电路等。如图所示,基于神经网络的矩阵乘运算装置800可以包括写入单元801和处理单元802。其中,各个单元的描述如下:
写入单元801,用于将输入矩阵和权值矩阵写入N个集群中,其中,输入矩阵包括N个输入数据块,权值矩阵包括N*M个权值数据块,每个输入数据块分别写入在每个集群中,每个权值数据块分别写入每个处理器核中;
处理单元802,用于按照预设顺序将第一输入数据块在N个集群中依次传递并计算,得到矩阵乘结果,其中,第一输入数据块为N个输入数据块中的任意一个输入数据块,矩阵乘结果为输入矩阵和权值矩阵的相乘结果。
在一种可能的实现方式中,处理单元802,具体用于:按照预设顺序将第一输入数据块在N个集群中依次传递;将传递到第一集群中的第一输入数据块与第一集群中每个处理器核中的权值数据块进行矩阵乘运算,得到多个第一相乘结果;其中,第一集群为N个集群中的任意一个集群;根据在N个集群中所得到的多个第一相乘结果确定矩阵乘结果。
在一种可能的实现方式中,N个集群之间存在环状通信链路;处理单元802,具体用于:通过每个集群之间的环状通信链路按照顺时针或逆时针将第一输入数据块在N个集群中依次传递。
在一种可能的实现方式中,写入单元801,具体用于:根据集群的数量将输入矩阵按行进行拆分,得到N个输入数据块;根据处理器核的数量将权值矩阵按列进行拆分,得到N*M个权值数据块;将N个输入数据块中的每个输入数据块分别写入N个集群的每个集群中,将N*M个权值数据块中的每个权值数据块分别写入N个集群的M个处理器核中。
在一种可能的实现方式中,写入单元801,具体用于:根据集群的数量将输入矩阵按列进行拆分,得到N个输入数据块;根据集群的数量先将权值矩阵按行进行拆分,得到N个目标数据块;然后根据每个集群中处理器核的数量再将每个目标数据块按列进行拆分,得到N*M个权值数据块;将N个输入数据块中的每个输入数据块分别写入N个集群的每个集群中,将N*M个权值数据块中的每个权值数据块分别写入N个集群的M个处理器核中。
在一种可能的实现方式中,写入单元801,具体用于:根据集群的数量对输入矩阵按列进行拆分,得到N个输入数据块;根据处理器核的数量对权值矩阵按行进行拆分,得到N*M个权值数据块;将N个输入数据块中的每个输入数据块分别写入N个集群的每个集群中,将N*M个权值数据块中的每个权值数据块分别写入N个集群的M个处理器核中。
在一种可能的实现方式中,写入单元801,根据集群的数量对输入矩阵按行进行拆分,得到N个输入数据块;根据集群的数量对权值矩阵按列进行拆分得到N个目标数据块,再根据每个集群中处理器核的数量对每个目标数据块按行进行拆分,得到N*M个权值数据块;将N个输入数据块中的每个输入数据块分别写入N个集群的每个集群中,将N*M个权值数据块中的每个权值数据块分别写入N个集群的M个处理器核中。
在一种可能的实现方式中,处理单元802,还用于根据第一集群中处理器核的数量将写入第一集群中的输入数据块按列拆分为M个输入数据块;其中,第一集群为N个集群中的任意一个集群;将拆分后的输入数据块与第一集群中每个处理器核中的权值数据块进行矩阵乘运算,得到第二相乘结果;其中,第二相乘结果用于得到矩阵乘结果。
虽然本文已经示出和描述了本申请实施例的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本申请实施例思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本申请实施例的过程中,可以采用对本文所描述的本申请实施例的各种替代方案。所附权利要求书旨在限定本申请实施例的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (10)
1.一种基于神经网络的矩阵乘运算方法,其特征在于,所述方法应用于芯片,所述芯片包括N个集群,所述N个集群中的每个集群包括M个处理器核,N和M属于正整数,所述方法包括:
将输入矩阵和权值矩阵写入所述N个集群中,其中,所述输入矩阵包括N个输入数据块,所述权值矩阵包括N*M个权值数据块,每个输入数据块分别写入在每个集群中,每个权值数据块分别写入每个处理器核中;
按照预设顺序将第一输入数据块在所述N个集群中依次传递并计算,得到矩阵乘结果,其中,所述第一输入数据块为所述N个输入数据块中的任意一个输入数据块,所述矩阵乘结果为所述输入矩阵和所述权值矩阵的相乘结果;
所述按照预设顺序将第一输入数据块在所述N个集群中依次传递并计算,得到矩阵乘结果,包括:
按照预设顺序将第一输入数据块在所述N个集群中依次传递;
将传递到第一集群中的所述第一输入数据块与所述第一集群中每个处理器核中的所述权值数据块进行矩阵乘运算,得到多个第一相乘结果;其中,所述第一集群为所述N个集群中的任意一个集群;
根据在N个集群中所得到的多个第一相乘结果确定所述矩阵乘结果;
所述N个集群之间存在环状通信链路;所述按照预设顺序将第一输入数据块在所述N个集群中依次传递,包括:
通过N个集群之间的所述环状通信链路按照顺时针或逆时针将所述第一输入数据块在所述N个集群中依次传递。
2.根据权利要求1所述的方法,其特征在于,所述将输入矩阵和权值矩阵写入所述N个集群中,包括:
根据所述集群的数量将所述输入矩阵按行进行拆分,得到所述N个输入数据块;
根据所述处理器核的数量将所述权值矩阵按列进行拆分,得到N*M个权值数据块;
将所述N个输入数据块中的每个输入数据块分别写入所述N个集群的每个集群中,将所述N*M个权值数据块中的每个权值数据块分别写入所述N个集群的所述M个处理器核中。
3.根据权利要求1或2所述的方法,其特征在于,所述将输入矩阵和权值矩阵写入所述N个集群中,包括:
根据所述集群的数量将所述输入矩阵按列进行拆分,得到所述N个输入数据块;
根据所述集群的数量先将所述权值矩阵按行进行拆分,得到N个目标数据块;然后根据每个集群中处理器核的数量再将每个目标数据块按列进行拆分,得到N*M个权值数据块;
将所述N个输入数据块中的每个输入数据块分别写入所述N个集群的每个集群中,将所述N*M个权值数据块中的每个权值数据块分别写入所述N个集群的所述M个处理器核中。
4.根据权利要求1所述的方法,其特征在于,所述将输入矩阵和权值矩阵写入所述N个集群中,包括:
根据所述集群的数量对所述输入矩阵按列进行拆分,得到所述N个输入数据块;
根据所述处理器核的数量对所述权值矩阵按行进行拆分,得到N*M个权值数据块;
将所述N个输入数据块中的每个输入数据块分别写入所述N个集群的每个集群中,将所述N*M个权值数据块中的每个权值数据块分别写入所述N个集群的所述M个处理器核中。
5.根据权利要求1所述的方法,其特征在于,所述将输入矩阵和权值矩阵写入所述N个集群中,包括:
根据所述集群的数量对所述输入矩阵按行进行拆分,得到所述N个输入数据块;
根据所述集群的数量对所述权值矩阵按列进行拆分得到N个目标数据块,再根据每个集群中处理器核的数量对每个目标数据块按行进行拆分,得到N*M个权值数据块;
将所述N个输入数据块中的每个输入数据块分别写入所述N个集群的每个集群中,将所述N*M个权值数据块中的每个权值数据块分别写入所述N个集群的所述M个处理器核中。
6.根据权利要求4或5所述的方法,其特征在于,所述将输入矩阵和权值矩阵写入所述N个集群中之后,所述按照预设顺序将第一输入数据块在所述N个集群中依次传递并计算,得到矩阵乘结果之前,还包括:
根据第一集群中处理器核的数量将写入所述第一集群中的输入数据块按列拆分为M个输入数据块;其中,所述第一集群为所述N个集群中的任意一个集群;
将拆分后的输入数据块与所述第一集群中每个处理器核中的所述权值数据块进行矩阵乘运算,得到第二相乘结果;其中,所述第二相乘结果用于得到所述矩阵乘结果。
7.根据权利要求1所述的方法,其特征在于,所述N个集群中的每个集群包括片上存储器,所述片上存储器用于存储输入矩阵和/或所述输入数据块与所述权值数据块进行矩阵乘运算所得到的计算结果。
8.一种基于神经网络的矩阵乘运算装置,其特征在于,所述装置包括:
写入单元,用于将输入矩阵和权值矩阵写入N个集群中,其中,所述输入矩阵包括N个输入数据块,所述权值矩阵包括N*M个权值数据块,每个输入数据块分别写入在每个集群中,每个权值数据块分别写入每个处理器核中;
处理单元,用于按照预设顺序将第一输入数据块在所述N个集群中依次传递并计算,得到矩阵乘结果,其中,所述第一输入数据块为所述N个输入数据块中的任意一个输入数据块,所述矩阵乘结果为所述输入矩阵和所述权值矩阵的相乘结果;
所述处理单元,具体用于:
按照预设顺序将第一输入数据块在所述N个集群中依次传递;
将传递到第一集群中的所述第一输入数据块与所述第一集群中每个处理器核中的所述权值数据块进行矩阵乘运算,得到多个第一相乘结果;其中,所述第一集群为所述N个集群中的任意一个集群;
根据在N个集群中所得到的多个第一相乘结果确定所述矩阵乘结果;
所述处理单元,具体用于:
通过N个集群之间的环状通信链路按照顺时针或逆时针将所述第一输入数据块在所述N个集群中依次传递。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在一个或多个处理器上运行时,执行如权利要求1-7中任一项所述的方法。
10.一种芯片系统,其特征在于,所述芯片系统包括至少一个处理器、存储器和接口电路,所述存储器中存储有计算机程序,当所述计算机程序在一个或多个处理器上运行时,执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110715209.6A CN113434813B (zh) | 2021-06-26 | 2021-06-26 | 一种基于神经网络的矩阵乘运算方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110715209.6A CN113434813B (zh) | 2021-06-26 | 2021-06-26 | 一种基于神经网络的矩阵乘运算方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434813A CN113434813A (zh) | 2021-09-24 |
CN113434813B true CN113434813B (zh) | 2024-05-14 |
Family
ID=77754708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110715209.6A Active CN113434813B (zh) | 2021-06-26 | 2021-06-26 | 一种基于神经网络的矩阵乘运算方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434813B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116415103B (zh) * | 2023-06-09 | 2023-09-05 | 之江实验室 | 一种数据处理的方法、装置、存储介质以及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301456A (zh) * | 2017-05-26 | 2017-10-27 | 中国人民解放军国防科学技术大学 | 基于向量处理器的深度神经网络多核加速实现方法 |
CN110321996A (zh) * | 2018-03-28 | 2019-10-11 | 华为技术有限公司 | 一种基于卷积神经网络的图像处理的方法和装置 |
US10515135B1 (en) * | 2017-10-17 | 2019-12-24 | Xilinx, Inc. | Data format suitable for fast massively parallel general matrix multiplication in a programmable IC |
CN111199275A (zh) * | 2018-11-20 | 2020-05-26 | 上海登临科技有限公司 | 用于神经网络的片上系统 |
CN113010845A (zh) * | 2021-03-22 | 2021-06-22 | 上海寒武纪信息科技有限公司 | 执行矩阵乘法的计算装置、方法及相关产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936943B2 (en) * | 2017-08-31 | 2021-03-02 | Qualcomm Incorporated | Providing flexible matrix processors for performing neural network convolution in matrix-processor-based devices |
US11481472B2 (en) * | 2019-04-01 | 2022-10-25 | Wave Computing, Inc. | Integer matrix multiplication engine using pipelining |
US11188618B2 (en) * | 2019-09-05 | 2021-11-30 | Intel Corporation | Sparse matrix multiplication acceleration mechanism |
KR20210071471A (ko) * | 2019-12-06 | 2021-06-16 | 삼성전자주식회사 | 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법 |
-
2021
- 2021-06-26 CN CN202110715209.6A patent/CN113434813B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301456A (zh) * | 2017-05-26 | 2017-10-27 | 中国人民解放军国防科学技术大学 | 基于向量处理器的深度神经网络多核加速实现方法 |
US10515135B1 (en) * | 2017-10-17 | 2019-12-24 | Xilinx, Inc. | Data format suitable for fast massively parallel general matrix multiplication in a programmable IC |
CN110321996A (zh) * | 2018-03-28 | 2019-10-11 | 华为技术有限公司 | 一种基于卷积神经网络的图像处理的方法和装置 |
CN111199275A (zh) * | 2018-11-20 | 2020-05-26 | 上海登临科技有限公司 | 用于神经网络的片上系统 |
CN113010845A (zh) * | 2021-03-22 | 2021-06-22 | 上海寒武纪信息科技有限公司 | 执行矩阵乘法的计算装置、方法及相关产品 |
Non-Patent Citations (4)
Title |
---|
Improving Execution Concurrency of Large-Scale Matrix Multiplication on Distributed Data-Parallel Platforms;Rong Gu et al;IEEE Transactions and Parallel and Distributed Systems;20170322;第2539-2552页 * |
基于 MPI + CUDA 异步模型的并行矩阵乘法;刘青昆 等;计算机应用;20111215;第21卷(第12期);全文 * |
并行计算系统中的矩阵乘算法及其MPI实现;姚玉坤 等;数字通信;20110225(01);全文 * |
面向多核向量处理器的矩阵乘法向量化方法;刘仲 等;计算机学报;20170630(10);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113434813A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245751B (zh) | 一种gemm运算方法及装置 | |
CN109213962B (zh) | 运算加速器 | |
CN111199275B (zh) | 用于神经网络的片上系统 | |
CN110717583B (zh) | 卷积电路、处理器、芯片、板卡和电子设备 | |
Biookaghazadeh et al. | Toward multi-fpga acceleration of the neural networks | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
US11868243B2 (en) | Topological scheduling | |
US20190340152A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN113434813B (zh) | 一种基于神经网络的矩阵乘运算方法及相关装置 | |
CN113434814B (zh) | 一种基于神经网络的矩阵乘运算方法及相关装置 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
CN113010845B (zh) | 执行矩阵乘法的计算装置、方法及相关产品 | |
CN111079908B (zh) | 片上网络数据处理方法、存储介质、计算机设备和装置 | |
CN111767243A (zh) | 数据处理方法、相关设备及计算机可读介质 | |
JP2020170358A (ja) | 集積回路、半導体装置、半導体モジュール、情報処理装置および半導体装置の制御方法 | |
CN111142808B (zh) | 存取设备及存取方法 | |
CN115904681A (zh) | 任务调度方法、装置及相关产品 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN113742266B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN113791996B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN118070865B (zh) | 人工智能模型的优化方法及装置、电子设备与存储介质 | |
CN117950624A (zh) | 基于计算装置的数据计算方法、装置及相关产品 | |
CN114996648A (zh) | 基于芯片的融合算子处理方法、装置及相关产品 | |
CN115495157A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |