掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置以及芯片

文献发布时间:2023-06-19 11:22:42


数据处理方法、装置以及芯片

技术领域

本公开涉及计算机技术领域,具体涉及一种数据处理方法、装置以及芯片。

背景技术

随着计算机硬件的不断提升,计算机性能越来越强大,高性能计算被广泛应用于深度学习、图像处理和数据信号处理等任务中,对于例如矩阵运算等并行任务的优化,是高性能计算领域最为重要的研究方向之一。相关技术中,芯片系统在实现矩阵运算时,并未充分利用芯片存储层次,导致矩阵运算等并行任务的运算效率低、速度慢。

发明内容

为解决相关技术的芯片系统进行矩阵运算时效率较低的技术问题,本公开实施方式提供了一种数据处理方法、装置以及芯片。

第一方面,本公开实施方式提供了一种数据处理方法,包括:

基于第一矩阵的第一参数和第二矩阵的第二参数,确定结果矩阵的第三参数;

基于所述第三参数和目标分块参数,对所述结果矩阵进行分块处理,得到多个矩阵块;每个所述矩阵块包括至少一个数据操作块,每个所述数据操作块包括至少一个元素;所述目标分块参数基于各所述数据操作块对应的私有存储单元的存储容量确定;

将各所述数据操作块对应的操作数据,分配至对应的计算单元执行。

在一些实施方式中,所述的数据处理方法,还包括:

获取每个所述矩阵块中各个所述数据操作块对应的操作数据;

将所有操作数据存储至所述矩阵块对应的共享存储单元,并将各数据操作块对应的操作数据存储至对应的私有存储单元。

在一些实施方式中,所述的数据处理方法,还包括预先确定所述目标分块参数,所述预先确定所述目标分块参数包括:

基于所述结果矩阵中每个元素对应的所述操作数据量和所述数据操作块对应的私有存储单元的存储容量,确定所述私有存储单元的最大存储数量;

基于所述最大存储数量和所述第三参数,确定分块参数集合;

从所述分块参数集合中确定所述目标分块参数。

在一些实施方式中,从所述分块参数集合中确定所述目标分块参数,包括:

将所述分块参数集合中,包括元素数量最多的分块参数确定为所述目标分块参数。

在一些实施方式中,所述的数据处理方法,还包括:

获取所述结果矩阵对应的所有操作数据,并将所有操作数据存储至全局存储单元。

在一些实施方式中,所述将各所述数据操作块对应的操作数据,分配至对应的计算单元执行,包括:

所述计算单元基于各所述数据操作块对应的操作数据,利用计算机原语执行矩阵乘法运算。

第二方面,本公开实施方式提供了一种数据处理装置,包括:

确定模块,被配置为基于第一矩阵的第一参数和第二矩阵的第二参数,确定结果矩阵的第三参数;

分块模块,被配置为基于所述第三参数和目标分块参数,对所述结果矩阵进行分块处理,得到多个矩阵块;每个所述矩阵块包括至少一个数据操作块,每个所述数据操作块包括至少一个元素;所述目标分块参数基于各所述数据操作块对应的私有存储单元的存储容量确定;

计算模块,被配置为将各所述数据操作块对应的操作数据,分配至对应的计算单元执行。

在一些实施方式中,所述的数据处理装置,还包括:

获取模块,被配置为获取每个所述矩阵块中各个所述数据操作块对应的操作数据;

存储模块,被配置为将所有操作数据存储至所述矩阵块对应的共享存储单元,并将各数据操作块对应的操作数据存储至对应的私有存储单元。

在一些实施方式中,所述的数据处理装置,还包括参数确定模块,所述参数确定模块被配置为:

基于所述结果矩阵中每个元素对应的所述操作数据量和所述数据操作块对应的私有存储单元的存储容量,确定所述私有存储单元的最大存储数量;

基于所述最大存储数量和所述第三参数,确定分块参数集合;

从所述分块参数集合中确定所述目标分块参数。

在一些实施方式中,所述参数确定模块具体被配置为:将所述分块参数集合中,包括元素数量最多的分块参数确定为所述目标分块参数。

第三方面,本公开实施方式提供了一种芯片,包括:

处理单元;

存储单元,存储有计算机指令,所述计算机指令被读取时所述处理单元执行根据第一方面任一实施方式所述的数据处理方法。

在一些实施方式中,所述的芯片,还包括:

至少一个计算集群,所述计算集群包括至少一个计算核心和所述至少一个计算核心共享的共享存储单元,所述计算核心包括所述计算单元和所述私有存储单元。

