矩阵存储方法、矩阵访问方法、装置和电子设备制造方法及图纸

技术编号:24205066 阅读:38 留言:0更新日期:2020-05-20 14:19
本申请公开了一种矩阵存储方法、矩阵访问方法、装置和电子设备,涉及数据访存技术领域。其中存储方法包括:按照预设的N行×M列的分割粒度,将矩阵分割成多个数据块;多个数据块包括至少一个第一数据块,第一数据块为N行×M列的数据块;若矩阵的列数不为M的整数倍,则多个数据块还包括至少一个N行×P列的第二数据块,第二数据块与相邻的第一数据块行对齐;将第一数据块、第二数据块中的数据连续存储于片外存储。本申请一个实施例具有如下有益效果:能够实现将数据块完整且连续地写入片外存储,在需要访问矩阵的数据块时,可以对连续存储于片外存储的数据块进行完整的读取,提高了矩阵处理效率。

Matrix storage method, matrix access method, device and electronic device

【技术实现步骤摘要】
矩阵存储方法、矩阵访问方法、装置和电子设备
本申请涉及数据处理技术,尤其涉及数据访存
,具体涉及一种矩阵存储方法、矩阵访问方法、装置和电子设备。
技术介绍
神经网络被广泛应用于人工智能场景中,如语音识别、图像识别等,神经网络的运算过程通常涉及大量的矩阵操作。随着神经网络运算过程所需的存储空间增大,NPU(Neural-networkProcessingUnit,神经网络处理器)除了片内存储之外,通常还设置有片外存储。这样,可先将待处理的矩阵存储于片外存储中,处理时,再将存储于片外存储的矩阵按需加载至片内存储。目前,通常采用行存或列存的方式来存储矩阵,而NPU做矩阵运算时通常不会基于现有存储方式加载数据,这使得NPU的矩阵处理效率较低。
技术实现思路
本申请提供一种矩阵存储方法、矩阵访问方法、装置和电子设备,以解决NPU的矩阵处理效率较低的问题。为了解决上述技术问题,本申请是这样实现的:第一方面,本申请提供了一种矩阵存储方法,包括:按照预设的N行×M列的分割粒度,将矩阵分割成多个数据块,所述N和M中的至少一者大于1;其中,所述多个数据块包括至少一个第一数据块,所述第一数据块为N行×M列的数据块;若所述矩阵的列数不为所述M的整数倍,则所述多个数据块还包括至少一个N行×P列的第二数据块,所述第二数据块与相邻的所述第一数据块行对齐,所述P小于所述M;将每个所述第一数据块中的数据连续存储于片外存储,且将每个所述第二数据块中的数据连续存储于所述片外存储。可选的,若所述矩阵的行数不为所述N的整数倍,则所述多个数据块还包括至少一个L行×S列的第三数据块,所述L小于所述N。可选的,所述第三数据块的数量为1,所述S等于所述矩阵的列数。可选的,所述方法还包括:将每个所述第三数据块中的数据连续存储于所述片外存储。可选的,若所述片外存储包括多个存储通道,则所述分割粒度为单个存储通道的存储粒度的整数倍。第二方面,本申请提供了一种矩阵访问方法,所述矩阵为采用第一方面中任一项的矩阵存储方法存储于片外存储的矩阵,所述方法包括:接收针对所述矩阵的访问请求,所述访问请求包括所述矩阵的访问参数;若所述访问参数对应的数据块包括完整的第一数据块或完整的第二数据块,则从片外存储中读取所述数据块的数据;若所述访问参数对应的数据块包括不完整的第一数据块或不完整的第二数据块,则禁止从所述片外存储中读取所述数据块的数据。第三方面,本申请提供了一种矩阵存储装置,包括:分割模块,用于按照预设的N行×M列的分割粒度,将矩阵分割成多个数据块,所述N和M中的至少一者大于1;其中,所述多个数据块包括至少一个第一数据块,所述第一数据块为N行×M列的数据块;若所述矩阵的列数不为所述M的整数倍,则所述多个数据块还包括至少一个N行×P列的第二数据块,所述第二数据块与相邻的所述第一数据块行对齐,所述P小于所述M;第一存储模块,用于将每个所述第一数据块中的数据连续存储于片外存储,且将每个所述第二数据块中的数据连续存储于所述片外存储。可选的,若所述矩阵的行数不为所述N的整数倍,则所述多个数据块还包括至少一个L行×S列的第三数据块,所述L小于所述N。可选的,所述第三数据块的数量为1,所述S等于所述矩阵的列数。可选的,所述装置还包括:第二存储模块,用于将每个所述第三数据块中的数据连续存储于所述片外存储。可选的,若所述片外存储包括多个存储通道,则所述分割粒度为单个存储通道的存储粒度的整数倍。第四方面,本申请提供了一种矩阵访问装置,用于访问第三方面中任一项所述的矩阵存储装置存储的矩阵,所述装置包括:接收模块,用于接收针对所述矩阵的访问请求,所述访问请求包括所述矩阵的访问参数;读取模块,用于若所述访问参数对应的数据块包括完整的第一数据块或完整的第二数据块,则从片外存储中读取所述数据块的数据;控制模块,用于若所述访问参数对应的数据块包括不完整的第一数据块或不完整的第二数据块,则禁止从所述片外存储中读取所述数据块的数据。第五方面,本申请提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面中的任一项方法。第六方面,本申请提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行第一方面中的任一项方法。本申请中的各实施例所具有的优点或有益效果将在下文中结合具体实施例加以说明。附图说明附图用于更好地理解本方案,不构成对本申请的限定。其中:图1是本申请提供的一种NPU的结构框图;图2是本申请实施例一提供的矩阵存储方法的流程示意图;图3是本申请提供的矩阵分割的示意图之一;图4是本申请提供的矩阵分割的示意图之二;图5是本申请提供的矩阵分割的示意图之三;图6是本申请提供的集成有多通道片外存储的NPU的结构框图;图7是现有矩阵存储方式的示意图;图8是本申请实施例二提供的矩阵访问方法的流程示意图;图9是本申请实施例提供的矩阵访问过程的示例图;图10是本申请实施例提供的矩阵存储装置的结构示意图;图11是本申请实施例提供的矩阵访问装置的结构示意图;图12是用来实现本申请实施例的矩阵存储方法的电子设备的框图;图13是用来实现本申请实施例的矩阵访问方法的电子设备的框图。具体实施方式以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。实施例一:本申请提供一种矩阵存储方法,该方法可应用于矩阵存储装置,例如,该方法可应用于NPU的处理器。图1提供一种典型的NPU的结构框图,如图1所示,NPU通常包括控制单元、计算单元、片内存储、DMA(DirectMemoryAccess,直接存储访问)、MC(MemoryController,内存控制器)和片外存储。NPU工作时,DMA向MC发出访存请求,MC访问片外存储获取神经网络模型和待处理数据,并通过DMA将神经网络模型和待处理数据写入片内存储,之后,计算单元访问片内存储获取数据进行计算,计算结果也可写入片内存储并由DMA返回给片外存储。其中,控制单元用于控制DMA和计算单元的工作。由于片内存储的空间限制,NPU做矩阵运算时,通常采用分块的方式加载矩阵中的数据,而不会采用整行或整列的方式来加载矩阵中的数据。也就是说,上述待处理数据通常不会是矩阵中某一行本文档来自技高网...

