用于矩阵处理的芯片、矩阵处理方法、装置及存储介质制造方法及图纸

技术编号:21913882 阅读:28 留言:0更新日期:2019-08-21 12:24
本发明专利技术公开了一种用于矩阵处理的芯片、矩阵处理方法、装置及存储介质,属于计算机技术领域。所述方法包括:读取乘数矩阵,并将乘数矩阵存储到每个PE群组的每个PE中;读取被乘数矩阵,并将被乘数矩阵的不同行向量分别存储到不同PE群组的每个PE内;在同一PE群组内,将被乘数矩阵的行向量与乘数矩阵的不同列向量相乘,得到PE群组内的相乘结果;根据不同PE群组内的相乘结果,确定被乘数矩阵与乘数矩阵的结果矩阵。本发明专利技术通过在PE群组间复用乘数矩阵,在PE群组内复用被乘数矩阵的行向量,从而在处理较大规模的矩阵乘法任务时,能够调用更多的资源,提高了计算效率,缩短了计算时间。

Chips, Matrix Processing Methods, Devices and Storage Media for Matrix Processing

【技术实现步骤摘要】
用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
本专利技术涉及计算机
,特别涉及一种用于矩阵处理的芯片、矩阵处理方法、装置及存储介质。
技术介绍
在计算机
,矩阵乘法作为数据处理中典型的算法,被广泛应用于深度学习的各种网络中,包括LSTM(LongShort-TermMemory,长短期记忆)、RNN(RecurrentNeuralNetwork,循环神经网络)等。对于规模较大的矩阵相乘任务,由于涉及到大量的乘法和加法运算,需要占用大量的计算时间。因此,如何对深度学习中的矩阵进行处理,以对矩阵计算进行加速,成为本领域技术人员较为关注的问题。对于被乘数矩阵(记为矩阵A)与乘数矩阵B(记为矩阵B),相关技术主要采用如下方法进行处理:(1)、读取矩阵A和矩阵B,并获取矩阵B对应的转置矩阵BT,通过DMA(DirectMemoryAccess,直接内存存取)控制器将矩阵A和转置矩阵BT按行存储到相应的向量存储单元中。(2)、将矩阵A的一行元素和转置矩阵BT的一行元素加载到处理单元中并一一对应相乘,将相乘结果在指定的并行处理单元中归约求和,并将求和结果作为结果矩阵的一个元素存储到向量存储单元中。(3)、顺移到转置矩阵BT的下一行,重复步骤(2)、(3),直至完成矩阵A的一行和转置矩阵BT所有行的计算,计算得到结果矩阵C的一行元素。(4)、顺移到矩阵A的下一行,重复步骤(2)、(3)、(4),直至完成矩阵A所有行的计算,得到结果矩阵C的所有行元素。然而,由于每次只能加载矩阵一行元素,调用资源较少,因而在实现较大规模的矩阵相乘时,计算效率较低、计算时间较长
技术实现思路
为了解决相关技术的问题,本专利技术实施例提供了一种用于矩阵处理的芯片、矩阵处理方法、装置及存储介质。所述技术方案如下:一方面,提供了一种用于矩阵处理的芯片,所述芯片包括:数据通道、控制通道、PE(ProcessingElement,处理元件)接口、PE群组阵列;所述数据通道用于读取待计算的被乘数矩阵和乘数矩阵;所述控制通道用于对所述PE群组阵列的计算进行控制;所述PE接口用于从所述数据通道中读取被乘数矩阵和乘数矩阵;所述PE群组阵列包括多个PE群组,多个PE群组间复用同一乘数矩阵,每个PE群组内复用被乘数矩阵的不同行向量,所述PE群组阵列用于实现被乘数矩阵与乘数矩阵之间的乘法计算。另一方面,提供了一种矩阵处理方法,其特征在于,所述矩阵处理方法应用于一方面所述的用于矩阵处理的芯片,所述方法包括:读取乘数矩阵,并将所述乘数矩阵存储到每个PE群组的每个PE中;读取被乘数矩阵,并将所述被乘数矩阵的不同行向量分别存储到不同PE群组的每个PE内;在同一PE群组内,将所述被乘数矩阵的行向量与所述乘数矩阵的不同列向量相乘,得到所述PE群组内的相乘结果;根据不同PE群组内的相乘结果进行累加,确定所述被乘数矩阵与所述乘数矩阵的结果矩阵。另一方面,提供一种矩阵处理装置,所述矩阵处理装置设置于一方面所述的用于矩阵处理的芯片中,所述装置包括:读取模块,用于读取乘数矩阵;存储模块,用于将所述乘数矩阵存储到每个PE群组的每个PE中;所述读取模块,用于读取被乘数矩阵;所述存储模块,用于将所述被乘数矩阵的不同行向量分别存储到不同PE群组的每个PE内;相乘模块,用于在同一PE群组内,将所述被乘数矩阵的行向量与所述乘数矩阵的不同列向量相乘,得到所述PE群组内的相乘结果;确定模块,用于根据不同PE群组内的相乘结果,确定所述被乘数矩阵与所述乘数矩阵的结果矩阵。另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现矩阵处理方法。另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现矩阵处理方法。本专利技术实施例提供的技术方案带来的有益效果是:通过在PE群组间复用乘数矩阵,在PE群组内复用被乘数矩阵的行向量,从而在处理较大规模的矩阵乘法任务时,能够调用更多的资源,提高了计算效率,缩短了计算时间。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种用于矩阵处理的芯片的架构图;图2是本专利技术实施例提供的一种PE群组的架构图;图3是本专利技术实施例提供的一种PE的结构图;图4是本专利技术实施例提供的UltraScale系列FPGAMACTile底层结构;图5是本专利技术实施例提供的一种矩阵处理方法的流程图;图6是本专利技术实施例提供的一种被乘数矩阵读取过程的示意图;图7是本专利技术实施例提供的一种矩阵A与矩阵B相乘过程的示意图;图8是本专利技术实施例提供的矩阵处理装置的结构示意图;图9示出了本专利技术一个示例性实施例提供的矩阵处理终端900的结构框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。采用传统的CPU(CentralProcessingUnit,中央处理器)处理矩阵相乘任务时,常伴随着计算周期长、延迟大等缺点,限制了处理器的响应速度。相对于传统的CPU,GPU(GraphicsProcessingUnit,图形处理器)采用多层架构结合多级缓存的设计架构,数千个计算核同时计算,可实现高性能的矩阵运算,然而,由于GPU的计算核与计算核之间的计算顺序以及存储器访问顺序,主要依赖于计算核各自的执行情况,其计算具有不确定性,因此,在计算过程中经常存在带宽竞争,不仅会造成较高的计算延迟,而且计算成本也较高。为了解决传统的CPU及GPU在计算过程中存在的问题,本专利技术实施例提供了一种用于矩阵处理的芯片,该芯片可以用于FPGA(Field-ProgrammableGateArray,现场可编程门阵列)和芯片的矩阵处理计算框架。该芯片通过PE群组-PE-MAC的三级调度,同时调用大量的计算核并行计算,并在群组内及群组间实现数据复用,从而能够高效的大规模矩阵进行处理。本专利技术实施例提供的用于矩阵处理的芯片架构在设计时,需要考虑以下几方面问题,并提供相应的解决方法:第一、加载数据复用率问题。为了提升加载数据复用率,本专利技术实施例将计算任务合理地进行分配,使被乘数矩阵和乘数矩阵均能实现一定的数据复用率,从而减少数据的片外加载次数。第二、计算中的数据复用率问题。本专利技术实施例复用计算中的数据,从而降低计算过程对RAM(RandomAccessMemory,随机存取存储器)的依赖。第三、矩阵转置问题。为了提高带宽利用率,高效读取乘数矩阵,本专利技术实施例取代低效的矩阵转置操作,采用高带宽数据分发方式,按行读取乘数矩阵,按列分发至各个PE。第四、布线压力问题。考虑到芯片架构中部署了大量的MAC(MultiplyAndAccumulator,乘累加器),每个MAC的计算数据都来自DDR(本文档来自技高网
...

【技术保护点】
1.一种用于矩阵处理的芯片,其特征在于,所述芯片包括:数据通道、控制通道、处理元件PE接口、PE群组阵列;所述数据通道用于读取待计算的被乘数矩阵和乘数矩阵;所述控制通道用于对所述PE群组阵列的计算进行控制;所述PE接口用于从所述数据通道中读取被乘数矩阵和乘数矩阵;所述PE群组阵列包括多个PE群组,多个PE群组间复用同一乘数矩阵,每个PE群组内复用被乘数矩阵的不同行向量,所述PE群组阵列用于实现被乘数矩阵与乘数矩阵之间的乘法计算。

【技术特征摘要】
1.一种用于矩阵处理的芯片,其特征在于,所述芯片包括:数据通道、控制通道、处理元件PE接口、PE群组阵列;所述数据通道用于读取待计算的被乘数矩阵和乘数矩阵;所述控制通道用于对所述PE群组阵列的计算进行控制;所述PE接口用于从所述数据通道中读取被乘数矩阵和乘数矩阵;所述PE群组阵列包括多个PE群组,多个PE群组间复用同一乘数矩阵,每个PE群组内复用被乘数矩阵的不同行向量,所述PE群组阵列用于实现被乘数矩阵与乘数矩阵之间的乘法计算。2.根据权利要求1所述的芯片,其特征在于,所述数据通道采用多存储器位宽扩展方式,按行读取所述乘数矩阵,并通过所述PE接口将所读取的乘数矩阵按列分发至每个PE群组的每个PE中。3.根据权利要求1所述的芯片,其特征在于,每个PE群组包括第一控制器、多个PE、第一结果缓存器及累加器;所述第一控制器用于对PE群组内的计算进行控制;同一PE群组的每个PE内存储有被乘数矩阵的相同行向量及乘数矩阵的不同列向量,每个PE用于将被乘数矩阵的一行向量与乘数矩阵中的每列向量相乘;所述第一结果缓存器用于缓存PE群组内多个PE的计算结果;所述累加器用于对所述第一结果缓存器中多个PE的计算结果进行累加。4.根据权利要求3所述的芯片,其特征在于,每个PE包括第二控制器、多个乘累加器MAC、多个乘数矩阵存储单元、第二结果缓存器及被乘数矩阵向量存储单元;所述第二控制器用于对PE内的计算进行控制;每个MAC用于将被乘数矩阵的一行向量与乘数矩阵的一列向量相乘,多个MAC构成多组MAC,多组MAC共享一个乘数矩阵存储单元;每个乘数矩阵存储单元用于存储乘数矩阵中至少一列向量;所述第二结果缓存器用于缓存每个MAC的计算结果;所述被乘数矩阵向量存储单元包括ping地址和pong地址,所述ping地址和pong地址用于存储被乘数矩阵的至少一行向量。5.一种矩阵处理方法,其特征在于,所述矩阵处理方法应用于权利要求1至4中任一项所述的用于矩阵处理的芯片,所述方法包括:读取乘数矩阵,并将所述乘数矩阵存储到每个PE群组的每个PE中;读取被乘数矩阵,并将所述被乘数矩阵的不同行向量分别存储到不同PE群组的每个PE内;在同一PE群组内,将所述被乘数矩阵的行向量与所述乘数矩阵的不同列向量相乘,得到所述PE群组内的相乘结果;根据不同PE群组内的相乘结果,确定所述被乘数矩阵与所述乘数矩阵的结果矩阵。6.根据权利要求5所述的方法,其特征在于,所述读取乘数矩阵,并将所述乘数矩阵存储到每个PE群组的每个PE中,包括:采用多存储器位宽扩展方式,按行读取所述乘数矩阵,并将所读取的乘数矩阵按列存储到每个PE群组的每个PE中。7.根据权利要求5所述的方法,其特征在于,所述读取被乘数矩阵,并将所述被乘数矩阵的不同行向量分别存储到不同PE群组的每个PE内,包括:读取被乘数矩阵预设行数的行向量,并将所读取的...

【专利技术属性】
技术研发人员:于潇宇王玉伟章恒高剑林
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1