本公开实施方式的数据处理方法,包括基于第一矩阵的第一参数和第二矩阵的第二参数确定结果矩阵的第三参数,基于第三参数和目标分块参数对结果矩阵进行分块处理,得到多个矩阵块,每个矩阵块包括至少一个数据操作块,每个数据操作块包括至少一个元素,且目标分块参数基于各数据操作块对应的私有存储单元的存储容量确定,将各数据操作块对应的操作数据分配至对应的计算单元执行。本公开方法通过根据私有存储单元的存储容量确定目标分块参数,从而提高私有存储单元的存储利用率,提高芯片实现矩阵运算时的计算性能,实现高性能的矩阵运算。

附图说明

为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是矩阵乘法的原理示意图。

图2是根据本公开一些实施方式中芯片系统的结构示意图。

图3是根据本公开一些实施方式中计算集群的结构示意图。

图4是根据本公开一些实施方式中数据处理方法的流程图。

图5是根据本公开一些实施方式中数据处理方法的原理示意图。

图6是根据本公开一些实施方式中数据处理方法的流程图。

图7是根据本公开一些实施方式中数据处理装置的结构框图。

图8是根据本公开一些实施方式中数据处理装置的结构框图。

具体实施方式

下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。此外,下面所描述的本公开不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

矩阵运算是深度学习和高性能计算领域最重要的算子之一,以矩阵乘法为例,越来越多的任务中包含了各种各样的矩阵乘法运算,尤其是大矩阵的乘法运算。现如今越来越多的硬件芯片被提出,如何在芯片上实现高性能的矩阵运算是提升算法速度和效果重要研究方向。

下文以矩阵乘法为例,对本公开涉及的数据数据方法、装置以及芯片进行说明。可以理解的是,本公开所述的“矩阵运算”并不局限于矩阵乘法,还可以是例如矩阵加法、矩阵减法、卷积等运算,本公开对此不作限制。

图1中示出了矩阵乘法的基本数学原理。如图1所示,矩阵A为M*K大小的矩阵,矩阵B为K*N大小的矩阵,(A*B)得到的结果矩阵C为M*N大小的矩阵。其中,结果矩阵C中的每一个元素,为矩阵A中对应的行向量与矩阵B中对应的列向量做内积的结果。例如图1中所示,结果矩阵C中的元素103即为矩阵A中的行向量101与矩阵B中的列向量102做内积的结果。向量乘向量、向量乘矩阵的运算原理与之相同,本领域技术人员可以理解,本公开对此不再赘述。

图2示出了实现本公开数据处理方法、装置以及芯片的系统结构框图,下面结合图2对本公开方案进行说明。

如图2所示,在一些实施方式中,本公开芯片系统包括处理单元100、存储单元200、全局存储单元300以及计算集群(cluster)400。处理单元100、存储单元200、全局存储单元300以及计算集群(cluster)400可以通过总线建立任意两者之间的可通信连接。

处理单元100可以为任何类型,具备一个或多个处理核心的处理器,其可以执行单线程或者多线程的操作,用于解析指令以执行获取数据、执行逻辑运算功能以及下发运算处理结果等操作。

存储单元200可以具有程序存储区,用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,供处理单元100调用以使处理单元100执行一个或者多个方法步骤。在本公开实施方式中,存储单元200存储有能够被处理单元100执行的计算机可读指令,在计算机可读指令被执行时,处理单元100可以执行下述任一实施方式中的数据处理方法。

全局存储单元300同样具有程序存储区,其用于存储并行任务的全部操作数据。在一个示例中,以图1所示的矩阵乘法运算为例,矩阵乘法(A*B)为一个并行任务,其包括矩阵A的各行向量与矩阵B的各列向量做内积的多个子任务,这些子任务包括的矩阵A的行向量数据和矩阵B的列向量数据即为操作数据,其可存储于全局存储单元300中。

值得说明的是,在一些实施方式中,存储单元200和全局存储单元300可以被配置为同一个存储单元,也即该存储单元即存储有供处理单元100读取的计算机指令,也存储有并行任务的全部操作数据。而在另一些实施方式中,存储单元200和全局存储单元300可以被配置为两个存储单元,也即图2中所示。本公开对此不作限制。

在一个示例中,存储单元200和/或全局存储单元300被配置为DRAM。

芯片系统包括多个计算集群(cluster)400,计算集群400用于根据全局存储单元300的操作数据实现相应的矩阵运算。图3示出了计算集群400的结构框图,下面结合图3进行说明。