【技术保护点】
1.一种矩阵存储方法,其特征在于,包括:/n按照预设的N行×M列的分割粒度,将矩阵分割成多个数据块,所述N和M中的至少一者大于1;其中,所述多个数据块包括至少一个第一数据块,所述第一数据块为N行×M列的数据块;若所述矩阵的列数不为所述M的整数倍,则所述多个数据块还包括至少一个N行×P列的第二数据块,所述第二数据块与相邻的所述第一数据块行对齐,所述P小于所述M;/n将每个所述第一数据块中的数据连续存储于片外存储,且将每个所述第二数据块中的数据连续存储于所述片外存储。/n

【技术特征摘要】
1.一种矩阵存储方法,其特征在于,包括:
按照预设的N行×M列的分割粒度,将矩阵分割成多个数据块,所述N和M中的至少一者大于1;其中,所述多个数据块包括至少一个第一数据块,所述第一数据块为N行×M列的数据块;若所述矩阵的列数不为所述M的整数倍,则所述多个数据块还包括至少一个N行×P列的第二数据块,所述第二数据块与相邻的所述第一数据块行对齐,所述P小于所述M;
将每个所述第一数据块中的数据连续存储于片外存储,且将每个所述第二数据块中的数据连续存储于所述片外存储。


2.根据权利要求1所述的方法,其特征在于,若所述矩阵的行数不为所述N的整数倍,则所述多个数据块还包括至少一个L行×S列的第三数据块,所述L小于所述N。


3.根据权利要求2所述的方法,其特征在于,所述第三数据块的数量为1,所述S等于所述矩阵的列数。


4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
将每个所述第三数据块中的数据连续存储于所述片外存储。


5.根据权利要求1所述的方法,其特征在于,若所述片外存储包括多个存储通道,则所述分割粒度为单个存储通道的存储粒度的整数倍。


6.一种矩阵访问方法,其特征在于,所述矩阵为采用权利要求1至5中任一项所述的矩阵存储方法存储于片外存储的矩阵,所述方法包括:
接收针对所述矩阵的访问请求,所述访问请求包括所述矩阵的访问参数;
若所述访问参数对应的数据块包括完整的第一数据块或完整的第二数据块,则从片外存储中读取所述数据块的数据;
若所述访问参数对应的数据块包括不完整的第一数据块或不完整的第二数据块,则禁止从所述片外存储中读取所述数据块的数据。


7.一种矩阵存储装置,其特征在于,包括:
分割模块,用于按照预设的N行×M列的分割粒度,将矩阵分割成多个数据块,所述N和M中的至少一者大于1;其中,所述多个数据块包括至少一个第一数据块,所述第一数据块为N行×M列的数据块;若所述矩阵的列数不为所述M的整...

【专利技术属性】
技术研发人员:阮元李浩洋
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

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

1