计算装置、计算方法及计算机可读存储介质转让专利

申请号 : CN202211442893.6

文献号 : CN115576895B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

本申请提供了一种计算装置、计算方法以及计算机可读存储介质。该计算装置包括:计算资源,计算资源包括多个计算单元;获取模块,获取模块被配置成获取指导计算的计算指令;以及,重构控制模块,所述重构控制模块被配置成基于计算指令来确定计算类型,以及基于计算类型来重构计算资源中的至少部分计算单元的互联关系。根据本申请的实施例,计算装置在用于不同的应用场景时,均具有较高的计算效率和良好的适应性。

权利要求 :

1.一种计算装置,其特征在于,包括:

计算资源,所述计算资源包括多个计算单元,所述多个计算单元包括多个加法器和多个乘法器;

获取模块,所述获取模块被配置成获取指导计算的计算指令;以及,重构控制模块,其包括互联寄存与控制阵列,所述互联寄存与控制阵列被配置成对所述计算资源中的计算单元进行互联,所述重构控制模块被配置成基于所述计算指令来确定计算类型,以及基于所述计算类型确定互联策略,并基于所述互联策略重构所述互联寄存与控制阵列;

其中,所述互联策略包括第一互联模式和第二互联模式中的一个,所述第一互联模式用于指导所述互联寄存与控制阵列对所述计算资源中的第一部分计算单元进行第一互联,使得:所述第一部分计算单元中的多个计算单元被布置在至少N+1级上;

N N

所述至少N+1级的第一级被布置2个乘法器,所述2个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将所述乘法运算的运算结果发送至第二级以作为第二级的一个输入;以及,N‑i+1 N‑i+1

在所述至少N+1级的第i级,布置至少2 个加法器,所述2 个加法器中的各个加法器用于对第i级的多个输入的两个输入进行加法运算,并将所述加法运算的运算结果发送至第i+1级以作为第i+1级的一个输入;

其中,N、i均为自然数,且1

2.根据权利要求1所述的计算装置,其特征在于,所述第二互联模式用于指导所述互联寄存与控制阵列对所述计算资源中的第二部分计算单元进行第二互联,以使得所述第二部分计算单元对待计算数据进行乘法运算,以及对所述乘法运算的结果分别进行累加。

3.根据权利要求1或2所述的计算装置,其特征在于,其中基于所述计算类型确定互联策略,包括:确定所述计算类型是否用于稀疏矩阵的计算;

响应于确定所述计算类型不用于稀疏矩阵的计算,确定所述互联策略包含第一互联模式;以及,响应于确定所述计算类型用于稀疏矩阵的计算,确定所述互联策略包含第二互联模式。

4.根据权利要求1所述的计算装置,其特征在于,所述第一部分计算单元进一步包括第一后续计算单元,其中对所述计算资源中的第一部分计算单元进行第一互联进一步包括:对所述第一后续计算单元中的多个计算单元进行分级互联,使得所述第一后续计算单元对所述至少一组计算单元的至少部分组计算单元的第N+1级的输出进行加法运算。

5.根据权利要求4所述的计算装置,其特征在于,所述计算装置进一步包括计算控制模块;所述计算资源进一步包括和所述计算单元对应的寄存器,所述寄存器被配置成寄存其对应的计算单元的输出;其中,所述获取模块被进一步配置成获取待处理数据;以及,所述计算控制模块被配置成:基于所述计算指令发起对所述待处理数据进行预处理以确定待计算数据,发起将所述待计算数据发送至所述多个计算单元中的部分计算单元,确定所述多个计算单元中输出目标计算结果的目标计算单元,以及发起将所述目标计算单元对应的寄存器中寄存的值作为目标计算结果进行输出。

6.根据权利要求5所述的计算装置,其特征在于,其中确定所述多个计算单元中输出目标计算结果的目标计算单元包括:确定所述待计算数据的数据维度;

基于所述数据维度从所述至少N+1级计算单元或所述第一后续计算单元中确定所述目标计算单元所在的目标级;以及,基于所述至少N+1级计算单元的第1级中接收到输入的计算单元,在所述目标级中确定所述目标计算单元。

7.根据权利要求2所述的计算装置,其特征在于,所述第二部分计算单元包括至少一组计算单元,所述对所述计算资源中的第二部分计算单元进行第二互联包括:对所述至少一组计算单元中的各组计算单元中的多个计算单元进行分级互联,使得:所述各组计算单元中的多个计算单元被布置在至少2级上;

M M

所述至少2级的第一级被布置2个乘法器,所述2个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将所述乘法运算的运算结果发送至第二级以作为第二级的一个输入;以及,M M

所述至少2级的第2级被布置至少2个加法器,所述至少2 个加法器中的各个加法器用于对第2级的多个输入中的一个输入的输入值进行累加。

8.根据权利要求7所述的计算装置,其特征在于,所述第二部分计算单元进一步包括第二后续计算单元,其中对所述计算资源中的第二部分计算单元进行第二互联进一步包括:对所述第二后续计算单元中的多个计算单元进行分级互联,使得所述第二后续计算单元对所述至少一组计算单元的至少部分组计算单元的第2级的输出进行加法运算。

9.根据权利要求8所述的计算装置,其特征在于,所述计算资源进一步包括和所述计算单元对应的寄存器,所述寄存器被配置成寄存其对应的计算单元的输出;针对所述多个计算单元中位于所述第一级的计算单元中的每个,其具备对应的控制电路,所述控制电路配置成:确定其对应的计算单元的输入是否包含零;以及,响应于确定其对应的计算单元的输入包含零,控制其对应的计算单元不对所述输入进行计算,以及控制其对应计算单元的寄存器不对其对应计算单元的输出进行寄存。

10.根据权利要求1所述的计算装置,其特征在于,所述计算装置进一步包括数据预处理模块;

其中,所述获取模块进一步被配置成获取待处理数据;

所述数据预处理模块被配置成对所述待处理数据进行预处理,以确定待计算数据;以及,所述重构控制模块进一步被配置成基于所述计算类型控制所述数据预处理模块对所述待处理数据进行预处理,以确定待计算数据,以及发起将所述待计算数据发送至经重构的计算资源以对其进行计算。

11.根据权利要求10所述的计算装置,其特征在于,其中基于所述计算类型控制所述数据预处理模块对所述待处理数据进行预处理,以确定待计算数据,包括:确定所述计算类型是否包含稀疏向量点积;

响应于所述计算类型包含稀疏向量点积,获取所述待处理数据中用于进行稀疏向量点积的第一稀疏向量和第二稀疏向量,所述第一稀疏向量和第二稀疏向量都包含用于表征其中非零元素位置的索引数组,控制所述数据预处理模块对所述第一稀疏向量和所述第二稀疏向量进行第一预处理操作;以及,将经过所述第一预处理操作的第一稀疏向量和第二稀疏向量确定为所述待计算数据的一部分;

其中,所述第一预处理操作包括:

获取第一稀疏向量和第二稀疏向量,

确定目标索引数组,所述目标索引数组包括所述第一稀疏向量的索引数组和所述第二稀疏向量的索引数组中相同的索引,确定经过第一预处理操作的第一稀疏向量,所述经过第一预处理操作的第一稀疏向量依次包括第一多个非零元素和第二多个零元素,所述第一多个非零元素包括第一稀疏向量中与目标索引数组中的索引对应的元素,确定经过第一预处理操作的第二稀疏向量,所述经过第一预处理操作的第二稀疏向量依次包括第一多个非零元素和第二多个零元素,所述第一多个非零元素包括第二稀疏向量中与目标索引数组中的索引对应的元素,其中,所述第一多个的值与目标索引数组中索引的数量相同,所述第一多个的值与所述第二多个的值的和等于第一稀疏向量中元素的数量。

12.根据权利要求10所述的计算装置,其特征在于,其中基于所述计算类型控制所述数据预处理模块对所述待处理数据进行预处理,包括:确定所述计算类型是否用于稀疏矩阵的计算;

响应于确定所述计算类型用于稀疏矩阵的计算,获取所述待处理数据中压缩的稀疏矩阵,控制所述数据预处理模块对所述压缩的稀疏矩阵进行解码,以获取用于计算的稀疏矩阵;以及,将所述用于计算的稀疏矩阵确定为所述待计算数据的一部分。

13.根据权利要求12所述的计算装置,其特征在于,所述压缩的稀疏矩阵包括以压缩数据格式存储的稀疏矩阵,所述压缩数据格式包括分块压缩数据格式,所述压缩的稀疏矩阵包括分块压缩稀疏列矩阵,所述分块压缩稀疏列矩阵通过对稀疏矩阵以所述分块压缩数据格式进行压缩和存储确定,包括:将所述稀疏矩阵分成多个子矩阵;

对所述多个子矩阵中的每个分别进行压缩;以及,

确定所述分块压缩稀疏列矩阵,所述分块压缩稀疏列矩阵包括经压缩的所述多个子矩阵。

14.根据权利要求10所述的计算装置,其特征在于,其中基于所述计算类型控制所述数据预处理模块对所述待处理数据进行预处理,包括:确定所述计算类型是否包含卷积计算;

响应于所述计算类型包含卷积计算,获取所述待处理数据中用于卷积计算的待处理矩阵和相应的卷积核,控制所述数据预处理模块对所述卷积核进行第二预处理操作;

将所述待处理矩阵和经过所述第二预处理操作的卷积核确定为所述待计算数据的一部分;

其中,所述第二预处理操作包括:

获取卷积核;

确定所述卷积核的尺寸;以及,

P

通过添加零元素的方式,将所述卷积核的尺寸扩张为包含2个元素,其中,P为正整数。

15.根据权利要求10所述的计算装置,其特征在于,其中基于所述计算类型控制所述数据预处理模块对所述待处理数据进行预处理,包括:确定所述计算类型是否包含矩阵与向量相乘;