如图3所示,一个计算集群400包括多个计算核心(core)410,例如图3示例中,一个计算集群400包括4个计算核心(core)410。在本公开实施方式中,多个计算核心410共享一个共享存储单元420,共享存储单元用于存储该计算集群400中多个计算核心410对应的操作数据。

在一个示例中,共享存储单元420被配置为SRAM。

继续参照图3,每一个计算核心(core)410包括计算单元411和私有存储单元412。在一个示例中,计算单元411可被配置为Task,Task是可执行的实体,是任务调度的最小单元。私有存储单元412用于存储计算单元411对应的操作数据,从而计算单元411可以根据私有存储单元412存储的操作数据调用原语实现相关计算。

在一个示例中,私有存储单元412被配置为NRAM。

通过上述可知,芯片系统包括三个存储层次,也即所有计算单元411均可见的全局存储单元300、多个计算单元共享的共享存储单元420以及每个计算单元411私有的私有存储单元412。这三个层次的存储,从全局存储单元300、共享存储单元420到私有存储单元412,访问速度越来越快,存储空间大小越来越小。

实现矩阵运算的原语所涉及的计算,操作数据必须存储在私有存储单元412上。因此,如何高效利用存储层次,尤其是高效利用私有存储单元412的存储空间,对于并行任务的性能有非常重要的影响。

在此基础上,本公开实施方式提供了一种数据处理方法,通过分块策略并高效利用三个存储层次,提高芯片系统实现矩阵运算时的运算性能。图4示出了本公开数据处理方法的一些实施方式,下面结合图4进行说明。

如图4所示,在一些实施方式中,本公开数据处理方法包括:

S401、基于第一矩阵的第一参数和第二矩阵的第二参数,确定结果矩阵的第三参数。

具体来说,在一个示例中,以深度学习网络场景为例,深度学习网络包括MLP(多层感知机)层,MLP层在计算过程中,输入矩阵与MLP的权重矩阵相乘得到输出结果,也即MLP在计算时实现矩阵乘法运算。其中,输入矩阵即可作为第一矩阵,权重矩阵即可作为第二矩阵,输出结果对应的矩阵即可作为结果矩阵。

下面以矩阵乘法运算为例,参见图1所示,第一矩阵A的第一参数为M*K,也即第一矩阵A为M*K大小的矩阵。第二矩阵B的第二参数为K*N,也即第二矩阵B为K*N大小的矩阵。基于矩阵乘法的原理可知,A*B得到的结果矩阵C的第三参数为M*N,也即结果矩阵C为M*N大小的矩阵。

S402、基于第三参数和目标分块参数,对结果矩阵进行分块处理,得到多个矩阵块。

具体而言,结合图1所示,结果矩阵C中的每一个元素表示的是矩阵A的行向量与矩阵B的列向量做内积,也即结果矩阵C的每个元素即为一个行向量与列向量的乘法运算。

在本公开实施方式中,并非直接将每个元素对应的操作数据分配给一个计算核心410进行计算。举例来说,如图1所示,元素103表示行向量101与列向量102乘法运算的结果,若将每个元素对应的操作数据分配给一个计算核心410的话,元素103对应的操作数据也即行向量101和列向量102的数据,将元素103对应的操作数据存储至一个计算核心410的私有存储单元412中,从而该计算核心410的计算单元411即可调取相应原语实现运算。

可以看到,若将结果矩阵C的每个元素对应的操作数据分配给一个计算核心410的话,并未充分考虑计算核心410的私有存储单元412的存储空间有效利用,尤其对于操作数据量较小的运算,造成私有存储单元412存储空间闲置,矩阵运算的并行运算效率较低、运算速度慢。

在本公开实施方式中,在确定结果矩阵C的第三参数之后,首先对结果矩阵C进行分块处理。在一些实施方式中,基于预先确定的目标分块参数对结果矩阵C进行分块处理,目标分块参数的确定过程参见下文图6实施方式,在此暂不展开。

结果矩阵的分块处理,需要考虑到芯片系统的三个存储层次,也即全局存储单元300、共享存储单元420和私有存储单元412。本公开实施方式中,基于私有存储单元412的存储容量来确定每个计算核心410分配的操作数据量,也即一个数据操作块,其对应至结果矩阵表示的即为元素数量。然后根据每个计算集群400包括的计算核心410的数量,即可确定每个计算集群400对应的矩阵块大小,也即,将结果矩阵C分块处理为多个矩阵块。

在一个示例中,结果矩阵C分块处理之后如图5中(a)所示,在本示例中,分块后的结果矩阵C包括多个矩阵块501,每个矩阵块501包括4个数据操作块502,每个数据操作块502包括1个元素。

