CN117931721A - 一种众核芯片以及众核芯片的数据获取方法 - Google Patents
一种众核芯片以及众核芯片的数据获取方法 Download PDFInfo
- Publication number
- CN117931721A CN117931721A CN202211228758.1A CN202211228758A CN117931721A CN 117931721 A CN117931721 A CN 117931721A CN 202211228758 A CN202211228758 A CN 202211228758A CN 117931721 A CN117931721 A CN 117931721A
- Authority
- CN
- China
- Prior art keywords
- weight data
- computing
- cluster
- clusters
- memory
- 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 title claims abstract description 42
- 238000013528 artificial neural network Methods 0.000 claims abstract description 41
- 238000004364 calculation method Methods 0.000 claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000003993 interaction Effects 0.000 claims description 19
- 230000001360 synchronised effect Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 9
- 230000000903 blocking effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 21
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000005971 DNA damage repair Effects 0.000 description 1
- 102000002706 Discoidin Domain Receptors Human genes 0.000 description 1
- 108010043648 Discoidin Domain Receptors Proteins 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7846—On-chip cache and off-chip main memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种众核芯片以及众核芯片的数据获取方法。本发明实施例中的众核芯片,包括:至少两个计算集群,其中,所述至少两个计算集群之间具有数据通路;所述计算集群包括存储器和缓存,其中,所述存储器用于存储权值数据块;所述缓存用于存储从所述存储器中读取的所述计算集群对应的权值数据块,以及存储通过所述数据通路与其它计算集群的缓存交互的权值数据块;所述计算集群还包括处理核,所述处理核用于获取所述缓存中存储的权值数据块,以及进行神经网络计算模型的计算。在上述众核芯片的基础上进行数据获取,可以在获取神经网络计算模型的权值数据时减少加载数据的开销,进而减少网络计算时延。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种众核芯片以及众核芯片的数据获取方法。
背景技术
随着人工智能技术的发展,用户对芯片处理能力的要求越来越高,由于单核芯片的处理能力有限,为了提升片上***SOC的算力,众核芯片随之出现;在众核芯片中,存在多个簇,每个簇是由多个处理核组成的计算集群,多个簇可以并行计算,提升了片上***SOC的算力。
现有技术中,多个簇并行计算时,每个簇需要使用相同的神经网络计算模型的权值数据处理不同图片输入,储存在双倍速率同步动态随机存储器(Double Data Rate,DDR)内存上的神经网络计算模型的权值数据需要被不同的簇重复读取,但是由于DDR内存带宽的限制,会影响网络计算时延。
综上所述,如何在获取神经网络计算模型的权值数据时减少加载数据的开销,减少网络计算时延,是目前需要解决的问题。
发明内容
有鉴于此,本发明实施例提供了一种基于众核芯片的数据获取方法和装置,可以在获取神经网络计算模型的权值数据时减少加载数据的开销,进而减少网络计算时延。
第一方面,本发明实施例提供了一种众核芯片,包括:至少两个计算集群,其中,所述至少两个计算集群之间具有数据通路;
所述计算集群包括存储器和缓存,其中,所述存储器用于存储权值数据块;所述缓存用于存储从所述存储器中读取的所述计算集群对应的权值数据块,以及存储通过所述数据通路与其它计算集群的缓存交互的权值数据块;
所述计算集群还包括处理核,所述处理核用于获取所述缓存中存储的权值数据块,以及进行神经网络计算模型的计算。
可选的,所述计算集群还包括直接存储器访问,所述直接存储器访问用于从所述存储器读取所述计算集群对应的权值数据块至所述缓存。
可选的,所述众核芯片还包括控制模块,所述控制模块用于根据所述计算集群的数量,对全部权值数据进行分块处理,得到至少两个权值数据块;以及,确定每个所述计算集群对应的权值数据块。
可选的,所述存储器用于存储所述全部权值数据;或者
所述存储器用于存储所述计算集群对应的权值数据块。
可选的,所述存储器为双倍速率同步动态随机存储器,所述缓存为最后一级缓存。
第二方面,本发明实施例提供了一种众核芯片的数据获取方法,所述方法适用于包括至少两个计算集群的众核芯片,所述计算集群用于进行神经网络计算模型的计算,该方法包括:
对于每个计算集群,读取对应的权值数据块,其中,每个计算集群对应的权值数据块不同;
将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据。
可选的,所述对于每个计算集群,读取对应的权值数据块,具体包括:
对于每个计算集群,在所述每个计算集群对应的双倍速率同步动态随机存储器中读取对应的权值数据块。
可选的,在所述每个计算集群对应的双倍速率同步动态随机存储器中读取对应的权值数据块,具体包括:
通过直接存储器访问在所述每个计算集群对应的双倍速率同步动态随机存储器中,获取所述每个计算集群对应的权值数据块。
可选的,所述将所述每个计算集群对应的权值数据块进行数据交互,具体包括:
将所述至少两个计算集群对应的权值数据块通过所述众核芯片内的数据通路进行数据交互。
可选的,该方法还包括:
所述每个计算集群中的处理核从所述每个计算集群对应的最后一级缓存中获取对应的权值数据块进行计算。
可选的,所述将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据,包括:
响应于所述计算集群的缓存的内存空间小于所述全部权值数据的数据量,将所述每个计算集群读取的所述对应的权值数据块发送给其它计算集群,并接收其它计算集群发送的所述其它计算集群对应的权值数据块;
将所述每个计算集群的缓存中存储的权值数据块更新为所述其它计算集群对应的权值数据块,并继续向其它计算集群发送,直至所述每个计算集群迭代接收到所述全部权值数据。
可选的,所述将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据,包括:
响应于所述计算集群的缓存的内存空间大于或等于所述全部权值数据的数据量,将所述每个计算集群读取的对应的权值数据块逐一发送给其他计算集群,直至所述每个计算集群迭代接收到所述全部权值数据。
可选的,所述全部权值数据为所述神经网络计算模型任一层的第一权值数据,或者,为所述神经网络计算模型全部层的第二权值数据,或者,为所述神经网络计算模型部分层的第三权值数据。
可选的,在对于每个计算集群,读取对应的权值数据块之前,还包括:
根据所述计算集群的数量,对所述全部权值数据进行分块处理,得到至少两个权值数据块;
确定每个所述计算集群对应的权值数据块。
可选的,所述全部权值数据按照所述计算集群的数量平均存储在所述双倍速率同步动态随机存储器中,或者,所述每个计算集群的所述双倍速率同步动态随机存储器中都存储所述全部权值数据。
第三方面,本发明实施例提供了一种计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存
储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。
第五方面,本发明实施例提供了一种板卡,所述板卡上包括所述第一方面的众核芯片。
第六方面,本发明实施例提供了一种服务器,所述服务器上包括所述第五方面的板卡。
本发明实施例中的众核芯片,包括:至少两个计算集群,其中,所述至少两个计算集群之间具有数据通路;所述计算集群包括存储器和缓存,其中,所述存储器用于存储权值数据块;所述缓存用于存储从所述存储器中读取的所述计算集群对应的权值数据块,以及存储通过所述数据通路与其它计算集群的缓存交互的权值数据块;所述计算集群还包括处理核,所述处理核用于获取所述缓存中存储的权值数据块,以及进行神经网络计算模型的计算。在上述众核芯片的基础上进行数据获取,可以在获取神经网络计算模型的权值数据时减少加载数据的开销,进而减少网络计算时延。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是现有技术中一种众核芯片示意图;
图2是现有技术中获取权值数据的示意图;
图3是本发明实施例中一种众核芯片示意图;
图4是本发明实施例中一种获取权值数据的示意图;
图5是本发明实施例中一种众核芯片的数据获取方法流程图;
图6是本发明实施例中另一种众核芯片的数据获取方法流程图;
图7是本发明实施例中一种众核芯片示意图;
图8是本发明实施例中权值数据划分示意图;
图9是本发明实施例中一种获取权值数据的示意图;
图10是本发明实施例中又一种获取权值数据的示意图;
图11是本发明实施例中再一种获取权值数据的示意图;
图12是本发明实施例中一种众核芯片示意图;
图13是本发明实施例中权值数据划分示意图;
图14是本发明实施例中一种获取权值数据的示意图;
图15是本发明实施例中又一种获取权值数据的示意图;
图16是本发明实施例中再一种获取权值数据的示意图。
具体实施方式
以下基于实施例对本发明公开进行描述,但是本发明公开并不仅仅限于这些实施例。在下文对本发明公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明公开。为了避免混淆本发明公开的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个申请文件中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
现有技术中,在众核芯片中,存在多个簇(Cluster),每个簇是由多个处理核组成的计算集群,多个簇可以并行计算,所述众核芯片在板卡上呈现,所述板卡可以为人工智能(Artificial Intelligence,AI)计算板卡,具体如图1所示,所述众核芯片包括4个簇,分别为簇Cluster0、Cluster1、Cluster2和Cluster3,对于每个簇,具有对应的双倍速率同步动态随机存储器(Double Data Rate,DDR)、最后一级缓存(Last level Buffer,LLB)以及多个处理核,所述处理核还可以称为计算核心。
当所述多个簇并行计算时,每个簇需要使用相同的神经网络计算模型的权值数据处理不同图片输入,储存在双倍速率同步动态随机存储器DDR上的神经网络计算模型的权值数据需要被不同的簇重复读取,具体如图2所示,以两个簇为例,分别为Cluster0和Cluster1,Cluster0和Cluster1都包括DDR、LLB,在现有技术中,Cluster0和Cluster1的LLB需要分别从DDR中读取神经网络计算模型的全部的权值数据进行计算。具体以Cluster0为例进行详细说明,所述DDR中包括权值数据块W-A和权值数据块W-B,所述LLB通过直接存储器访问(Direct Memory Access,DMA)从所述DDR中获取权值数据块W-A和权值数据块W-B,当前所述权值数据块W-B通过广播机制pld被计算核心获取并存入L1-W,然后通过矩阵乘计算mme对L1-W中的权值数据块W-B进行处理;所述计算核心处理完所述权值数据块W-B后,再继续处理所述权值数据块W-A。所述Cluster1的处理过程与所述Cluster0相同,所述DDR上的权值数据块W-A和权值数据块W-B需要被Cluster0和Cluster1重复读取,当神经网络计算模型的全部的权值数据较大的情况下,由于DDR内存带宽的限制,会影响网络计算时延,以及如果簇较多,也会增加数据加载开销。
综上所述,如何在获取神经网络计算模型的权值数据时减少加载数据的开销,减少网络计算时延,是目前需要解决的问题。
本发明实施例中,为了解决上述问题,提出了一种众核芯片,具体如图3所示,图3是本发明实施例的一种众核芯片示意图,具体包括:
至少两个计算集群,其中,所述至少两个计算集群之间具有数据通路;所述计算集群包括存储器和缓存,其中,所述存储器用于存储权值数据块;所述缓存用于存储从所述存储器中读取的所述计算集群对应的权值数据块,以及存储通过所述数据通路与其它计算集群的缓存交互的权值数据块;所述计算集群还包括处理核,所述处理核用于获取所述缓存中存储的权值数据块,以及进行神经网络计算模型的计算。
本发明实施例中,所述计算集群还可以称为簇Cluster,所述处理核还可以称为计算核心。
在一种可能的实现方式中,所述计算集群还包括直接存储器访问,所述直接存储器访问用于从所述存储器读取所述计算集群对应的权值数据块至所述缓存;所述存储器为双倍速率同步动态随机存储器DDR,所述缓存为最后一级缓存LLB。
假设,图3中包括的两个计算集群分别为Cluster0和Cluster1,DDR中包括多个权值数据块,分别为权值数据块W-A0,W-A1,W-B0,W-B1,Cluster0的LLB通过DMA从DDR中读取对应的权值数据块W-A0,Cluster1的LLB通过DMA从DDR中读取对应的权值数据块W-A1。
在一种可能的实现方式中,所述Cluster0和Cluster1的LLB用于存储通过所述数据通路与其它计算集群的缓存交互的权值数据块。如图4所示,在上述图3的基础上,当所述Cluster0通过DMA从DDR中获取到其对应的W-A0,所述Cluster1通过DMA从DDR中获取到其对应的W-A1后,Cluster0的LLB通过数据通路(即图4中的LLB2LLB)将W-A0发送至Cluster1的LLB;Cluster1的LLB通过数据通路(即图4中的LLB2LLB)将W-A1发送至Cluster0的LLB。进一步,Cluster0或者Cluster1的LLB中的权值数据块通过广播机制pld被计算核心获取并存入L1-W,然后通过矩阵乘计算mme对L1-W中的权值数据块进行处理,其中,L1-W为比LLB更高一级的片上存储。
在一种可能的实现方式中,所述众核芯片还包括控制模块,所述控制模块用于根据所述计算集群的数量,对全部权值数据进行分块处理,得到至少两个权值数据块;以及,确定每个所述计算集群对应的权值数据块。
举例说明,如上图3所示,假设两个簇读取的是神经网络计算模型的A层对应的权值数据,则通过所述控制模板将所述A层对应的权值数据分为两部分,分别为W-A0权值数据块和W-A1权值数据块;两个簇通过LLB进行数据交互后,每个簇都可以获得全部A层对应的权值数据,所述A层对应的权值数据可以称为全部权值数据。
本发明实施例中,具有两个计算集群,由于每个计算集群只从其对应的DDR中读取了相比于现有技术中神经网络计算模型所需要的一半的权值数据,相应的经过DDR的时间减少了一半,而众核芯片内数据交互通道的互联带宽较DDR带宽高,因此,不仅减少了对DDR带宽的要求,总体相比于现有技术的方案可以获得更低的时延与更高的吞吐量。
在一种可能的实现方式中,所述全部权值数据为所述神经网络计算模型任一层的第一权值数据,或者,为所述神经网络计算模型全部层的第二权值数据,或者,为所述神经网络计算模型部分层的第三权值数据。
举例说明,假设所述神经网络计算模型一共包括4层权值数据,分别为A层、B层、C层和D层,所述全部权值数据为所述神经网络计算模型A层、B层、C层或D层中任一层的权值数据,或者,所述全部权值数据为所述神经网络计算模型A层、B层、C层和D层的全部层的权值数据,或者,所述全部权值数据为所述神经网络计算模型部分层的权值数据,例如,所述部分层可以为A层和B层,或者,B层和C层,或者,C层和D层,或者,A层、B层和C层等,本发明实施例对其不做限定。
在一种可能的实现方式中,所述存储器用于存储所述全部权值数据;或者,所述存储器用于存储所述计算集群对应的权值数据块。
例如,每个簇对应的DDR可以存储所述神经网络计算模型需要的全部权值数据,也可以只存储每个簇自身对应的权值数据块,本发明实施例对其不做限定。
本发明实施例中,在上述众核芯片的基础上,提出了一种众核芯片的数据获取方法,具体如图5所示,所述方法适用于包括至少两个计算集群的众核芯片,所述计算集群用于进行神经网络计算模型的计算,该方法,具体包括:
步骤S500、对于每个计算集群,读取对应的权值数据块,其中,每个计算集群对应的权值数据块不同。
具体的,对于每个计算集群,在所述每个计算集群对应的双倍速率同步动态随机存储器中读取对应的权值数据块。
在一种可能的实现方式中,在所述每个计算集群对应的双倍速率同步动态随机存储器中读取对应的权值数据块,具体包括:
通过直接存储器访问在所述每个计算集群对应的双倍速率同步动态随机存储器中,获取所述每个计算集群对应的权值数据块。
步骤S501、将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据。
具体的,所述将所述每个计算集群对应的权值数据块进行数据交互,具体包括:将所述至少两个计算集群对应的权值数据块通过所述众核芯片内的数据通路进行数据交互。
在一种可能的实现方式中,该方法还包括如下步骤,具体如图6所示,具体包括:
步骤S502、所述每个计算集群中的处理核从所述每个计算集群对应的最后一级缓存中获取对应的权值数据块进行计算。
在一种可能的实现方式中,将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据时,由于计算集群的缓存的内存空间可以小于所述全部权值数据的数据量,也可以大于或等于所述全部权值数据的数据量,分别对应以下两个具体实施例。
具体实施例一
响应于所述计算集群的缓存的内存空间小于所述全部权值数据的数据量,将所述每个计算集群读取的所述对应的权值数据块发送给其它计算集群,并接收其它计算集群发送的所述其它计算集群对应的权值数据块;将所述每个计算集群的缓存中存储的权值数据块更新为所述其它计算集群对应的权值数据块,并继续向其它计算集群发送,直至所述每个计算集群迭代接收到所述全部权值数据。
具体的,多个Cluster通过多次数据交互使得每个Cluster获取神经网络计算模型的全部权值数据,在每次数据交互过程中,依次(例如根据Cluster的编号顺序)每个Cluster将获取的数据发送给下一个Cluster。
举例说明,本发明实施例的众核芯片包括的四个计算集群分别为Cluster0、Cluster1、Cluster2和Cluster3,每个Cluster的DDR中包括多个权值数据块,分别为权值数据块W-A0、W-A1、W-A2、W-A3、W-B0、W-C1、W-D0以及W-D1。
如图7所示,步骤0:Cluster0的LLB通过DMA从DDR中读取对应的权值数据块W-A0,并存储到其LLB中的W-Ping位置;Cluster1的LLB通过DMA从DDR中读取对应的权值数据块W-A1,并存储到其LLB中的W-Ping位置;Cluster2的LLB通过DMA从DDR中读取对应的权值数据块W-A2,并存储到其LLB中的W-Ping位置;Cluster3的LLB通过DMA从DDR中读取对应的权值数据块W-A3,并存储到其LLB中的W-Ping位置。以及,所述Cluster0或者Cluster1、Cluster2、Cluster3分别在所述权值数据块W-A0、W-A1、W-A2、W-A3之前,可获取到的其他权重数据块存储到其LLB的W-Pong位置,当前存储在所述W-Pong位置的权值数据块可通过广播机制pld被处理核获取并存入Cluster的L1-W,通过矩阵乘计算mme对获取到的权值数据进行处理。
本发明实施例中,如图7所示,四个计算集群中的每个计算集群分别获取神经网络计算模型中A层的1/4,具体的,如图8所示,A层的权值数据拆分为的4部分,分别为数据00、数据01、数据02、数据03,该4部分数据的大小可以相同也可以不同。具体的,所述数据00、01、02、03分别与所述图7中的权值数据块W-A0、W-A1、W-A2、W-A3对应。
如图9所示,步骤1:Cluster0将读取的权值数据块W-A0发送给Cluster1,可写入Cluster1的LLB中的W-Pong位置;Cluster1将读取的权值数据块W-A1发送给Cluster2,可写入Cluster2的LLB中的W-Pong位置;Cluster2将读取的权值数据块W-A2发送给Cluster3,可写入Cluster3的LLB中的W-Pong位置;Cluster3将读取的权值数据块W-A3发送给Cluster0,可写入Cluster0的LLB中的W-Pong位置。
此时,Cluster0的LLB中包括权值数据块W-A0和权值数据块W-A3,Cluster0的处理核可通过pld从W-ping位置读取权值数据块W-A0进行计算后,可通过pld从W-pong位置读取权值数据块W-A3进行计算;同样,Cluster1的LLB中包括权值数据块W-A1和权值数据块W-A0,Cluster2的LLB中包括权值数据块W-A2和权值数据块W-A1,Cluster3的LLB中包括权值数据块W-A3和权值数据块W-A2。以及,各个Cluster的处理核可通过pld从W-ping位置读取权值数据块进行计算,可通过pld从W-pong位置读取权值数据块进行计算。
如图10所示,步骤2:Cluster0将获取的权值数据块W-A3发送给Cluster1,可写入Cluster1的LLB中的W-Ping位置;Cluster1将获取的权值数据块W-A0发送给Cluster2,可写入Cluster2的LLB中的W-Ping位置;Cluster2将获取的权值数据块W-A1发送给Cluster3,可写入Cluster3的LLB中的W-Ping位置;Cluster3将获取的权值数据块W-A2发送给Cluster0,可写入Cluster0的LLB中的W-Ping位置。
此时,Cluster0的LLB中包括权值数据块W-A2和权值数据块W-A3,W-ping位置为权值数据块W-A2,W-pong位置为权值数据块W-A3,Cluster0的处理核可通过pld从W-pong位置读取权值数据块W-A3进行计算后,可通过pld从W-ping位置读取权值数据块W-A2进行计算;同样,Cluster1的LLB中包括权值数据块W-A3和权值数据块W-A0,W-ping位置为权值数据块W-A3,W-pong位置为权值数据块W-A0;Cluster2的LLB中包括权值数据块W-A0和权值数据块W-A1,W-ping位置为权值数据块W-A0,W-pong位置为权值数据块W-A1;Cluster3的LLB中包括权值数据块W-A1和权值数据块W-A2,W-ping位置为权值数据块W-A1,W-pong位置为权值数据块W-A2。各个Cluster的处理核可通过pld从W-pong位置读取权值数据块进行计算后,可通过pld从W-ping位置读取权值数据块进行计算。
如图11所示,步骤3:Cluster0将获取的权值数据块W-A2发送给Cluster1,可写入Cluster1的LLB中的W-Pong位置;Cluster1将获取的权值数据块W-A3发送给Cluster2,可写入Cluster2的LLB中的W-Pong位置;Cluster2将获取的权值数据块W-A0发送给Cluster3,可写入Cluster3的LLB中的W-Pong位置;Cluster3将获取的权值数据块W-A1发送给Cluster0,可写入Cluster0的LLB中的W-Pong位置。
此时,Cluster0的LLB中包括权值数据块W-A2和权值数据块W-A1,W-ping位置为权值数据块W-A2,W-pong位置为权值数据块W-A1,Cluster0的处理核可通过pld从W-ping位置读取权值数据块W-A2进行计算后,可通过pld从W-pong位置读取权值数据块W-A1进行计算;同样,Cluster1的LLB中包括权值数据块W-A3和权值数据块W-A2,W-ping位置为权值数据块W-A3,W-pong位置为权值数据块W-A2;Cluster2的LLB中包括权值数据块W-A0和权值数据块W-A3,W-ping位置为权值数据块W-A0,W-pong位置为权值数据块W-A3;Cluster3的LLB中包括权值数据块W-A1和权值数据块W-A0,W-ping位置为权值数据块W-A1,W-pong位置为权值数据块W-A0。各个Cluster的处理核可通过pld从W-ping位置读取权值数据块进行计算后,可通过pld从W-pong位置读取权值数据块进行计算。
本发明实施例中,上述四个计算集群Cluster0、Cluster1、Cluster2和Cluster3都获得了权值数据块W-A0、权值数据块W-A1、权值数据块W-A2和权值数据块W-A3,即获得了神经网络计算模型A层的全部权值数据。
具体实施例二
响应于所述计算集群的缓存的内存空间大于或等于所述全部权值数据的数据量,将所述每个计算集群读取的对应的权值数据块逐一发送给其他计算集群,直至所述每个计算集群迭代接收到所述全部权值数据。
具体的,多个Cluster通过多次数据交互使得每个Cluster获取神经网络计算模型的全部权值数据,在多次数据交互过程中,每个Cluster将获取的数据分别发送给不同的Cluster。
举例说明,本发明实施例的众核芯片包括的四个计算集群分别为Cluster0、Cluster1、Cluster2和Cluster3,每个Cluster的DDR中包括多个权值数据块,分别为权值数据块W-A0、W-A1、W-B0、W-B1、W-C0、W-C1、W-D0以及W-D1。
如图12所示,步骤0:Cluster0的LLB通过DMA从DDR中读取对应的权值数据块W-A0,并存储到其LLB中;Cluster1的LLB通过DMA从DDR中读取对应的权值数据块W-A1,并存储到其LLB中;Cluster2的LLB通过DMA从DDR中读取对应的权值数据块W-A2,并存储到其LLB中;Cluster3的LLB通过DMA从DDR中读取对应的权值数据块W-A3,并存储到其LLB中。
本发明实施例中,四个计算集群中的每个计算集群分别获取神经网络计算模型中A层、B层和C层共同的1/4,如图13所示,将A层、B层和C层的权值数据拆分为4部分,分别为数据05、数据06、数据07、数据08,该4部分数据的大小可以相同也可以不同。具体的,所述数据05、06、07、08分别与所述图12中的权值数据块W-A0、W-A1、W-B0、W-B1对应。
可选的,本发明实施例中,所述Cluster的LLB内存较大,假设所述权值数据块W-A0的大小为1MB,所述Cluster的LLB可以为8MB,此处仅仅为示例性说明,具体的大小不做限定。因此,Cluster之间通过数据通路交互权值数据块时,可将交互的多个权值数据块同时存储在LLB上,例如Cluster0在接收到Cluster3和Cluster2共享的权值数据块之后,可不用数据覆盖。
如图14所示,步骤1:所述Cluster0将读取的权值数据块W-A0发送给Cluster1;所述Cluster1将读取的权值数据块W-A1发送给Cluster2;所述Cluster2将读取的权值数据块W-B0发送给Cluster3;所述Cluster3将读取的权值数据块W-B1发送给Cluster0。在上述处理完成后,每个Cluster的LLB中存储有两份权值数据块,Cluster之间可继续共享权值数据。
如图15所示,步骤2:所述Cluster0将读取的权值数据块W-A0发送给Cluster2;所述Cluster1将读取的权值数据块W-A1发送给Cluster3;所述Cluster2将读取的权值数据块W-B0发送给Cluster0;所述Cluster3将读取的权值数据块W-B1发送给Cluster1。在上述处理完成后,每个Cluster的LLB中存储有三份权值数据块,Cluster之间可继续共享权值数据。
如图16所示,步骤3:所述Cluster0将读取的权值数据块W-A0发送给Cluster3;所述Cluster1将读取的权值数据块W-A1发送给Cluster0;所述Cluster2将读取的权值数据块W-B0发送给Cluster1;所述Cluster3将读取的权值数据块W-B1发送给Cluster2。
本发明实施例中,上述四个计算集群Cluster0、Cluster1、Cluster2和Cluster3都获得了权值数据块W-A0、权值数据块W-A1、权值数据块W-B0和权值数据块W-B1,即获得了神经网络计算模型A层、B层和C层的全部权值数据,并且,每个Cluster只从其对应的DDR中读取了相比于现有技术1/4的数据,相应的经过DDR的数据量减少了3/4,而众核芯片内数据交互通道的互联带宽较DDR带宽高,因此,相比于现有技术的方案,可以获得更低的时延与更高的吞吐量。
在一种可能的实现方式中,所述权重数据还可以等分为2份、4份以外的其他数量,本发明实施例对其不做限定。
在一种可能的实现方式中,在对于每个计算集群,读取对应的权值数据块之前,还包括:
根据所述计算集群的数量,对所述全部权值数据进行分块处理,得到至少两个权值数据块;确定每个所述计算集群对应的权值数据块。
在一种可能的实现方式中,所述全部权值数据按照所述计算集群的数量平均存储在所述双倍速率同步动态随机存储器中,或者,所述每个计算集群的所述双倍速率同步动态随机存储器中都存储所述全部权值数据。
本发明实施例中,还提供了一计算机程序指令,所述计算机程序指令在被处理器执行时实现上述实施例中任一项所述的方法。
本发明实施例中,还提供了一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现上述实施例中任一项所述的方法。
本发明实施例提供了一种板卡,所述板卡上包括所述众核芯片。
本发明实施例提供了一种服务器,所述服务器上包括所述板卡。
如本领域技术人员将意识到的,本发明实施例的各个方面可以被实现为***、方法或计算机程序产品。因此,本发明实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“***”的将软件方面与硬件方面相结合的实施方式。此外,本发明实施例的各个方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体***、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本发明实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行***、设备或装置使用的程序或结合指令执行***、设备或装置使用的程序的任意有形介质。
计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行***、设备或装置使用的或结合指令执行***、设备或装置使用的程序进行通信、传播或传输。
可以使用包括但不限于无线、有线、光纤电缆、RF等或前述的任意适当组合的任意合适的介质来传送实现在计算机可读介质上的程序代码。
用于执行针对本发明实施例各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
上述根据本发明实施例的方法、设备(***)和计算机程序产品的流程图图例和/或框图描述了本发明实施例的各个方面。将要理解的是,流程图图例和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
还可以将这些计算机程序指令存储在可以指导计算机、其它可编程数据处理设备或其它装置以特定方式运行的计算机可读介质中,使得在计算机可读介质中存储的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载至计算机、其它可编程数据处理设备或其它装置上,以使在计算机、其它可编程设备或其它装置上执行一系列可操作步骤来产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的过程。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种众核芯片,其特征在于,包括:至少两个计算集群,其中,所述至少两个计算集群之间具有数据通路;
所述计算集群包括存储器和缓存,其中,所述存储器用于存储权值数据块;所述缓存用于存储从所述存储器中读取的所述计算集群对应的权值数据块,以及存储通过所述数据通路与其它计算集群的缓存交互的权值数据块;
所述计算集群还包括处理核,所述处理核用于获取所述缓存中存储的权值数据块,以及进行神经网络计算模型的计算。
2.如权利要求1所述的众核芯片,其特征在于,所述计算集群还包括直接存储器访问,所述直接存储器访问用于从所述存储器读取所述计算集群对应的权值数据块至所述缓存。
3.如权利要求1-2任一项所述的众核芯片,其特征在于,所述众核芯片还包括控制模块,所述控制模块用于根据所述计算集群的数量,对全部权值数据进行分块处理,得到至少两个权值数据块;以及,确定每个所述计算集群对应的权值数据块。
4.如权利要求3所述的众核芯片,其特征在于,所述存储器用于存储所述全部权值数据;或者
所述存储器用于存储所述计算集群对应的权值数据块。
5.如权利要求1-4任一项所述的众核芯片,其特征在于,所述存储器为双倍速率同步动态随机存储器,所述缓存为最后一级缓存。
6.一种众核芯片的数据获取方法,其特征在于,所述方法适用于包括至少两个计算集群的众核芯片,所述计算集群用于进行神经网络计算模型的计算,该方法包括:
对于每个计算集群,读取对应的权值数据块,其中,每个计算集群对应的权值数据块不同;
将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据。
7.如权利要求6所述的方法,其特征在于,所述将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据,包括:
响应于所述计算集群的缓存的内存空间小于所述全部权值数据的数据量,将所述每个计算集群读取的所述对应的权值数据块发送给其它计算集群,并接收其它计算集群发送的所述其它计算集群对应的权值数据块;
将所述每个计算集群的缓存中存储的权值数据块更新为所述其它计算集群对应的权值数据块,并继续向其它计算集群发送,直至所述每个计算集群迭代接收到所述全部权值数据。
8.如权利要求6-7任一项所述的方法,其特征在于,所述将所述每个计算集群对应的权值数据块进行数据交互,使得所述至少两个计算集群获取到全部权值数据,包括:
响应于所述计算集群的缓存的内存空间大于或等于所述全部权值数据的数据量,将所述每个计算集群读取的对应的权值数据块逐一发送给其他计算集群,直至所述每个计算集群迭代接收到所述全部权值数据。
9.如权利要求6-8任一项所述的方法,其特征在于,所述全部权值数据为所述神经网络计算模型任一层的第一权值数据,或者,为所述神经网络计算模型全部层的第二权值数据,或者,为所述神经网络计算模型部分层的第三权值数据。
10.如权利要求6-9任一项所述的方法,其特征在于,在对于每个计算集群,读取对应的权值数据块之前,还包括:
根据所述计算集群的数量,对所述全部权值数据进行分块处理,得到至少两个权值数据块;
确定每个所述计算集群对应的权值数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211228758.1A CN117931721A (zh) | 2022-10-09 | 2022-10-09 | 一种众核芯片以及众核芯片的数据获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211228758.1A CN117931721A (zh) | 2022-10-09 | 2022-10-09 | 一种众核芯片以及众核芯片的数据获取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117931721A true CN117931721A (zh) | 2024-04-26 |
Family
ID=90765234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211228758.1A Pending CN117931721A (zh) | 2022-10-09 | 2022-10-09 | 一种众核芯片以及众核芯片的数据获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931721A (zh) |
-
2022
- 2022-10-09 CN CN202211228758.1A patent/CN117931721A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
CN105843775B (zh) | 片上数据划分读写方法、***及其装置 | |
US8332367B2 (en) | Parallel data redundancy removal | |
US20190188239A1 (en) | Dual phase matrix-vector multiplication system | |
CN111930713B (zh) | Ceph放置组的分配方法、装置、服务器及存储介质 | |
CN105700956A (zh) | 用于处理分布式作业的方法和*** | |
EP4209914A1 (en) | Reconfigurable cache architecture and methods for cache coherency | |
US9058301B2 (en) | Efficient transfer of matrices for matrix based operations | |
CN115203210A (zh) | 哈希表处理方法、装置、设备及计算机可读存储介质 | |
CN105874431A (zh) | 减少数据交换负载的计算***以及相关的数据交换方法 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN111813721B (zh) | 神经网络数据处理方法、装置、设备及存储介质 | |
CN116069393A (zh) | 一种数据处理方法以及相关装置 | |
CN116382599B (zh) | 一种面向分布式集群的任务执行方法、装置、介质及设备 | |
EP3743821A1 (en) | Wide key hash table for a graphics processing unit | |
US9947073B2 (en) | Memory-aware matrix factorization | |
US11467973B1 (en) | Fine-grained access memory controller | |
CN117931721A (zh) | 一种众核芯片以及众核芯片的数据获取方法 | |
CN117149398A (zh) | 一种内存分配的方法和装置 | |
EP3779706B1 (en) | Method, apparatus, device and computer-readable storage medium for storage management | |
US11068458B2 (en) | Mechanism for distributed-system-aware difference encoding/decoding in graph analytics | |
CN113626650A (zh) | 业务处理方法、装置和电子设备 | |
CN115237605B (zh) | Cpu与gpu间的数据传输方法及计算机设备 | |
CN112862085B (zh) | 存储空间优化方法及装置 | |
WO2015004570A1 (en) | Method and system for implementing a dynamic array data structure in a cache line |
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 |