响应于所述计算类型包含矩阵与向量相乘,获取所述待处理数据中用于相乘的待乘矩阵和待乘向量,控制所述数据预处理模块对所述待乘矩阵和待乘向量进行第三预处理操作,以确定待乘向量组;

将所述待乘向量组确定为所述待计算数据的一部分;

其中,所述第三预处理操作包括:

确定所述待乘矩阵的多个第一子向量,所述多个第一个子向量中的每个包含所述待乘矩阵的一行元素,以及,确定多个待乘向量组,所述多个待乘向量组中的每组包含所述待乘向量和所述多个第一子向量中的一个。

16.根据权利要求15所述的计算装置,其特征在于,其中基于所述计算类型控制所述数据预处理模块对所述待处理数据进行预处理,包括:确定所述计算类型是否包含矩阵与矩阵相乘;

响应于所述计算类型包含矩阵与矩阵相乘,获取所述待处理数据中用于相乘的第一矩阵和第二矩阵,控制所述数据预处理模块对所述第一矩阵和所述第二矩阵进行第四预处理操作,以确定待乘向量组;

将所述待乘向量组确定为所述待计算数据的一部分;

其中,所述第四预处理操作包括:

确定所述第一矩阵的多个第一子向量,所述多个第一子向量中的每个包含所述第一矩阵的一行元素,确定所述第二矩阵的多个第二子向量,所述多个第二子向量中的每个包含所述第二矩阵的一列元素,以及,确定多个待乘向量组,所述多个待乘向量组中的每个待乘向量组包含所述多个第一子向量中的一个和所述多个第二子向量中的一个。

17.根据权利要求1所述的计算装置,其特征在于,所述计算类型包括非稀疏向量与非稀疏向量的点积、非稀疏向量与稀疏向量的点积、稀疏向量与稀疏向量的点积、非稀疏矩阵与向量相乘、稀疏矩阵与向量相乘、稀疏矩阵与稀疏矩阵相乘、非稀疏矩阵与非稀疏矩阵相乘、稀疏矩阵与非稀疏矩阵相乘、卷积计算中的一种或多种。

18.一种计算方法,其特征在于,包括:

利用获取模块获取指导计算的计算指令和待计算数据;

利用包含互联寄存与控制阵列的重构控制模块对计算资源进行重构,包括:基于所述计算指令来确定计算类型,基于所述计算类型确定互联策略,并基于所述互联策略重构互联寄存与控制阵列,所述计算资源包括多个计算单元,所述多个计算单元包括多个加法器和多个乘法器,所述互联策略包括第一互联模式和第二互联模式中的一个,所述第一互联模式用于指导所述互联寄存与控制阵列对所述计算资源中的第一部分计算单元进行第一互联,使得:所述第一部分计算单元中的多个计算单元被布置在至少N+1级上,N N

所述至少N+1级的第一级被布置2个乘法器,所述2个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将所述乘法运算的运算结果发送至第二级以作为第二级的一个输入,以及,N‑i+1 N‑i+1

在所述至少N+1级的第i级,布置至少2 个加法器,所述2 个加法器中的各个加法器用于对第i级的多个输入的两个输入进行加法运算,并将所述加法运算的运算结果发送至第i+1级以作为第i+1级的一个输入,其中,N、i均为自然数,且1

利用经重构的计算资源对所述待计算数据进行计算。

19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,当所述计算机可执行指令在计算机上执行时,实现根据权利要求18所述的计算方法。

说明书 :

计算装置、计算方法及计算机可读存储介质

技术领域

[0001] 本申请涉及计算领域,特别涉及计算装置、计算方法及计算机可读存储介质。

背景技术

[0002] 计算装置通常利用其包含的计算资源来完成计算。在计算装置获取需要计算的数据后,计算资源中的多个计算单元将以一定的方式协作以完成数据的计算。在相关领域中,计算资源在出厂后其计算单元的互联及协作关系通常已经固定。这使得计算资源在用于不同的计算场景时,往往不具备针对性,导致不能发挥出计算装置的最大计算效率。

发明内容