在另一个示例中,结果矩阵C分块处理之后如图5中(b)所示,在本示例中,分块后的结果矩阵C包括多个矩阵块501,每个矩阵块501包括4个数据操作块502,每个数据操作块502包括2个元素。

图5仅作为本公开实施方式的两种示例,本公开方法基于私有存储单元的存储容量来确定目标分块参数,通过分块处理充分利用芯片存储层次。在此基础上,本领域技术人员毫无疑问可以根据具体场景实现其他分块处理方式,并不局限于本公开示例,对此不再赘述。

S403、将各数据操作块对应的操作数据,分配至对应的计算单元执行。

具体而言,在对结果矩阵C分块处理之后,即可根据分块结果将对应的操作数据进行分层次存储,实现矩阵并行运算。

在一些实施方式中,如图5所示,结果矩阵C对应的全部操作数据(也即矩阵A和矩阵B的全部数据)存储于全局存储单元300,每个矩阵块501对应的操作数据分配存储于一个计算集群400的共享存储单元420,每个矩阵块501包括的4个数据操作块502对应的操作数据,分别分配存储于一个计算核心410的私有存储单元412中,计算单元411可以根据私有存储单元412存储的操作数据调用相关原语实现乘法计算。

原语由若干条指令组成供计算单元调用来完成相关功能,例如实现矩阵运算的两个重要的硬件原语__bang_mul和__bang_mlp。__bang_mul是实现向量乘法的原语,__bang_mlp是实现矩阵乘法的原语。计算单元411在进行矩阵运算时,读取私有存储单元412存储的操作数据并调用相关的原语实现计算。

可以理解,上述__bang_mul和__bang_mlp仅作为示例,本公开方法还可以适用于实现其他矩阵运算的原语,例如矩阵加法、矩阵减法等原语,本公开对此不作限制。

可以看到,本公开实施方式的处理方法,一个计算核心410并不一定单次只计算一个元素,而是通过分块处理充分利用芯片系统的存储层次,一个计算核心410单次读取可计算一个或者多个元素,实现矩阵运算的并行优化。

通过上述可知,本公开实施方式的数据处理方法,通过根据私有存储单元的存储容量确定目标分块参数,充分利用芯片系统的存储层次,提高私有存储单元的存储利用率,提高矩阵运算的并行计算性能,实现高性能矩阵运算。

图6示出了本公开数据处理方法的一些实施方式,在图6实施方式中,可根据私有存储单元412的存储容量确定对结果矩阵C的目标分块参数。

如图6所示,在一些实施方式中,本公开数据处理方法包括:

S610、基于结果矩阵中每个元素对应的操作数据量和数据操作块对应的私有存储单元的存储容量,确定私有存储单元的最大存储数量。

具体而言,结合图1可知,结果矩阵C中每个元素103表示的是矩阵A的行向量101与矩阵B的列向量102乘法结果,因此每个元素103对应的操作数据量也即行向量101和列向量102的数据量之和k。获取私有存储单元412的最大存储容量为m。即可确定得到每个私有存储单元412所能存储的最大存储数量n,也即m/k取整数结果。最大存储数量表示单个私有存储单元412所能存储的最大元素数量所对应的操作数量。

S620、基于最大存储数量和第三参数,确定分块参数集合。

具体而言,在确定最大存储数量n之后,即可根据结果矩阵C的第三参数确定分块参数。应当理解,一个计算单元411执行的操作数据只要小于私有存储单元412容量即可,因此在确定分块参数时,往往包括多个分块参数,也即分块参数集合。

在一个示例中,最大存储数量n=2,表示私有存储单元412单次最多能存储2个元素对应的操作数据。在此情况下,即可确定多种分块参数。

如图5中(a)所示,分块参数表示为1*4,也即矩阵块501的大小为1*4,矩阵块501包括4个数据操作块502,每个数据操作块502包括一个元素。

如图5中(b)所示,分块参数表示为2*4,也即矩阵块501的大小为2*4,矩阵块501包括4个数据操作块502,每个数据操作块502包括2个元素。

可以理解,在本示例中,分块参数还可以表示为2*2。从而,在本示例中,即可确定分块参数集合表示为[1*4,2*2,2*4]。

S630、从分块参数集合中确定目标分块参数。

具体来说,在得到分块参数集合之后,即可由分块参数集合中确定得到目标分块参数。

在一些实施方式中,考虑到理论上来说,单个计算核心410所能存储的操作数据越多,则并行计算的效率越高。因此,在一些实施方式中,可将分块参数集合中,包括元素数量最多的分块参数确定为目标分块参数。以上述图5示例为例,在分块参数集合[1*4,2*2,2*4]中,可将分块参数2*4确定为目标分块参数。