[0003] 发明人注意到,如何使得计算装置在用于不同的应用场景时,其计算资源均能具备一定的针对性,以实现更高的计算效率和适应性,是一个亟待解决的问题。
[0004] 鉴于此,本申请提供了计算装置、计算方法及计算机可读存储介质,期望解决上述问题。
[0005] 根据本申请的一个方面,提供了一种计算装置,其特征在于,计算装置包括:计算资源,计算资源包括多个计算单元;获取模块,获取模块被配置成获取指导计算的计算指令;以及,重构控制模块,所述重构控制模块被配置成基于计算指令来确定计算类型,以及基于计算类型来重构计算资源中的至少部分计算单元的互联关系。
[0006] 在根据本申请的一些实施例的计算装置中,多个计算单元包括多个加法器和多个乘法器;重构控制模块包括互联寄存与控制阵列,互联寄存与控制阵列被配置成对计算资源中的计算单元进行互联;其中,基于计算类型来重构计算资源中的至少部分计算单元的互联关系,包括:基于计算类型确定互联策略;以及,重构互联寄存与控制阵列,以使得计算资源中的至少部分计算单元的互联关系被基于互联策略重构。
[0007] 在根据本申请的一些实施例的计算装置中,互联策略包括第一互联模式和第二互联模式中的一个,第一互联模式用于指导互联寄存与控制阵列对计算资源中的第一部分计算单元进行第一互联,以使得第一部分计算单元对待计算数据进行乘法运算,以及对乘法运算的结果进行多级求和;以及,第二互联模式用于指导互联寄存与控制阵列对计算资源中的第二部分计算单元进行第二互联,以使得第二部分计算单元对待计算数据进行乘法运算,以及对乘法运算的结果分别进行累加。
[0008] 在根据本申请的一些实施例的计算装置中,基于计算类型确定互联策略,包括:确定计算类型是否用于稀疏矩阵的计算;响应于确定计算类型不用于稀疏矩阵的计算,确定互联策略包含第一互联模式;以及,响应于确定计算类型用于稀疏矩阵的计算,确定互联策略包含第二互联模式。
[0009] 在根据本申请的一些实施例的计算装置中,第一部分计算单元包括至少一组计算单元,其中对计算资源中的第一部分计算单元进行第一互联包括:对至少一组计算单元中的各组计算单元中的多个计算单元进行分级互联,使得:各组计算单元中的多个计算单元N N均被布置在至少N+1级上;在至少N+1级的第一级,布置2个乘法器,2个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将乘法运算的运N‑i+1
算结果发送至第二级以作为第二级的一个输入;以及,在至少N+1级的第i级,布置至少2N‑i+1
个加法器,2 个加法器中的各个加法器用于对第i级的多个输入的两个输入进行加法运算,并将加法运算的运算结果发送至第i+1级以作为第i+1级的一个输入;其中,N、i均为自然数,且1
[0010] 在根据本申请的一些实施例的计算装置中,第一部分计算单元进一步包括第一后续计算单元,其中对计算资源中的第一部分计算单元进行第一互联进一步包括:对第一后续计算单元中的多个计算单元进行分级互联,使得第一后续计算单元对至少一组计算单元的至少部分组计算单元的第N+1级的输出进行加法运算。
[0011] 在根据本申请的一些实施例的计算装置中,计算装置进一步包括计算控制模块;计算资源进一步包括和计算单元对应的寄存器,寄存器被配置成寄存其对应的计算单元的输出;其中,获取模块进一步被配置成获取待处理数据;以及,计算控制模块被配置成:基于计算指令发起对待处理数据进行预处理以确定待计算数据,发起将待计算数据发送至多个计算单元中的部分计算单元,确定多个计算单元中输出目标计算结果的目标计算单元,以及发起将目标计算单元对应的寄存器中寄存的值作为目标计算结果进行输出。
[0012] 在根据本申请的一些实施例的计算装置中,确定多个计算单元中输出目标计算结果的目标计算单元包括:确定待计算数据的数据维度;基于数据维度从至少N+1级计算单元或第一后续计算单元中确定所述目标计算单元所在的目标级;以及,基于第1级中接收到输入的计算单元,在目标级中确定目标计算单元。
[0013] 在根据本申请的一些实施例的计算装置中,第二部分计算单元包括至少一组计算单元,对计算资源中的第二部分计算单元进行第二互联包括:对至少一组计算单元中的各组计算单元中的多个计算单元进行分级互联,使得:各组计算单元中的多个计算单元均被M M布置在至少2级上;在至少2级的第一级,布置2个乘法器,2 个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将乘法运算的运算结果发M
送至第二级以作为第二级的一个输入;以及,在至少2级的第2级,布置至少2个加法器,至M
少2个加法器中的各个加法器用于对第2级的多个输入中的一个输入的输入值进行累加。
[0014] 在根据本申请的一些实施例的计算装置中,第二部分计算单元进一步包括第二后续计算单元,其中对计算资源中的第二部分计算单元进行第二互联进一步包括:对第二后续计算单元中的多个计算单元进行分级互联,使得第二后续计算单元对至少一组计算单元的至少部分组计算单元的第2级的输出进行加法运算。
[0015] 在根据本申请的一些实施例的计算装置中,计算资源进一步包括和计算单元对应的寄存器,寄存器被配置成寄存其对应的计算单元的输出;针对多个计算单元中位于第一级的计算单元中的每个,其具备对应的控制电路,控制电路配置成:确定其对应的计算单元的输入是否包含零;以及,响应于确定其对应的计算单元的输入包含零,控制其对应的计算单元不对输入进行计算,以及控制其对应计算单元的寄存器不对其对应计算单元的输出进行寄存。
[0016] 在根据本申请的一些实施例的计算装置中,该计算装置进一步包括数据预处理模块,其中,获取模块进一步被配置成获取待处理数据;数据预处理模块被配置成对待处理数据进行预处理,以确定待计算数据;以及,重构控制模块进一步被配置成基于计算类型控制数据预处理模块对待处理数据进行预处理,以确定待计算数据,以及发起将待计算数据发送至经重构的计算资源以对其进行计算。
[0017] 在根据本申请的一些实施例的计算装置中,基于计算类型控制数据预处理模块对待处理数据进行预处理,以确定待计算数据,包括:确定计算类型是否包含稀疏向量点积;响应于计算类型包含稀疏向量点积,获取待处理数据中用于进行稀疏向量点积的第一稀疏向量和第二稀疏向量,第一稀疏向量和第二稀疏向量都包含用于表征其中非零元素元素位置的索引数组,控制数据预处理模块对第一稀疏向量和第二稀疏向量进行第一预处理操作;以及,将经过第一预处理操作的第一稀疏向量和第二稀疏向量确定为待计算数据的一部分;其中,第一预处理操作包括:获取第一稀疏向量和第二稀疏向量,确定目标索引数组,目标索引数组包括第一稀疏向量的索引数组和第二稀疏向量的索引数组中相同的索引,确定经过第一预处理操作的第一稀疏向量,经过第一预处理操作的第一稀疏向量依次包括第一多个非零元素和第二多个零元素,第一多个非零元素包括第一稀疏向量中与目标索引数组中的索引对应的元素,确定经过第一预处理操作的第二稀疏向量,经过第一预处理操作的第二稀疏向量依次包括第一多个非零元素和第二多个零元素,第一多个非零元素包括第二稀疏向量中与目标索引数组中的索引对应的元素,其中,第一多个的值与目标索引数组中索引的数量相同,第一多个的值与第二多个的值的和等于第一稀疏向量中元素的数量。
[0018] 在根据本申请的一些实施例的计算装置中,基于计算类型控制数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否用于稀疏矩阵的计算;响应于确定计算类型用于稀疏矩阵的计算,获取待处理数据中压缩的稀疏矩阵,控制数据预处理模块对压缩的稀疏矩阵进行解码,以获取用于计算的稀疏矩阵;以及,将用于计算的稀疏矩阵确定为待计算数据的一部分。
[0019] 在根据本申请的一些实施例的计算装置中,压缩的稀疏矩阵包括以压缩数据格式存储的稀疏矩阵,压缩数据格式包括分块压缩数据格式,压缩的稀疏矩阵包括分块压缩稀疏列矩阵,分块压缩稀疏列矩阵通过对稀疏矩阵以分块压缩数据格式进行压缩和存储确定,包括:将稀疏矩阵分成多个子矩阵;对多个子矩阵中的每个分别进行压缩;以及,确定分块压缩稀疏列矩阵,分块压缩稀疏列矩阵包括经压缩的多个子矩阵。
[0020] 在根据本申请的一些实施例的计算装置中,基于计算类型控制数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否包含卷积计算;响应于计算类型包含卷积计算,获取待处理数据中用于卷积计算的待处理矩阵和相应的卷积核,控制数据预处理模块对卷积核进行第二预处理操作;将待处理矩阵和经过第二预处理操作的卷积核确定为待计算数据的一部分;其中,第二预处理操作包括:获取卷积核;确定卷积核的尺寸;以及,通P过添加零元素的方式,将卷积核的尺寸扩张为包含2个元素,其中,P为正整数。
[0021] 在根据本申请的一些实施例的计算装置中,基于计算类型控制所述数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否包含矩阵与向量相乘;响应于计算类型包含矩阵与向量相乘,获取待处理数据中用于相乘的待乘矩阵和待乘向量,控制所述数据预处理模块对待乘矩阵和待乘向量进行第三预处理操作,以确定待乘向量组;将待乘向量组确定为待计算数据的一部分;其中,第三预处理操作包括:确定待乘矩阵的多个第一子向量,多个第一个子向量中的每个包含待乘矩阵的一行元素,以及,确定多个待乘向量组,多个待乘向量组中的每组包含待乘向量和多个第一子向量中的一个。
[0022] 在根据本申请的一些实施例的计算装置中,基于计算类型控制所述数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否包含矩阵与矩阵相乘;响应于计算类型包含矩阵与矩阵相乘,获取待处理数据中用于相乘的第一矩阵和第二矩阵,控制数据预处理模块对第一矩阵和第二矩阵进行第四预处理操作,以确定待乘向量组;将待乘向量组确定为待计算数据的一部分;其中,第四预处理操作包括:确定第一矩阵的多个第一子向量,多个第一子向量中的每个包含第一矩阵的一行元素,确定第二矩阵的多个第二子向量,多个第二子向量中的每个包含第二矩阵的一列元素,以及,确定多个待乘向量组,多个待乘向量组中的每个待乘向量组包含多个第一子向量中的一个和多个第二子向量中的一个。
[0023] 在根据本申请的一些实施例的计算装置中,所述计算类型包括非稀疏向量与非稀疏向量的点积、非稀疏向量与稀疏向量的点积、稀疏向量与稀疏向量的点积、非稀疏矩阵与向量相乘、稀疏矩阵与向量相乘、稀疏矩阵与稀疏矩阵相乘、非稀疏矩阵与非稀疏矩阵相乘、稀疏矩阵与非稀疏矩阵相乘、卷积计算中的一种或多种。
[0024] 根据本申请的一个方面,提供了一种计算方法,该方法包括:利用获取模块获取指导计算的计算指令和待计算数据;利用重构控制模块,基于计算指令确定计算类型,以及基于计算类型来重构计算资源中的至少部分计算单元的互联关系;以及,利用经重构的计算资源对待计算数据进行计算。
[0025] 根据本申请的另一方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,计算机可执行指令在被执行时实现根据本申请一些实施例的计算方法。
[0026] 根据本申请的另一方面,提供了一种计算机程序产品,包括计算机可执行指令,所述计算机可执行指令在被处理器执行时实现根据本申请一些实施例的计算方法。
[0027] 在本申请要求保护的计算装置中,该计算装置包括计算资源、获取模块和重构控制模块。计算资源包括多个计算单元。获取模块被配置成获取指导计算的计算指令。重构控制模块被配置成基于计算指令来确定计算类型,以及基于计算类型来重构计算资源中的至少部分计算单元的互联关系。
[0028] 可见,在本申请公开的计算装置中,计算装置利用其重构控制模块,可以基于计算指令确定计算类型,并基于计算类型重构计算资源,使得计算资源中的至少部分计算单元的互联关系更加适应于该计算类型。这使得本申请公开的计算装置,在用于不同的应用场景时,均具有较高的计算效率和良好的适应性。
[0029] 根据下文描述的实施例,本申请的这些和其它优点将变得清楚,并且参考下文描述的实施例来阐明本申请的这些和其它优点。

附图说明

[0030] 现在将更详细并且参考附图来描述本申请的实施例,其中:
[0031] 图1示出了根据本申请的一些实施例的计算装置的示例性应用场景;
[0032] 图2示出了根据本申请的一些实施例的计算装置的示例性结构框图;
[0033] 图3示出了根据本申请的一些实施例的计算装置的示例性结构框图;
[0034] 图4示出了根据本申请的一些实施例的第一互联模式的示意图;
[0035] 图5示出了根据本申请的一些实施例的第一互联模式的示意图;
[0036] 图6示出了根据本申请的一些实施例的第一互联模式的示意图;
[0037] 图7示出了根据本申请的一些实施例的第二互联模式的示意图;
[0038] 图8A示出了根据本申请的一些实施例的第二互联模式的示意图;
[0039] 图8B示出了根据本申请的一些实施例的稀疏矩阵乘向量的示意图;
[0040] 图9A示出了根据本申请的一些实施例的计算装置的示例性结构框图;
[0041] 图9B示出了根据本申请的一些实施例的计算装置的示例性结构框图;
[0042] 图10示出了根据本申请的一些实施例的稀疏向量预处理的示意图;
[0043] 图11示出了根据本申请的一些实施例的稀疏矩阵预处理的示意图;
[0044] 图12示出了根据本申请的一些实施例的计算方法的示意性流程图;以及,[0045] 图13出了一个示例系统,其包括代表可以实现本文描述的各种方法的一个或多个系统和/或设备的示例计算设备。

具体实施方式

[0046] 现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
[0047] 此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组件、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
[0048] 附图中所示的方框图仅仅是功能实体,不必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0049] 附图中所示的流程图仅是示例性说明,不是必须包括所有的信息和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0050] 应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“和/或”及类似术语包括相关联的列出项目中的任一个、多个和全部的所有组合。
[0051] 本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
[0052] 在详细介绍本申请的实施例之前,首先对计算装置及相关技术的概念进行解释。
[0053] 加法器:加法器是用于实现加法的器件,包括输入和输出。
[0054] 乘法器:加法器是用于实现乘法的器件,包括输入和输出稀疏向量:稀疏向量由两个并列的数组组成,即索引(index/indices)数组和数值(value)数组。与稀疏向量对应的是密集向量,二者具有不同的表达形式。例如:向量(1.0,0.0,1.0,3.0)用密集格式表示为[1.0,0.0,1.0,3.0],用稀疏格式表示为(4,[0,2,3],[1.0,1.0,3.0])第一个4表示向量的长度(元素个数),[0,2,3]就是索引数组,[1.0,1.0,3.0]是数值数组表示向量0的位置的值是1.0,2的位置的值是1.0,而3的位置的值是3.0,其他的位置都是0。
[0055] 稀疏矩阵:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。
[0056] 累加器:累加器(accumulator)是一种寄存器,用来储存计算产生的中间结果。如果没有像累加器这样的寄存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,也许马上就得读回来。然而存取主存的速度是比从算术逻辑单元到有直接路径的累加器存取更慢。
[0057] 卷积核:在进行图像处理时,往往通过对输入图像中一个小区域中像素加权平均来确定输出图像中的每个对应像素,这里的权值由一个函数定义,这个函数被称为卷积核。
[0058] 图1示出了根据本申请的一些实施例的计算装置的示例性应用场景100。如图1所示,场景100可以包括服务器110、服务器120、网络130、终端140、终端150、终端160等。可选地,终端可以是如终端140所示的移动终端,也可以是终端150所示的显示器、终端160所示的台式计算机等。
[0059] 在该实施例中,计算装置可以包括在服务器110中,计算装置包括计算资源、获取模块和重构控制模块。计算资源可以包括多个计算单元,例如服务器110中的多个计算单元。获取模块被配置成获取指导计算的计算指令,计算指令可以来自服务器110内部的其他装置,也可以来自服务器110外部,例如服务器120、终端140、终端150、终端160等,以及也可以来自于网络,例如网络150。重构控制模块被配置成基于计算指令来确定计算类型,以及基于计算类型来重构计算资源中的至少部分计算单元的互联关系。
[0060] 在该实施例中,计算装置也可以包括在其他设备中,例如服务器120、终端140、终端150以及终端160等。
[0061] 应当指出,图1仅示出了一种应用场景的示例性实施例。针对不同的应用场景,服务器的数量、终端的数量、服务器之间的通信关系以及服务器与终端之间的通信关系等均可以随之改变,此处不做限制。例如,可以采用常见的通信方式,包括但不限于有线通信、无线通信等,此处不做限制。
[0062] 应当指出,计算装置可以包含能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。
[0063] 图2示出了根据本申请的一些实施例的计算装置200的示例性结构框图。如图2所示,计算装置200包括计算资源230、获取模块210以及重构控制模块220。计算资源230包括多个计算单元。获取模块210被配置成获取指导计算的计算指令。重构控制模块220被配置成基于计算指令来确定计算类型,以及基于计算类型来重构计算资源230中的至少部分计算单元的互联关系。作为示例,计算装置200可以用于图1所示的场景100,例如用于服务器110或终端140等,以根据收到的计算指令对计算资源230进行重构。在一些实施例中,计算类型可以包括不用于稀疏矩阵运算的计算类型(例如非稀疏向量乘稀疏向量、非稀疏矩阵乘非稀疏矩阵、卷积运算等)和用于稀疏矩阵运算的计算类型(例如稀疏矩阵乘向量、稀疏矩阵乘矩阵等)。作为示例,重构控制模块220可以根据计算类型是否用于稀疏矩阵运算,确定如何重构计算资源230中的至少部分计算单元的互联关系。例如,不用于稀疏矩阵运算的计算类型可以对应于一种互联关系,用于稀疏矩阵运算的计算类型可以对应于另一种互联关系。
[0064] 在一些实施例中,计算类型可以包括非稀疏计算,例如非稀疏向量与非稀疏向量的点积、非稀疏矩阵与向量相乘、非稀疏矩阵与非稀疏矩阵相乘、卷积计算中的一种或多种。可选地,计算类型也可以包括稀疏计算,例如稀疏向量与非稀疏向量的点积、稀疏向量与稀疏向量的点积、稀疏矩阵与向量相乘、稀疏矩阵与稀疏矩阵相乘、稀疏矩阵与非稀疏矩阵相乘中的一种或多种。
[0065] 可见,计算装置200利用其重构控制模块,可以基于计算指令确定计算类型,并基于计算类型重构计算资源,使得计算资源中的至少部分计算单元的互联关系更加适应于该计算类型。这使得计算装置200在用于不同的应用场景时,均具有较高的计算效率和良好的适应性。
[0066] 在一些实施例中,多个计算单元可以包括多个加法器和多个乘法器。重构控制模块可以包括互联寄存与控制阵列。互联寄存与控制阵列被配置成对计算资源中的计算单元进行互联。图3示出了根据本申请的一些实施例的计算装置的示例性结构框图。如图3所示,计算装置200的重构控制模块220可以包括互联寄存与控制阵列2201。作为示例,基于计算类型来重构计算资源中的至少部分计算单元的互联关系,可以包括:基于计算类型确定互联策略;以及,重构互联寄存与控制阵列,以使得计算资源中的至少部分计算单元的互联关系被基于互联策略重构。可见,重构控制模块220可以通过对控制互联寄存与控制阵列2201进行操作,改变计算资源中部分计算单元的互联,实现根据计算类型对计算资源进行重构。可选地,计算资源230可以包括加法器阵列和乘法器阵列2301。
[0067] 在一些实施例中,互联策略包括第一互联模式和第二互联模式中的一个,第一互联模式用于指导互联寄存与控制阵列对计算资源中的第一部分计算单元进行第一互联,以使得第一部分计算单元对待计算数据进行乘法运算,以及对乘法运算的结果进行多级求和。作为示例,第一互联模式可以适用于不包含稀疏矩阵的计算。
[0068] 第二互联模式用于指导互联寄存与控制阵列对计算资源中的第二部分计算单元进行第二互联,以使得第二部分计算单元对待计算数据进行乘法运算,以及对乘法运算的结果分别进行累加。作为示例,第二互联模式可以适用于包含稀疏矩阵的计算。可见,由于互联策略可以包括多种互联模式,使得针对不同的应用场景,可以基于采用更加适合的互联策略,以实现多个计算单元的更适合的互联,进而提升计算资源的计算效率。
[0069] 在一些实施例中,基于计算类型确定互联策略,可以包括:确定计算类型是否用于稀疏矩阵的计算;响应于确定计算类型不用于稀疏矩阵的计算,确定互联策略包含第一互联模式;以及,响应于确定计算类型用于稀疏矩阵的计算,确定互联策略包含第二互联模式。作为示例,用于稀疏矩阵的计算可以包括稀疏矩阵乘非稀疏矩阵、稀疏矩阵乘向量、稀疏矩阵乘稀疏矩阵等。
[0070] 可见,通过确定计算类型是否用于稀疏计算,可以相应地采用不同的互联策略,以实现对于应用场景更好的针对性和适用性。
[0071] 需要指出的是,第一互联模式也可以用于包含稀疏矩阵的计算,只是当计算包含稀疏矩阵时,第二互联模式具备更高的计算效率和更低的功耗。
[0072] 在一些实施例中,第一部分计算单元包括至少一组计算单元,以及,对计算资源中的第一部分计算单元进行第一互联包括:对至少一组计算单元中的各组计算单元中的多个计算单元进行分级互联,使得:各组计算单元中的多个计算单元均被布置在至少N+1级上;N N
在至少N+1级的第一级,布置2个乘法器,2个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将乘法运算的运算结果发送至第二级以作N‑i+1 N‑i+1
为第二级的一个输入;以及,在至少N+1级的第i级,布置至少2 个加法器,2 个加法器中的各个加法器用于对第i级的多个输入的两个输入进行加法运算,并将加法运算的运算结果发送至第i+1级以作为第i+1级的一个输入;其中,N、i均为自然数,且1
[0073] 在一些实施例中,第一部分计算单元进一步包括第一后续计算单元,对计算资源中的第一部分计算单元进行第一互联进一步包括:对第一后续计算单元中的多个计算单元进行分级互联,使得第一后续计算单元对至少一组计算单元的至少部分组计算单元的第N+1级的输出进行加法运算。
[0074] 图4示出了根据本申请的一些实施例的一组计算单元的第一互联模式的示意图。对计算资源中的第一部分计算单元进行第一互联包括对第一部分计算单元中的各组计算单元进行分级互联,使得多个计算单元的互联关系如图4中所示。
[0075] 图4中,以N=3作为示例。如图4所示,一组计算单元被布置在至少4级上;在至少4级的第一级,布置8个乘法器,这8个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将乘法运算的运算结果发送至第二级以作为第二级4‑i 4‑i
的一个输入;以及,在至少4级的第i级,布置至少2 个加法器,2 个加法器中的各个加法器用于对第i级的多个输入的两个输入进行加法运算,并将加法运算的运算结果发送至第i+1级以作为第i+1级的一个输入,且1
[0076] 作为示例,第一互联模式可以用于向量点积的运算。例如,在第一互联模式下,计算装置可用于计算向量A(a1,a2,……,an)与向量B(b1,b2,……,bn)的点积,其中ai、bi均为向量的元素,i为自然数。作为示例,可以利用如图4所示的第一互联模式,将a1和b1作为第一级的第1个乘法器的输入,将ai和bi作为第一级的第i个乘法器的输入。在第一级的乘法器对向量元素进行乘法运算后,第二级及之后的加法器将对上一级的输出进行累加,直到其中一级的一个加法器完成对向量A和向量B所有对应元素的乘积的相加。作为示例,向量点积的运算可以包括非稀疏向量乘非稀疏向量、稀疏向量乘非稀疏向量、稀疏向量乘稀疏向量中的至少一种。
[0077] 在一些实施例中,计算资源可以包括多组(slice)计算单元,每组计算单元可以包括多个计算单元。每组计算单元可以采用如图4所示的第一互联模式。以及,计算资源可以进一步包括第一后续计算单元,第一后续计算单元可以对多组计算单元的输出进行进一步处理。例如,第一后续计算单元可以对多组计算单元的结果进行多级求和,此时,第一后续计算单元中的各级计算单元可以对上一级计算单元的输出进行加法计算并将计算结果输出到下一级。可选地,第一后续计算单元中的第一级加法器可以对多组计算单元中的任意两组计算单元的计算结果进行求和。第一后续计算单元的第二级加法器可以对第一级加法器的指定输出进行求和。
[0078] 在一些实施例中,第一互联模式可以用于稀疏向量点积的运算。例如,在两个稀疏向量的点积运算中,可以首先对稀疏向量进行预处理,使得两个稀疏向量中具有相同索引的元素实现对齐。例如,对于第一稀疏向量(16,(3,5,7),(1,9,3))和第二稀疏向量(16,(1,3,7,9,15),(1,2,9,1,1)),它们具有的相同索引是(3,7)。此时,可以将第一稀疏向量处理为(16,(3,7),(1,3)),将第二稀疏向量处理为(16,(3,7),(2,9))。以及,可选地,可以将第一稀疏向量进一步处理为(16,(0,1),(1,3)),将第二稀疏向量进一步处理为(16,(0,1),(2,9)),即可以依次放置2个非零元素和14个零元素。然后,将两个稀疏向量的对齐的元素对输入到如图4所示的第一互联模式的第一级计算单元的乘法器中。即,可以将经处理的第一稀疏向量和经处理的第二稀疏向量输入到第一互联模式的第一级计算单元的乘法器中,进行对应元素的相乘。
[0079] 第二级及之后的加法器将对乘法器的输出进行求和运算,最终得出稀疏向量的点积运算结果。
[0080] 在一些实施例中,第一互联模式也可以用于稀疏向量与非稀疏向量相乘。此时,可以首先对非稀疏向量进行预处理。例如,根据第一稀疏向量的索引,确定第一稀疏向量中非零元素在向量中的位置,即非零位置(例如,非零位置可以是稀疏向量的第3、5、7个元素的位置)。然后从非稀疏向量中提取与第一稀疏向量的非零位置对应位置的元素(例如,非稀疏向量的第3、5、7个元素的位置),组成第二稀疏向量。第二稀疏向量中与第一稀疏向量的非零位置对应位置的元素与非稀疏向量中对应位置的元素相同,第二稀疏向量中其他位置的元素均是0元素。然后,可以利用上文提出的稀疏向量点积的方法,计算第一稀疏向量与第二稀疏向量的点积,并将点积结果作为第一稀疏向量与非稀疏向量相乘的结果。作为示例,在计算第一稀疏向量与第二稀疏向量的相乘时,与利用如第一互联模式进行,例如利用如上文所述的第一互联模式下稀疏向量的点积进行计算。
[0081] 在一些实施例中,第一互联模式在用于稀疏向量与非稀疏向量相乘时,可以通过将非稀疏向量以索引数组和数值数组的表示方式,利用稀疏向量与稀疏向量相乘的方法计算稀疏向量与非稀疏向量相乘。例如,在计算第一稀疏向量(16,(3,5,7),(1,9,3))和非稀疏向量(1,2,3,0,5,6,7,8,9,10,11,12,13,14,15,0)时,可以将非稀疏向量以索引数组和数值数组的方式表示,即(16,(0,1,2,4,5,6,7,8,9,10,11,12,13,14),(1,2,3,5,6,7,8,9,10,11,12,13,14,15))。然后,对第一稀疏向量和非稀疏向量进行第一预处理操作,确定经第一预处理操作的第一稀疏向量和经第一预处理操作的非稀疏向量。最后,利用第一互联模式,利用稀疏向量乘稀疏向量的方法,计算经第一预处理操作的第一稀疏向量和经第一预处理操作的非稀疏向量的乘积。
[0082] 作为示例,第一预处理操作可以包括:确定目标索引数组,目标索引数组包括第一稀疏向量的索引数组和非稀疏向量的索引数组中相同的索引,例如此处目标索引数组可以是(5,7)。然后,确定经过第一预处理操作的第一稀疏向量,经过第一预处理操作的第一稀疏向量依次包括第一多个非零元素和第二多个零元素,第一多个非零元素包括第一稀疏向量中与目标索引数组中的索引对应的元素,例如,第一稀疏向量中与目标索引数组对应的数值是3和9,则此处经过第一预处理操作的第一稀疏向量可以是(16,(0,1),(9,3))。最后,确定经过第一预处理操作的非稀疏向量,经过第一预处理操作的非稀疏向量依次包括第一多个非零元素和第二多个零元素,第一多个非零元素包括非稀疏向量中与目标索引数组中的索引对应的元素,例如,此处与目标索引数组(5,7)对应的非稀疏向量的数值是6和8,则经过第一预处理操作的非稀疏向量可以是(16,(0,1),(6,8))。需要指出的是,第一多个的值与目标索引数组中索引的数量相同,例如此处都是2;第一多个的值与第二多个的值的和等于第一稀疏向量中元素的数量,例如此处第一多个的值是2,第二多个的值是14,第一稀疏向量中元素的数量是16。
[0083] 可以看出,第一预处理实现了稀疏向量与稀疏向量或稀疏向量与非稀疏向量中各对应元素的对齐,为后续利用计算单元进行计算做了准备。以及,由于在预处理过程中对部分元素进行了置零,这使得在后续的计算中能节省计算资源、减少功耗,以及提高计算效率。
[0084] 在一些实施例中,第一互联模式可以用于矩阵乘向量的运算。例如,对于矩阵Em×nT和向量B(b1,b2,……,bn) 的乘法,可以将矩阵拆解成多个横向量,然后将每个横向量与向量B进行点积,此时可以利用如上文所述的第一互联模式进行计算。例如,矩阵Em×n可以表示T
为E(α1,α2,……,αm) ,其中αi表示矩阵E的第i行元素。此时,矩阵与向量相乘的结果可以用T
向量C表示,即:C=Em×n×B=E(α1,α2,……,αm) ×B,其中,向量C(c1,c2,……,cn)中的元素T
ci=αi*B,即向量αi与向量B的点积,可以利用如上文所述的第一互联模式进行计算。作为示例,计算类型矩阵乘向量可以包括非稀疏矩阵乘向量。
[0085] 在一些实施例中,第一互联模式可以用于矩阵乘矩阵的运算。例如,对于矩阵Em×n和矩阵Fn×u,可以将矩阵F拆解成多个列向量,即F=(β1,β2,……,βu),其中βi表示F的第i列元素。此时,矩阵与矩阵相乘的结果可以用矩阵D表示,即:D=Em×n×F=E×(β1,β2,……,βu)=(E×β1,E×β2,……,E×βu),其中,矩阵D(γ1,γ2,……,γn)中的元素γi=E×βi,即矩阵E与向量βi的乘积,可以利用如上文所述的利用第一互联模式计算矩阵乘向量的方法。作为示例,计算类型矩阵乘矩阵可以包括非稀疏矩阵乘非稀疏矩阵。
[0086] 在一些实施例中,第一互联模式可以用于卷积运算。例如,利用卷积核K对矩阵Em×n进行卷积操作时,卷积核K将与矩阵Em×n中的多个子矩阵分别进行矩阵的乘法操作,其中子矩阵由矩阵Em×n中的部分相邻元素组成,且子矩阵的尺寸与卷积核K相同。此时,可以利用如上文所述的利用第一互联模式计算矩阵和矩阵相乘的方法,来计算子矩阵与卷积核的乘积。
[0087] 在一些实施例中,计算资源可以包括多组(slice)计算单元,其中每组计算单元可以包括多个计算单元。作为示例,可以对每组计算单元中的部分计算单元均采用第一互联模式,再将这些计算模块的输出进行后续处理,以得到最终计算结果。从而实现对计算资源的充分利用。图5示出了第一互联模式形态。
[0088] 图5示出了根据本申请的一些实施例的第一互联模式的示意图。如图5所示,计算资源包含四组计算单元B0‑B3,以及作为第一后续计算单元的后续处理单元。在每组计算单元,均以第一互联模式进行互联。可选地,在每个加法器的输出端,还可以连接一个累加器,以对加法器的输出进行累加。图6示出了根据本申请的一些实施例的第一互联模式中作为第一后续计算单元的后续处理单元的示意图。
[0089] 根据图5和图6可以看出,第一互联模式中,4组计算单元根据计算需求被重构为第一互联模式。作为示例,在第一互联模式中,可以使用35个累加器,这虽然增加了加法器的数量,但是在计算功能上能够提供较大帮助,尤其是对于计算的“累加”形式,可以流水式地支持。可见,在一些实施例中,第一互联模式所需的计算单元可以包括:至少32个乘法器和70个加法器。
[0090] 如图5所示,每组计算单元中包含8个乘法器,7个累加器,和7个分制加法器。其中累加器和分制加法器除了用途不同,其他均相同。如图5所示的连接方式,其中累加器在每一级的后面连出,这是因为累加器为不同级提供的结果累加的功能。
[0091] 如图6所示,第一互联模式的后续处理单元,包含7个累加器和7个分制加法器。其中累加器和分制加法器除了用途不同,其他均相同。其中6个分制加法器的连接方式,使得4组计算单元的输出,能够以任意的方式“两两分组”,也就说是排列组合。在4组计算单元的结果中,选择2个出来,那么选择的方式总共有6种。也就是说,需要6个分制加法器对4组计算单元的计算结果进行求和,使得任意2组计算单元的计算结果可以成为一组。同样地,这6个分制加法器后面需要连接对应累加器。之后可以对着这6个分制加法器的结果继续进行分级相加。作为示例,在图6示出的第一互联模式的后续处理单元中,可以包括7个分制加法器和7个累加器,其中每个累加器中均包括一个加法器。即第一互联模式的后续处理单元可以具有14个加法器。在一些实施例中,第一互联模式可以具有四组图5示出的计算单元和一组如图6示出的后续处理单元。此时需要乘法器32个(即4组×8个),需要加法器70个(即4组×14个+1组×14个)。
[0092] 需要指出的是,第一互联模式的计算单元可以不限于上述数量。例如,图5右下角和图6右下角均示例性地示出了一个闲置的加法器,该加法器可以用作备用元件,也可以用于其他用途,此处不做限制。
[0093] 在一些实施例中,第二部分计算单元包括至少一组计算单元,以及,对计算资源中的第二部分计算单元进行第二互联包括:对至少一组计算单元中的各组计算单元中的多个计算单元进行分级互联,使得:各组计算单元中的多个计算单元均被布置在至少2级上;在M M至少2级的第一级,布置2个乘法器,2个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将乘法运算的运算结果发送至第二级以作为第M M
二级的一个输入;以及,在至少2级的第2级,布置至少2个加法器,至少2个加法器中的各个加法器用于对第2级的多个输入中的一个输入的输入值进行累加。
[0094] 在一些实施例中,第二部分计算单元进一步包括第二后续计算单元,对计算资源中的第二部分计算单元进行第二互联进一步包括:对第二后续计算单元中的多个计算单元进行分级互联,使得第二后续计算单元对至少一组计算单元的至少部分组计算单元的第2级的输出进行加法运算。
[0095] 作为示例,第二后续处理单元可以被配置成仅对第二部分计算单元中处理待计算数据中的非零元素的计算单元的输出进行操作,以实现在稀疏计算中节省资源并提升计算效率。
[0096] 图7示出了根据本申请的一些实施例的一组计算单元的第二互联模式的示意图。图7示出了M的值为3时的示例。如图7所示,对第二部分计算单元进行分级互联,使得:一组计算单元的多个计算单元被布置在至少2级上。在第一级,布置8个乘法器,这8个乘法器中的各个乘法器用于对待计算数据中的多个元素中的两个对应元素进行乘法运算,并将乘法运算的运算结果发送至第二级以作为第二级的一个输入。以及,在第2级,布置至少8个加法器,这8个加法器中的各个加法器用于对第2级的多个输入中的一个输入的输入值进行累加,作为示例,可以使用包含加法器的累加器进行累加。
[0097] 在一些实施例中,计算资源可以包含多组计算单元。每组计算单元包含多个计算单元。作为示例,可以对其中的每组计算单元以第二互联模式进行互联,再利用第二后续计算单元对各组计算单元的输出进行后续操作。
[0098] 作为示例,第二互联模式可以用于稀疏矩阵乘向量的运算。例如,对于稀疏矩阵Gm×n与向量B(b1,b2,……,bn)相乘,可以将稀疏矩阵拆成多个向量,即Gm×n=(θ1,θ2,……,θn),其中θi表示矩阵G的第i列元素。然后,可以利用如图7所示的第二互联模式,对向量θi和向量B中的元素bi进行相乘,其中bi表示向量B的第i个元素。例如,可以把向量θi的各个元素g1i、g2i、g3i、……、gmi分别作为第一级的一个乘法单元的一个输入,将该乘法单元的另一个输入设置为元素bi。在一些实施例中,当检测到乘法器的输入包含0元素时,将不会启动乘法器,以节省资源。此时,第二级中接收该未启动乘法器的输出的累加器的值将不会变化。在完成向量θi与元素bi的乘法后,第一级将继续进行θi+1与元素bi+1的乘法并将结果输出到第二级,第二级的累加器将对第一级中对应的乘法器的输出进行累加,直至完成稀疏矩阵G中的所有向量与向量B中所有对应元素的相乘,以及相应的累加。此时,第二级的输出即为稀疏矩阵Gm×n与向量B(b1,b2,……,bn)的乘积。作为示例,计算类型稀疏矩阵乘向量可以包括稀疏矩阵乘非稀疏向量、稀疏矩阵乘稀疏向量。
[0099] 可见,在第二互联模式下进行计算时,部分用于处理0元素的计算单元将不会开启,这将减小计算装置的功耗同时增加计算效率。而涉及稀疏的计算,待计算数据中往往包含大量的零元素,因此,第二互联模式对于稀疏计算具有较好的适用性和经济性。
[0100] 作为示例,第二互联模式可以用于非稀疏矩阵乘稀疏向量的运算。例如,对于非稀疏矩阵Lm×n与稀疏向量Z(z1,z2,……,zn)相乘,可以将非稀疏矩阵拆成多个向量,即其中 表示非稀疏矩阵L的第i列元素。然后,可以利用如图7所示的第二互联模式,对向量 和稀疏向量Z中的元素zi进行相乘,其中zi表示稀疏向量Z的第i个元素。例如,可以把向量 的各个元素l1i、l2i、l3i、……、lmi分别作为第一级的一个乘法单元的一个输入,将该乘法单元的另一个输入设置为元素zi。在一些实施例中,当检测到乘法器的输入包含0元素时,将不会启动乘法器,以节省资源。此时,第二级中接收该未启动乘法器的输出的累加器的值将不会变化。在完成向量 与元素zi的乘法后,第一级将继续进行与元素zi+1的乘法并将结果输出到第二级,第二级的累加器将对第一级中对应的乘法器的输出进行累加,直至完成稀疏矩阵L中的所有向量与向量Z中所有对应元素的相乘,以及相应的累加。此时,第二级的输出即为稀疏矩阵Lm×n与向量Z(z1,z2,……,zn)的乘积。
[0101] 在一些实施例中,计算资源可以包含多组计算单元。每组计算单元包含多个计算单元。作为示例,可以对其中的每组计算单元以第二互联模式进行互联,再利用第二后续计算单元对各组计算单元的输出进行后续操作。例如,第二后续计算单元可以对各组计算单元的输出的对应项进行加法操作。作为示例,计算单元1组、计算单元2组、计算单元3组和计算单元4组的输出可以分别是列向量ε1、ε2、ε3、ε4,其中向量εi包含的元素个数与该组计算单元的乘法器的个数相同。则可选地,第二后续计算单元可以对多组计算单元的输出进行相加的操作,最终输出ε1+ε2+ε3+ε4,也可以对多组计算单元的输出进行部分相加再拼接的操作,例如最终输出
[0102] 在一些实施例中,第二互联模式可以用于矩阵乘矩阵的运算。例如,对于稀疏矩阵Rm×n和矩阵Sn×u,可以将矩阵S拆解成多个列向量,即S=(δ1,δ2,……,δu),其中δi表示S的第i列元素。此时,稀疏矩阵与矩阵相乘的结果可以用矩阵D表示,即:D=Rm×n×S=R×(δ1,δ2,……,δu)=(R×δ1,R×δ2,……,R×δu),其中,矩阵D(γ1,γ2,……,γn)中的元素γi=R×δi,即矩阵R与向量δi的乘积,可以利用如上文所述的利用第二互联模式计算稀疏矩阵乘向量的方法。
[0103] 可选地,当第二互联模式用于稀疏矩阵乘矩阵时,不限制其用于稀疏矩阵乘非稀疏矩阵还是稀疏矩阵乘稀疏矩阵,这两种计算类型均可以利用如上文所述的方法进行计算。例如,当第二互联模式用于稀疏矩阵乘非稀疏矩阵时,可以将其拆解为稀疏矩阵乘非稀疏向量;当第二互联模式用于稀疏矩阵乘稀疏矩阵时,可以将其拆解为稀疏矩阵乘稀疏向量,均可以利用以第二互联模式配置的计算装置进行计算。
[0104] 在一些实施例中,第二互联模式可以用于非稀疏矩阵乘稀疏矩阵的运算。例如,对于非稀疏矩阵Jm×n和稀疏矩阵Hn×u,可以将稀疏矩阵H拆解成多个列稀疏向量,即H=(Φ1,Φ2,……,Φu),其中Φi表示H的第i列元素。此时,非稀疏矩阵与稀疏矩阵相乘的结果可以用矩阵D表示,即:D=Jm×n×H=J×(Φ1,Φ2,……,Φu)=(J×Φ1,J×Φ2,……,J×Φu),其中,矩阵D(γ1,γ2,……,γn)中的元素γi=J×Φi,即矩阵J与稀疏向量Φi的乘积,可以利用如上文所述的利用第二互联模式中计算非稀疏矩阵乘稀疏向量的方法。
[0105] 作为示例,图8A示出了根据本申请的一些实施例的第二互联模式的示意图。在图8A中所示出的实施例中,计算资源包含四组计算单元,根据计算类型的需求,可以对P0,P1,P2,P3均进行第二互联,重构为第二互联模式。每组计算单元包含至少8个乘法器,可选地,可以共用第一互联模式中的分制加法器。此外,还有8个累加器,这8个累加器就是对乘法器的结果进行累加。此外,第二互联模式还可以包含第二后续计算单元组,用于对四组计算单元的结果进行后续处理。每组后续计算单元需要16个加法器,其中8个加法器充当分制加法器,8个加法器充当累加器。在一些实施例中,第二互联模式可以包含四组计算单元和两组第二后续计算单元。例如,第二互联模式的四组计算单元中每组均可以包含8个加法器和8个乘法器,两组第二后续计算单元中的每组可以包含16个加法器,即第二互联模式可以包含64个加法器和32个乘法器。
[0106] 作为示例,第二后续计算单元的每个累加单元,能够对任意两组计算单元的结果进行分制求和并累加。也就是说,首先将两组计算单元的8组计算结果进行一一对应,并对对应的计算结果进行相加,最后对相加的结果累加,得到8个累加的结果。这样的结构可以用于包含稀疏矩阵的运算。需要指出的是,由于第二后续计算单元的累加单元可以全部由加法器组成,因此仍然可以复用第一互联模式的计算模块当中的累加器。因此,当不涉及稀疏矩阵计算时,或者稀疏矩阵计算范围在计算模块内部而不涉及多组计算单元的组合时,空余下来的后续累加单元内的加法器可以复用给第一互联模式结果的计算模块内的加法器。
[0107] 在一些实施例中,计算资源进一步包括和计算单元对应的寄存器,寄存器被配置成寄存其对应的计算单元的输出;针对多个计算单元中位于第一级的计算单元中的每个,其具备对应的控制电路。该控制电路配置成:确定其对应的计算单元的输入是否包含零;以及,响应于确定其对应的计算单元的输入包含零,控制其对应的计算单元不对输入进行计算,以及控制其对应计算单元的寄存器不对其对应计算单元的输出进行寄存。作为示例,针对图7中示出的第一级计算单元中的各个乘法器,可以具有一个控制电路。当该控制电路检测到其所在的乘法器接收到0输入时,会控制该乘法器不对该计算进行反应,以及控制该乘法器输出的寄存器(即图中的R)不对该计算做出反应。在一些实施例中,第一级的乘法器中的控制电路,在检测到第一级的乘法器的输入包含零元素后,除了控制第一级的乘法器和寄存器不对此计算产生反应外,还能控制第二级中该乘法器预期将输出到的加法器和该加法器对应的寄存器不对当前计算产生反应,以进一步减小功耗、提高计算效率。
[0108] 图8B示出了根据本申请的一些实施例的稀疏矩阵乘向量的示意图。如图8所示,稀疏矩阵G和向量B将进行乘法运算。其中,矩阵G是一个16×16维的稀疏矩阵,向量B是一个16维的列向量(既可以是稀疏向量,也可以是非稀疏向量)。作为示例,可以利用如图8A所示的以第二互联模式配置的计算单元进行计算。由于图8A中每组(slice)计算单元只有8个乘法器,因此仅利用一组计算单元计算稀疏矩阵G和向量B的乘法将效率不高。为此,可以通过给图8A中示出的四组计算单元(即P0‑P3)分别分配部分计算任务,再利用后续计算单元(即S0和S1)进行后续处理,确定最终的计算结果。具体地,将稀疏矩阵G均分为四个子稀疏矩阵G0、G1、G2和G3。其中每个子稀疏矩阵均是8×8维的矩阵,且满足:
[0109]
[0110] 以及,将向量B均分为子向量B0和B1。其中每个自向量均包含8个元素,且满足:
[0111]
[0112] 由此,可以得出等式:
[0113]
[0114] 示例性地,可以将计算G0×B0分配给8A中的P0组计算单元,将计算G1×B0分配给图8A中的P1组计算单元,将计算G2×B1分配给图8A中的P2组计算单元,将计算G3×B1分配给图
8A中的P3组计算单元。然后,通过S0对P0和P2的输出进行相加,即获得G0×B0+G2×B1;以及通过S1对P1和P3的输出进行相加,即获得G1×B0+G3×B1。最后,将S0和S1的输出进行拼接,即获得 作为稀疏矩阵G和向量B相乘的计算结果。
[0115] 从图8B可以看出,稀疏矩阵G中具有较多的零元素,因此,在将其划分为四个子稀疏矩阵后,其子稀疏矩阵也将具备较多的零元素。此时,乘法器中的控制电路将首先确定其对应的计算单元的输入是否包含零,并在确定其对应的计算单元的输入包含零后,控制其对应的计算单元不对输入进行计算,以及控制其对应计算单元的寄存器不对其对应计算单元的输出进行寄存。
[0116] 可以看出,由于第二互联模式下,部分用于处理0元素的计算单元将不会开启,这将减小计算装置的功耗同时增加计算效率。因此,利用第二互联模式,可以更加高效、快速和节能地计算出稀疏矩阵G和向量B的乘积。在一些实施例中,如图9A所示,计算装置200进一步包括数据预处理模块240。并且计算装置200的获取模块210进一步被配置成获取待处理数据;数据预处理模块240被配置成对待处理数据进行预处理,以确定待计算数据;以及,重构控制模块220进一步被配置成基于计算类型控制数据预处理模块240对待处理数据进行预处理,以确定待计算数据,以及发起将待计算数据发送至经重构的计算资源230以对其进行计算。计算装置利用其数据预处理模块,可以实现根据计算类型对待处理数据进行预处理,以方便后续对数据的计算,进而提升计算效率。
[0117] 在一些实施例中,基于计算类型控制数据预处理模块对待处理数据进行预处理,以确定待计算数据,包括:确定计算类型是否包含稀疏向量点积;响应于计算类型包含稀疏向量点积,获取待处理数据中用于进行稀疏向量点积的第一稀疏向量和第二稀疏向量,第一稀疏向量和第二稀疏向量都包含用于表征其中非零元素位置的索引数组,控制数据预处理模块对第一稀疏向量和第二稀疏向量进行第一预处理操作;以及,将经过第一预处理操作的第一稀疏向量和第二稀疏向量确定为待计算数据的一部分。
[0118] 在一些实施例中,第一预处理操作可以包括:获取第一稀疏向量和第二稀疏向量,作为示例,第一稀疏向量可以是(16,(3,5,7),(1,9,3)),第二稀疏向量可以是(16,(1,3,7,9,15),(1,2,9,1,1));确定目标索引数组,目标索引数组包括第一稀疏向量的索引数组和第二稀疏向量的索引数组中相同的索引,作为示例,目标索引组可以是(3,7);确定经过第一预处理操作的第一稀疏向量,经过第一预处理操作的第一稀疏向量依次包括第一多个非零元素和第二多个零元素,第一多个非零元素包括第一稀疏向量中与目标索引数组中的索引对应的元素,作为示例,经过第一预处理操作的第一稀疏向量可以是(16,(0,1),(1,3));
确定经过第一预处理操作的第二稀疏向量,经过第一预处理操作的第二稀疏向量依次包括第一多个非零元素和第二多个零元素,第一多个非零元素包括第二稀疏向量中与目标索引数组中的索引对应的元素,作为示例,经过第一预处理操作的第二稀疏向量可以是(16,(0,
1),(2,9));其中,第一多个的值与目标索引数组中索引的数量相同,第一多个的值与第二多个的值的和等于第一稀疏向量中元素的数量,作为示例,第一多个可以是2,第二多个可以是14,第一稀疏向量中元素的数量是16。
[0119] 根据本申请的一些实施例,还公开了一种计算装置300,计算装置300包括获取模块210、计算控制模块320和计算资源230。获取模块210被配置成获取待处理数据和用于指导计算的计算指令。计算资源230包括多个计算单元和与计算单元对应的寄存器,寄存器用于寄存其对应的计算单元的输出。
[0120] 计算控制模块320被配置成:基于计算指令发起对待处理数据进行预处理,以确定待计算数据;发起将待计算数据发送至多个计算单元中的部分计算单元;确定多个计算单元中输出目标计算结果的目标计算单元,以及发起将目标计算单元对应的寄存器中寄存的值作为目标计算结果进行输出。
[0121] 可以看出,计算装置300通过对待处理数据进行预处理、利用其计算单元对待计算数据进行计算以及确定目标计算单元对应的寄存器,实现了基于计算指令对待处理数据进行操作,以输出目标计算结果的功能。
[0122] 在一些实施例中,计算装置300还可以包括数据预处理模块240。作为示例,计算控制模块320基于计算指令发起对待处理数据进行预处理,以确定待计算数据可以包括基于计算指令控制数据预处理模块240对待处理数据进行预处理,以确定待计算数据。此时,计算装置300的示例性结构框图如图9B所示。
[0123] 在一些实施例中,计算资源中的多个计算单元可以利用上文提到的第一互联模式进行互联。此时,确定多个计算单元中输出目标计算结果的目标计算单元可以包括:确定待计算数据的数据维度;基于数据维度从至少N+1级计算单元或第一后续计算单元中确定目标计算单元所在的目标级;以及,基于第1级中接收到输入的计算单元,在目标级中确定目标计算单元。
[0124] 作为示例,待计算数据的数据维度与目标级之间满足等式:
[0125] 1+log2Dd≤Ti<2+log2Dd
[0126] 其中,Dd指待计算数据的数据维度,Tl指目标级。例如,当待计算数据是8维向量时,即其数据维度是8,则其目标级是4。当待计算数据是4维向量时,即其数据维度是4,则目标级应是3。以及,基于第1级中接收到输入的计算单元,在目标级中确定目标计算单元可以包括确定第一级中接收到输入的计算单元位于第一级的上半部分还是下半部分,以确定目标计算单元在目标级中的位置。例如,当当待计算数据的数据维度是4,第一级中接收到输入的计算单元是如图4所示的第一级中由上到下的4个乘法器,则目标计算单元是第三级中由上到下的第一个加法器。
[0127] 图10示出了根据本申请的一些实施例的稀疏向量预处理的示意图。如图10所示,待处理数据包含第一稀疏向量和第二稀疏向量。这两个稀疏向量均包含索引数组和数值数组。在进行数据预处理时,会比较第一稀疏向量和第二稀疏向量的索引数组,确定相同的索引值。然后将相同索引值对应的数值进行对齐并前置,将不具备相同索引值的数组进行置零并后置。作为示例,图10示出的稀疏向量预处理操作,可以利用上文提出的第一预处理操作进行。
[0128] 在一些实施例中,数据预处理操作可以由重构控制模块或计算控制模块控制数据预处理模块进行操作。例如,重构控制模块或计算控制模块控制可以基于计算类型控制数据预处理模块对待处理数据进行预处理。作为示例,基于计算类型控制数据预处理模块对待处理数据进行预处理可以包括:确定计算类型是否包含矩阵与向量相乘;响应于计算类型包含矩阵与向量相乘,获取待处理数据中用于相乘的待乘矩阵和待乘向量,控制数据预处理模块对待乘矩阵和待乘向量进行第三预处理操作,以确定待乘向量组;以及将待乘向量组确定为待计算数据的一部分。其中,第三预处理操作可以包括:确定待乘矩阵的多个第一子向量,多第一个子向量中的每个包含待乘矩阵的一行元素;以及,确定多个待乘向量组,多个待乘向量组中的每组包含所述待乘向量和所述多个第一子向量中的一个。
[0129] 作为示例,对于待乘矩阵Em×n和待乘向量B(b1,b2,……,bn)T,可以将待乘矩阵Em×nT表示为E(α1,α2,……,αm) ,其中αi表示矩阵E的第i行元素。然后,将αi和B作为一组待乘向量组。待乘向量组可以直接作为多个计算单元中第一级计算单元的输入。
[0130] 在一些实施例中,基于计算类型控制数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否包含矩阵与矩阵相乘;响应于计算类型包含矩阵与矩阵相乘,获取待处理数据中用于相乘的第一矩阵和第二矩阵,控制数据预处理模块对第一矩阵和第二矩阵进行第四预处理操作,以确定待乘向量组;以及,将待乘向量组确定为待计算数据的一部分。其中,第四预处理操作包括:确定第一矩阵的多个第一子向量,多个第一子向量中的每个包含第一矩阵的一行元素,确定第二矩阵的多个第二子向量,多个第二子向量中的每个包含第二矩阵的一列元素,以及,确定多个待乘向量组,多个待乘向量组中的每个待乘向量组包含多个第一子向量中的一个和多个第二子向量中的一个。
[0131] 作为示例,对于第一矩阵Em×n和第二矩阵Fn×u,可以将第一矩阵Em×n表示为E(α1,Tα2,……,αm) ,其中αi表示矩阵E的第i行元素,将第二矩阵F表示为F=(β1,β2,……,βu),其中βi表示F的第i列元素。然后,将αi和βi作为一组待乘向量组。待乘向量组可以直接作为多个计算单元中第一级计算单元的输入。在一些实施例中,基于计算类型控制数据预处理模块对待处理数据进行预处理可以包括:确定计算类型是否包含稀疏矩阵与矩阵相乘,例如稀疏矩阵乘稀疏矩阵或稀疏矩阵乘非稀疏矩阵;响应于计算类型包含稀疏矩阵与矩阵相乘,获取待处理数据中用于相乘的待乘稀疏矩阵和待乘矩阵,控制数据预处理模块对待乘稀疏矩阵和待乘矩阵进行第五预处理操作,以确定待乘对应组;以及将待乘对应组确定为待计算数据的一部分。其中,第五预处理操作可以包括:确定待乘矩阵的多个第三子向量,多个第三个子向量中的每个包含待乘矩阵的一列元素;以及,确定多个待乘对应组,多个待乘对应组中的每组包含所述待乘稀疏矩阵和所述多个第三子向量中的一个。
[0132] 作为示例,对于稀疏矩阵Rm×n和矩阵Sn×u,可以将矩阵S拆解成多个列向量,即S=(δ1,δ2,……,δu),其中δi表示S的第i列元素,即可以作为第三子向量。此时,一个待乘对应组可以包含稀疏矩阵Rm×n和δi。
[0133] 在一些实施例中,基于计算类型控制数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否用于稀疏矩阵的计算;响应于确定计算类型用于稀疏矩阵的计算,获取待处理数据中压缩的稀疏矩阵,控制数据预处理模块对压缩的稀疏矩阵进行解码,以获取用于计算的稀疏矩阵;以及,将用于计算的稀疏矩阵确定为待计算数据的一部分。作为示例,压缩的稀疏矩阵可以以常见的压缩数据存储格式进行存储,此处不作限制。
[0134] 在一些实施例中,压缩的稀疏矩阵包括以压缩数据格式存储的稀疏矩阵,压缩数据格式包括分块压缩数据格式,压缩的稀疏矩阵包括分块压缩稀疏列矩阵,分块压缩稀疏列矩阵通过对稀疏矩阵以分块压缩数据格式进行压缩和存储确定,包括:将稀疏矩阵分成多个子矩阵;对多个子矩阵中的每个分别进行压缩;以及,确定分块压缩稀疏列矩阵,分块压缩稀疏列矩阵包括经压缩的多个子矩阵。
[0135] 作为示例,分块压缩数据格式包括分块压缩稀疏列矩阵。图11示出了根据本申请的一些实施例的稀疏矩阵预处理的示意图。如图11所示,稀疏矩阵被示例性地分成了16(即4×4)个子稀疏矩阵。对于其中每个子稀疏矩阵,可以通过压缩的数据格式进行压缩和存储。作为示例,压缩的数据格式可以采用CSC(Compressed Sparse Column Matrix)压缩稀疏列格式。
[0136] 在一些实施例中,基于计算类型控制数据预处理模块对待处理数据进行预处理,包括:确定计算类型是否包含卷积计算;响应于计算类型包含卷积计算,获取待处理数据中用于卷积计算的待处理矩阵和相应的卷积核,控制数据预处理模块对卷积核进行第二预处理操作;将待处理矩阵和经过第二预处理操作的卷积核确定为待计算数据的一部分。
[0137] 在一些实施例中,第二预处理操作包括:获取卷积核;确定卷积核的尺寸;以及,通P过添加零元素的方式,将卷积核的尺寸扩张为包含2个元素,其中,P为正整数。
[0138] 作为示例,在进行卷积计算时,其卷积核的尺寸通常不会恰巧为偶数或者2的P次幂,例如在一些应用场景中常使用3×3,5×5,7×7等尺寸的卷积核。而计算阵列往往被配置成接收2的多次幂个输入,可以对其进行第二预处理操作,使得进入可重构乘加阵列的数P P据尺寸合规。具体地,可以将卷积核的尺寸扩张成包含2个元素,其中P的取值满足等式:2‑1 P
<原卷积核尺寸≤2,
[0139] 以及,对扩张后的卷积核中不需要参与计算的数据位置进行“置0”操作。
[0140] 例如,在一些实施例中,当卷积核尺寸为5×5×1时,可以利用包含32个乘法器的计算阵列。鉴于卷积核中有效数据个数仅仅为25,则可以另外加上7个无效数据,并将该7个无效数据全部置0。在又一些示例实施例中,当卷积核尺寸为3×3×1时,可以利用包含16个乘法器的计算阵列。此时可以将卷积核扩展为16个数据,其中添加的7个无效数据可以置0。
[0141] 在又一些示例实施例,当卷积核尺寸为3×3×2时,可以利用包含32个乘法器的计算阵列,其中添加的14个无效数据可以置0。
[0142] 图12示出了根据本申请的一些实施例的计算方法1200的示意性流程图。如图12所示,方法1200包括步骤S1210、步骤S1220以及步骤S1230。
[0143] 在步骤S1210,利用获取模块获取指导计算的计算指令和待计算数据。
[0144] 在步骤S1220,利用重构控制模块,基于计算指令确定计算类型,以及基于计算类型来重构计算资源中的至少部分计算单元的互联关系。
[0145] 在步骤S1230,利用经重构的计算资源对待计算数据进行计算。
[0146] 可见,方法1200利用重构控制模块,可以基于计算指令确定计算类型,并基于计算类型重构计算资源,使得计算资源中的至少部分计算单元的互联关系更加适应于该计算类型。因此,方法1200在用于不同的应用场景时,均具有较高的计算效率和良好的适应性。
[0147] 图13图示了示例系统1300,其包括代表可以实现本文描述的各种方法的一个或多个系统和/或设备的示例计算设备1310。计算设备1310可以是例如服务提供商的服务器、与服务器相关联的设备、片上系统、和/或任何其它合适的计算设备或计算系统。作为示例,上面参照图12描述的计算方法1200可以在系统1300上实现。
[0148] 如图示的示例计算设备1310包括彼此通信耦合的处理系统1311、一个或多个计算机可读介质1312以及一个或多个I/O接口1313。尽管未示出,但是计算设备1310还可以包括系统总线或其他数据和命令传送系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构的任何一个或组合,总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。
[0149] 处理系统1311代表使用硬件执行一个或多个操作的功能。因此,处理系统1311被图示为包括可被配置成处理器、功能块等的硬件元件1314。这可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件1314不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
[0150] 计算机可读介质1312被图示为包括存储器/存储装置1316。存储器/存储装置1316表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置1316可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1316可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1312可以以下面进一步描述的各种其他方式进行配置。
[0151] 一个或多个I/O接口1313代表允许用户使用各种输入设备向计算设备1310输入命令和信息并且可选地还允许使用各种输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置成检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1310可以以下面进一步描述的各种方式进行配置以支持用户交互。
[0152] 计算设备1310还包括应用1316。应用1316可以例如是计算方法1200的软件实例,并且与计算设备1310中的其他元件相组合地实现本文描述的技术。
[0153] 本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述各种可选实现方式中提供的计算方法。
[0154] 本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
[0155] 所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1310访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
[0156] 与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD‑ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
[0157] “计算机可读信号介质”是指被配置成诸如经由网络将指令发送到计算设备1310的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指这样的信号,该信号的特征中的一个或多个被设置或改变,从而将信息编码到该信号中。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
[0158] 如前,硬件元件1314和计算机可读介质1312代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
[0159] 前述的组合也可以用于实现本文的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1314体现的一个或多个指令和/或逻辑。计算设备1310可以被配置成实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1314,可以至少部分地以硬件来实现将模块实现为可由计算设备1310作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备1310和/或处理系统1311)可执行/可操作以实现本文的技术、模块和示例。
[0160] 在各种实施方式中,计算设备1310可以采用各种不同的配置。例如,计算设备1310可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备1310还可以被实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备的移动装置类设备。计算设备1310还可以实现为电视类设备,其包括具有或连接到休闲观看环境中的一般地较大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。
[0161] 本文描述的技术可以由计算设备1310的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。
[0162] 应当理解,为清楚起见,参考不同的功能单元对本申请的实施例进行了描述。然而,将明显的是,在不偏离本申请的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其它功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本申请可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
[0163] 尽管已经结合一些实施例描述了本申请,但是其不旨在被限于在本文中所阐述的特定形式。相反,本申请的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其它元件,并且术语“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的例子被提供,不应该被解释为以任何方式限制权利要求的范围。