在另一些实施方式中,考虑到芯片系统的硬件影响,可以根据有限次试验,预先试验得到分块参数集合中每个分块参数的试验结果,从而选择最优的试验结果所对应的分块参数作为目标分块参数。本领域技术人员对此可以理解,本公开不再赘述。

通过上述可知,本公开实施方式的数据处理方法,基于私有存储单元的存储容量和单个元素对应的操作数据量确定目标分块参数,从而充分利用芯片系统的存储层次,提高私有存储单元的存储利用率,提高矩阵运算的并行计算性能,实现高性能矩阵运算。

可以理解,本公开实施方式中在对结果矩阵分块处理时,每个矩阵块包括的数据操作块的数量可以根据一个计算集群400包括的计算核心410的数量确定,也即每个矩阵块的数据操作块的数量与每个计算集群的计算核心的数量相同。例如在图3所示的实施方式中,一个计算集群400包括4个计算核心410,因此在分块处理时,每个矩阵块包括4个数据操作块,每个数据操作块对应一个计算核心410。然而,在其他实施方式中,当计算集群400包括其他数量的计算核心410时,分块参数也可以相应进行调整,本公开不作限制。本领域技术人员对此可以理解,本公开不再赘述。

通过上述可知,本公开实施方式的数据处理方法,基于私有存储单元的存储容量和单个元素对应的操作数据量确定目标分块参数,从而充分利用芯片系统的存储层次,提高私有存储单元的存储利用率,提高矩阵运算的并行计算性能,实现高性能矩阵运算。

第二方面,本公开实施方式提供了一种数据处理装置。如图7所示,在一些实施方式中,本公开数据处理装置包括:

确定模块701,被配置为基于第一矩阵的第一参数和第二矩阵的第二参数,确定结果矩阵的第三参数;

分块模块702,被配置为基于所述第三参数和目标分块参数,对所述结果矩阵进行分块处理,得到多个矩阵块;每个所述矩阵块包括至少一个数据操作块,每个所述数据操作块包括至少一个元素;所述目标分块参数基于各所述数据操作块对应的私有存储单元的存储容量确定;

计算模块703,被配置为将各所述数据操作块对应的操作数据,分配至对应的计算单元执行。

如图8所示,在一些实施方式中,本公开数据处理装置还包括:

获取模块801,被配置为获取每个所述矩阵块中各个所述数据操作块对应的操作数据;

存储模块802,被配置为将所有操作数据存储至所述矩阵块对应的共享存储单元,并将各数据操作块对应的操作数据存储至对应的私有存储单元。

在一些实施方式中,所述的数据处理装置还包括参数确定模块803,所述参数确定模块803被配置为:

基于所述结果矩阵中每个元素对应的所述操作数据量和所述数据操作块对应的私有存储单元的存储容量,确定所述私有存储单元的最大存储数量;

基于所述最大存储数量和所述第三参数,确定分块参数集合;

从所述分块参数集合中确定所述目标分块参数。

在一些实施方式中,所述参数确定模块803具体被配置为:将所述分块参数集合中,包括元素数量最多的分块参数确定为所述目标分块参数。

通过上述可知,本公开实施方式的数据处理装置,基于私有存储单元的存储容量和单个元素对应的操作数据量确定目标分块参数,从而充分利用芯片系统的存储层次,提高私有存储单元的存储利用率,提高矩阵运算的并行计算性能,实现高性能矩阵运算。

第三方面,本公开实施方式提供了一种芯片,包括:

处理单元;

存储单元,存储有计算机指令,所述计算机指令被读取时所述处理单元执行根据第一方面任一实施方式所述的数据处理方法。

在一些实施方式中,本公开的芯片还包括:

至少一个计算集群,所述计算集群包括至少一个计算核心和所述至少一个计算核心共享的共享存储单元,所述计算核心包括所述计算单元和所述私有存储单元。

可以理解,本公开实施方式的芯片结构以及原理参见前述图2、图3示例即可,本公开对此不再赘述。

通过前述可知,本公开实施方式的芯片,基于私有存储单元的存储容量和单个元素对应的操作数据量确定目标分块参数,从而充分利用芯片系统的存储层次,提高私有存储单元的存储利用率,提高矩阵运算的并行计算性能,实现高性能矩阵运算。

显然,上述实施方式仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本公开创造的保护范围之中。

相关技术
  • 耗材芯片数据处理方法、装置、耗材芯片及成像盒
  • 数据处理方法、装置、主控芯片、从属芯片及系统
技术分类

06120112900856