用于基于RISC-V加速N:M稀疏网络的方法和装置与流程

未命名 10-08 阅读:99 评论:0

用于基于risc-v加速n:m稀疏网络的方法和装置
技术领域
1.本技术涉及神经网络领域,更具体地,涉及用于基于精简指令集计算机-v(risc-v)加速n:m稀疏网络的方法和装置。


背景技术:

2.针对神经网络模型规模过大的特点,引入了稀疏网络来节省计算量和内存。对于硬件而言,由于硬件在处理随机稀疏网络时效率较低,因此不容易获得与稀疏性相同的增益,因而,提出了一种n:m稀疏网络,n:m稀疏性意味着在每组连续的m值中包含n个0。在这种固定的参数整定模式下,硬件可以在不损失模型精度的情况下利用稀疏性获得线性加速。
3.risc-v是一个基于精简指令集原则的全新开源指令集架构,其中的字母“v”包含两层意思,一是berkeley从risc-i开始设计的第五代指令集架构;二是变化(variation)和向量(vectors)。risc-v是一种较新型的指令集体系结构,在嵌入式设备、边缘网络、数据中心、云等领域被广泛用作控制器或加速器。risc-v还可以用于加速人工智能工作负载。


技术实现要素:

4.本技术提供了一种新的用于加速n:m稀疏网络的机制,使得线性地降低了n:m稀疏网络中卷积的计算成本,实现了利用risc-v获得对n:m稀疏网络的线性加速。
5.根据本公开的实施例,提供了一种用于基于risc-v加速n:m稀疏网络的方法,该方法包括:获得n:m稀疏网络的矩阵a的有效值矩阵a’,其中所述有效值矩阵a’仅包括所述矩阵a的非零值;获得用于指示所述矩阵a的非零值的位置的矩阵掩码,其中所述矩阵掩码的各个行包括多个位置指示符,所述多个位置指示符指示所述矩阵a的相应行的非零值的位置;以及利用所述有效值矩阵a’和所述矩阵掩码执行所述矩阵a与矩阵b的卷积运算。
6.根据本公开的实施例,提供了一种用于基于risc-v加速n:m稀疏网络装置,包括:存储器,以及至少一个处理器,所述至少一个处理器用于:获得n:m稀疏网络的矩阵a的有效值矩阵a’,其中所述有效值矩阵a’仅包括所述矩阵a的非零值;获得用于指示所述矩阵a的非零值的位置的矩阵掩码,其中所述矩阵掩码的各个行包括多个位置指示符,所述多个位置指示符指示所述矩阵a的相应行的非零值的位置;以及利用所述有效值矩阵a’和所述矩阵掩码执行所述矩阵a与矩阵b的卷积运算。
7.根据本公开的实施例,提供了一种计算机可读存储介质,其上存储有指令,其中所述指令当由处理器执行时使得所述处理器执行上述用于基于risc-v加速n:m稀疏网络方法。
附图说明
8.本公开的实施例将通过示例而非限制的方式结合附图中的图来说明,其中相似的附图标记指代相似的元件,并且其中:图1图示了示例处理器和/或soc 100的框图,该处理器和/或soc 100可以具有一
个或多个核并具有集成存储器控制器。
9.图2示出了随机稀疏矩阵和n:m稀疏矩阵的对比示意图。
10.图3示出了利用risc-v矢量指令执行卷积计算的常规操作的示例。
11.图4示出了根据本公开实施例的用于基于risc-v加速n:m稀疏网络的总体操作流程图。
12.图5示出了根据本公开实施例的结构化的稀疏矩阵存储格式的示意图。
13.图6示出了根据本公开实施例的在硬件中合并乘法运算和加法运算的流程示意图。
14.图7示出了根据本公开实施例的一种基于risc-v加速n:m稀疏网络的方法700的流程图。
15.图8是示出根据一些示例实施例的能够从机器可读或计算机可读介质(例如,非暂态机器可读存储介质)读取指令并执行本文讨论的方法中的任意一种或多种方法的组件的框图。
具体实施方式
16.下面将详细描述本技术的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本技术的全面理解。但是,对于本领域技术人员来说很明显的是,本技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本技术的示例来提供对本技术的更好的理解。本技术决不限于下面所提出的任何具体配置,而是在不脱离本技术的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本技术造成不必要的模糊。
17.此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个离散操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖于顺序。特别是,这些操作不需要按照呈现的顺序执行。
18.本文重复使用短语“在实施例中”、“在一种实施例中”和“在一些实施例中”。该短语通常不是指同一实施例;但是,它可能指同一实施例。除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“a或b”和“a/b”表示“(a),(b)或(a和b)”。
19.图1图示了示例处理器和/或soc 100的框图,该处理器和/或soc 100可以具有一个或多个核并具有集成存储器控制器。实线框图示的处理器100具有单个核102(a)、系统代理单元电路110和一组一个或多个接口控制器单元电路116,而可选地添加的虚线框将替代性处理器100图示为具有多个核102(a)-(n)、系统代理单元电路110中的一组一个或多个集成存储器控制单元电路114、专用逻辑108以及一组一个或多个接口控制器单元电路116。
20.处理器100的不同实现方式可以包括:1)cpu,其中专用逻辑108是集成图形和/或科学(吞吐量)逻辑(可以包括一个或多个核,未示出),核102(a)-(n)是一个或多个通用核(例如,通用有序核、通用乱序核、或这两者的组合);2)协处理器,其中核102(a)-(n)是主要针对图形和/或科学(吞吐量)目的的大量专用核;以及3)协处理器,其中核102(a)-(n)是大量的通用有序核。从而,处理器100可以是通用处理器、协处理器或者专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量集成众核
(mic)协处理器(包括30个或更多个核)、嵌入式处理器,等等。该处理器可被实现在一个或多个芯片上。处理器100可以是一个或多个衬底的一部分和/或可以使用多种工艺技术中的任何技术来实现在一个或多个衬底上,这些工艺技术例如互补金属氧化物半导体(complementary metal oxide semiconductor,cmos)、双极cmos(bipolar cmos,bicmos)、p型金属氧化物半导体(p-type metal oxide semiconductor,pmos)、或者n型金属氧化物半导体(n-type metal oxide semiconductor,nmos)。
21.存储器层次体系包括核102(a)-(n)内的一级或多级缓存单元电路104(a)-(n)、一组一个或多个共享缓存单元电路106、以及耦合到该组集成存储器控制器单元电路114的外部存储器(未示出)。该组一个或多个共享缓存单元电路106可以包括一个或多个中间级别缓存,例如第2级(l2)、第3级(l3)、第4级(4)或者其他级别的缓存,例如最后一级缓存(last level cache,llc),和/或这些的组合。虽然在一些示例中接口网络电路112(例如,环形互连)对专用逻辑108(例如,集成图形逻辑)、该组共享缓存单元电路106和系统代理单元电路110提供接口,但替代性示例使用任何数目的公知技术来对这些单元提供接口。在一些示例中,在共享缓存单元电路106中的一个或多个电路与核102(a)-(n)之间维持一致性。在一些示例中,接口控制器单元电路116将这些核耦合到一个或多个其他设备118,例如一个或多个i/o设备、存储装置、一个或多个通信设备(例如,无线网络、有线网络等)等等。
22.在一些示例中,核102(a)-(n)中的一个或多个具有多线程能力。系统代理单元电路110包括对核102(a)-(n)进行协调和操作的那些组件。系统代理单元电路110可以包括例如功率控制单元(power control unit,pcu)电路和/或显示单元电路(未示出)。pcu可以是(或者可以包括)对核102(a)-(n)和/或专用逻辑108(例如,集成图形逻辑)的功率状态进行调节所需的逻辑和组件。显示单元电路用于驱动一个或多个在外部连接的显示器。
23.核102(a)-(n)就指令集体系结构(instruction set architecture,isa)而言可以是同构的。或者,核102(a)-(n)就isa而言也可以是异构的;也就是说,核102(a)-(n)的子集可能能够执行一isa,而其他核可能能够只执行该isa的子集或者能够执行另一isa。处理器核102(a)-(n)可以全部或部分采用risc-v指令集架构。
24.目前,risc-v指令集架构仅可以用于加速一般的人工智能工作负载,而对于如何加速n:m稀疏网络,risc-v类型的处理器未曾考虑。对精细调谐工作流的稀疏性加速仅在具有特定指令和硬件的特定gpu上实现,例如,有研究者提出可以将网络调整到具有2:4的稀疏性,然后将调整后的网络映射到gpu中的特定张量核心。然而,risc-v处理器无法使用这些指令和硬件。本发明提出了一种基于risc-v加速n:m稀疏网络的设计,从而可以利用稀疏性获得线性加速。
25.本发明的目的在于利用risc-v指令集架构获得对n:m稀疏网络的线性加速。为了达到这个目的,通过(1)结构化稀疏矩阵存储格式(转换为有效值和位置指示符)(2)对执行卷积运算的矢量指令序列进行重排序以获得固定格式的指令序列(以触发硬件的模式)(3)合并卷积运算中的乘法和/或求和运算(通过仅计算有效值),本发明在risc-v上加速了n:m稀疏网络,进而线性地降低了n:m稀疏网络中卷积的计算成本。
26.矩阵稀疏性包括随机稀疏性和n:m稀疏性。随机稀疏性表示矩阵中非零值的位置和数量不是固定的,而n:m稀疏性表示每组连续m个值中包含n个零值,例如,2:4稀疏性表示每组连续的4个值中包括2个零值,3:5稀疏性表示每组连续的5个值中包括3个零值。因此,
对于n:m稀疏网络,理论上可以得到m/(m-n)的效率提升。图2示出了随机稀疏矩阵和n:m稀疏矩阵的对比示意图,其中具体示出了2:4稀疏矩阵。如图2所示,对于矩阵a(m, k),在其具有随机稀疏性的情况下,每行k个值中包括的零值的数量和位置是不固定的;在其具有例如2:4稀疏性的情况下,矩阵按列被分为多个组,例如2个组,其中每组中的每行包括4个值,每行的4个值中包括2个零值。
27.图3示出了利用risc-v矢量指令执行卷积运算的常规操作的示例。在图3所示的示例中,矩阵a为2:4稀疏矩阵,矩阵a(m, k)与矩阵b(k, n)执行卷积运算得到矩阵c(k, n)。如图3所示,常规的卷积操作中,矩阵a的第1行与矩阵b的第1列执行乘加运算得到矩阵c第1行第1列的值,然后矩阵a的第1行与矩阵b的第2列执行乘加运算得到矩阵c第1行第2列的值,以此类推。矩阵a的第1行与矩阵b的第1、2列执行乘加运算的具体risc-v矢量指令序列为:vmul.vv v4, v1, v2, v0.tvredsum.vs v6, v5, v4, v0.t
ꢀꢀꢀ
# v5中的值为0;vmul.vv v4, v1, v3, v0.tvredsum.vs v7, v5, v4, v0.t其中,vmul.vv为矢量乘法指令操作符,vredsum.vs为矢量求和指令操作符,寄存器v1用于加载矩阵a中各行的值,寄存器v2、v3分别用于加载矩阵b中各列的值,寄存器v0用于加载位置指示符以作为掩码位,寄存器v4用于存放乘法运算的结果,寄存器v5用于求和运算且其中的所有值均为0,并且寄存器v6、v7分别用于存储相应求和运算的结果。
28.本公开的实施例提供了一种用于加速n:m稀疏网络的基于risc-v的通用模块化设计。图4示出了根据本公开实施例的用于基于risc-v加速n:m稀疏网络的总体操作流程图。具体地,如图4所示,该设计具有三个相互依赖的操作,包括:402,结构化稀疏矩阵的存储格式;404,对执行稀疏矩阵卷积运算的矢量指令序列进行重排序以获得固定格式的指令序列;406,合并稀疏矩阵卷积运算中的乘法和求和运算。
29.如图4所示,在402处,稀疏矩阵a被结构化为结构化的稀疏矩阵存储格式,该存储格式仅存储稀疏矩阵的非零有效值以及用于指示非零有效值的相应位置的位置指示符,其中该位置指示符具有与稀疏矩阵相同的尺寸,在该位置指示符中用1指示稀疏矩阵的相应位置为非零值,用0指示稀疏矩阵的相应位置为0值,例如,在图4的示例中,用于指示矩阵a的单个行的非零值的位置指示符是8位指示符。由于稀疏矩阵a中仅非零有效值将用于卷积运算,因此矩阵b中只有与矩阵a中非零有效值对应位置的数值才是卷积运算中所需的有效数据,通过该位置指示符可以用于从与稀疏矩阵a执行卷积运算的矩阵b中选择用于卷积运算的相应值。
30.图5中示出了根据本公开实施例的结构化的稀疏矩阵存储格式的示意图。利用该结构化的稀疏矩阵存储格式可以节省存储。在图5所示的示例中示出了2:4稀疏矩阵,如图5所示,稀疏矩阵a的尺寸是m*k,结构化的稀疏矩阵a’的尺寸是m*k/2,位置指示符被用作矩阵掩码,其尺寸为m*k。
31.返回参考图4,在将稀疏矩阵a结构化为结构化的稀疏矩阵存储格式后,在404处,对执行稀疏矩阵卷积运算的矢量指令序列进行重排序以获得固定格式的指令序列。具体地,用于执行卷积运算中的乘法运算和加法运算的risc-v矢量指令被重排序为:使得针对
要合并的乘法运算的指令被移动到一起,并且针对要合并的求和运算的指令被移动到一起。例如,如图3所示的矩阵a的第1行与矩阵b的第1、2列执行乘加运算的risc-v矢量指令可以被重排序为如下的固定格式的指令序列:vmul.vv v4, v1, v2, v0.tvmul.vv v4, v1, v3, v0.tvredsum.vs v6, v5, v4, v0.tvredsum.vs v7, v5, v4, v0.t其中,矩阵a的有效值被加载到v1,矩阵b的值按列被加载到v2、v3,并且位置指示符被加载到v0以作为掩码位。利用重排序后的固定格式的指令序列,在随后的计算中要被合并的多个乘法运算和多个加法运算可以被移动到一起,这是鉴于:硬件可以利用相同的源1(v1)、掩码(v0)和目的地(v4)检测连续乘法指令,作为根据v0中的指示符位将多个运算合并为一个运算的提示。求和指令也进行了类似的重新排序。
32.在406处,利用合并的乘加运算,多个连续的乘法和/或求和运算被合并在一个乘法单元和/或求和单元中作为一个运算实现。例如,如图4所示,两个连续的乘法运算被合并在一个乘法单元中作为一个运算实现,这是鉴于零值不参与计算,乘法单元中有空闲的计算单元数据位,可以用于计算后续运算的值。
33.图6示出了根据本公开实施例的在硬件中合并乘法运算和求和运算的流程示意图。如图6所示,硬件将v1(例如,矩阵a第1行的有效值)重复多次(例如两次)以作为乘法运算的第一操作数,根据矩阵掩码中的位置指示符从v2、v3(例如,矩阵b的第1、2列)中选择操作数,将它们放入乘法运算的第二操作数中,例如,在图6所示的示例中,从v2和v3选择的操作数据分别被放入乘法运算第二操作数的前半部分和后半部分,此时,vm位被全部填充为1,这意味着乘法单元中的所有值都是有效的。然后在一个乘法单元中完成多个连续乘法运算,例如,在图6所示的示例中,在一个乘法单元中完成矩阵a的第1行与矩阵b的第1列和第2列的两个乘法运算。此外,多个求和运算也被合并为一个运算,例如,如图6所示,两个乘法运算的结果分别被放入求和单元的前半部分和后半部分,由此在一个求和单元中完成了多个连续求和运算。
34.应该理解,虽然本公开以2:4稀疏矩阵的卷积计算为例进行讨论,但本公开所提供的基于risc-v加速n:m稀疏网络的方法可以用于具有任何其他稀疏性(例如,3:5)的稀疏网路。
35.在一个示例中,针对例如3:5稀疏矩阵,可以类似的获得有效值矩阵和矩阵掩码,并且基于计算单元的数据位宽,根据有效值矩阵和矩阵掩码对卷积计算中的多个乘法和求和运算进行合并。
36.在一个示例中,在计算单位的数据位宽为5的情况下,对于3:5稀疏矩阵,每条计算指令的有效操作数只有2个,为了实现计算加速,即,为了在单次计算中充分利用计算资源,可以从连续的三条计算指令中得到5个有效操作数以填满5个计算单元从而作为一次运算完成,而第三条指令中剩余的一个有效操作数可以与后续的两个计算指令中的4个有效操作数重新填满5个计算单元,以作为下一次运算完成。在一个示例中,可以从连续两条计算指令中取得4个有效操作数作为一次运算完成。
37.图7示出了根据本公开实施例的一种基于risc-v加速n:m稀疏网络的方法700的流
程图。方法700可以由支持risc-v的处理器执行。方法700可以包括步骤s702、s704和s706。然而,在一些实施例中,方法700可以包括更多或更少的不同的步骤,本公开不限于此。
38.在步骤s702中,获得n:m稀疏网络的矩阵a的有效值矩阵a’,其中有效值矩阵a’仅包括矩阵a的非零值。在一个实施例中,n:m稀疏网络的稀疏性为2:4。在另一实施例中,n:m稀疏网络的稀疏性为3:5。在其他实施例中,n:m稀疏网络的稀疏性可以取任何其他比值,本公开不限于此。
39.在步骤s704中,获得用于指示矩阵a的非零值的位置的矩阵掩码,其中该矩阵掩码的各个行包括多个位置指示符以指示矩阵a的相应行的非零值的位置。矩阵掩码与矩阵a的尺寸相同,并且在矩阵掩码中,1表示矩阵a中的相应位置为非零值,0表示矩阵a中的相应位置为零值。
40.在步骤s706中,利用有效值矩阵a’和矩阵掩码执行矩阵a与矩阵b的卷积运算。步骤s706还可以包括:选择有效值矩阵a’的各个行作为卷积运算的卷积乘法的第一操作数;以及根据矩阵掩码从矩阵b中逐列选择卷积乘法的第二操作数。
41.在本公开的实施例中,来自卷积运算的两个或更多个连续的单次乘法和被合并为一次乘法运算。
42.在本公开的实施例中,来自卷积运算的多个连续的单次求和运算可以被合并为一次求和运算。
43.在本公开的实施例中,鉴于矩阵a中的零值不参与卷积运算,用于执行矩阵a的卷积运算的乘法单元中的空闲的乘法器可以被用于执行后续的一个或多个单次乘法计算。
44.在本公开的实施例中,鉴于矩阵a中的零值不参与卷积运算,用于执行矩阵a的卷积运算的单次乘法计算的乘法单元中的空闲的乘法器可以被用于执行该单次乘法计算后续的一个单次乘法计算中的部分有效值的计算。
45.在本公开的实施例中,矩阵a中的单个行与矩阵b中的多个列的多个乘法运算可以合并为一次运算在乘法单元中实现。
46.在本公开的实施例中, 在乘法单元中将矩阵a中的多个行与矩阵b中的多个列的多个乘法计算可以合并为一次运算。
47.在本公开的实施例中,根据计算单元的数据位宽,确定要合并的乘法计算和/或求和计算的数量。
48.在本公开的实施例中,根据计算单元的数据位宽,确定满足计算单元数据位宽的有效值数量,从而确定要合并的乘法计算和/或求和计算的数量。
49.在本公开的实施例中,要在计算单元中合并的乘法计算和/或求和计算可以包括用于单次乘法计算和/或求和计算的部分有效值。
50.在本公开的实施例中,在计算单元中可以合并矩阵a的单个行的部分有效值的计算。
51.在一个示例中,在乘法单元中,矩阵a的单个行中的非零值被按顺序重复多次以作为乘法运算的第一操作数;并且根据矩阵掩码中与矩阵a的该行对应的位置指示符,从矩阵b中逐列按顺序选择多个列的有效值作为乘法运算的第二操作数,其中,多个列的有效值为各列中用于与矩阵a的该行的非零值相乘的值。
52.在本公开的实施例中,在用于执行卷积运算的求和单元中将卷积运算中的多个连
续的单次求和计算合并为一次求和运算。
53.在本公开的实施例中,对用于执行卷积运算的risc-v矢量指令进行重新排序以触发硬件优化卷积运算。在本公开的实施例中,用于执行卷积运算的risc-v矢量指令被重排序为:指示risc-v处理器将矩阵a和矩阵b的卷积运算中的多个连续的单次乘法和/或求和计算合并为一次乘法和/或求和计算。
54.在本公开的实施例中,用于执行卷积运算的risc-v矢量指令被重排序为:指示所述risc-v处理器将矩阵a中的一个或多个行与矩阵b中的相应列的多个连续的单次乘法计算和/或多个连续的单次求和计算合并为一次乘法和/或求和计算。
55.在一个示例中,在用于执行卷积运算的乘法单元中,矩阵a中的单个行与矩阵b中的两个列的两个单次乘法计算被合并为一次乘法计算。
56.在一个示例中,在乘法单元中,矩阵a的单个行的非零值被重复2次以作为乘法计算的第一操作数;并且根据矩阵掩码中与矩阵a的单个行对应的位置指示符,从矩阵b中逐列按顺序选择两个列的有效值作为乘法计算的第二操作数,其中,有效值为各列中用于与矩阵a的行的非零值相乘的值。
57.本公开实施例消除了硬件中所有与零值相关的计算,从而使得卷积的理论效率具有m/(m-n)的改进。通过在resnet 32的卷积核(a(100, 100)),w(3, 3))上对cifar10以2:4稀疏性进行实验来评估本公开的效率提升。实验结果如表1所示。
58.表1
59.从表1可以看出,本公开提出的方法相比于原始方法在mac操作和总操作方面,对计算资源的使用量都有显著的降低。
60.图8是示出根据一些示例实施例的能够从机器可读或计算机可读介质(例如,非暂态机器可读存储介质)读取指令并执行本文讨论的方法中的任意一种或多种方法的组件的框图。具体地,图8示出了硬件资源800的示意图,硬件资源800包括一个或多个处理器(或处理器核)810、一个或多个存储器/存储设备820、和一个或多个通信资源830,其中,这些处理器、存储器/存储设备、和通信资源中的每一者可以经由总线840或其他接口电路通信地耦合。对于利用节点虚拟化(例如,网络功能虚拟化(nfv))的实施例,可以执行管理程序802以提供一个或多个网络切片/子切片的执行环境从而利用硬件资源800。
61.处理器810可以包括例如,处理器812和处理器814。处理器810可以是例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、诸如基带处理器的数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、射频集成电路(rfic)、另一处理器(包括本文讨论的那些处理器)、或其任何合适的组合。
62.存储器/存储设备820可以包括主存储器、磁盘存储设备、或其任何适当组合。存储器/存储设备820可以包括但不限于任何类型的易失性、非易失性、或半易失性存储器,例如,动态随机存取存储器(dram)、静态随机存取存储器(sram)、可擦除可编程只读存储器
(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、固态存储器等。
63.通信资源830可包括互连或网络接口控制器、组件、或其他合适的设备,以经由网络808与一个或多个外围设备804或一个或多个数据库806或其他网络元件通信。例如,通信资源830可以包括有线通信组件(例如,用于经由usb、以太网等进行耦合)、蜂窝通信组件、近场通信(nfc)组件、bluetooth
®
(或bluetooth
®
低能量)组件、wi-fi
®
组件、和其他通信组件。
64.指令850可以包括软件、程序、应用程序、小程序、应用程序、或其他可执行代码,用于使处理器810中的至少任意一个处理器执行本文讨论的任意一种或多种方法。指令850可以全部或部分驻留在处理器810(例如,在处理器的高速缓存中)、存储器/存储设备820、或其任何适当组合中的至少一者内。此外,指令850的任意部分可以从外围设备804或数据库806的任意组合传送到硬件资源800。因此,处理器810的存储器、存储器/存储设备820、外围设备804、和数据库806是计算机可读和机器可读介质的示例。
65.一些示例可以利用制品或者至少一个计算机可读介质来实现或者被实现为制品或者至少一个计算机可读介质。计算机可读介质可包括非暂态存储介质来存储逻辑。在一些示例中,非暂态存储介质可包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可改写存储器,等等。在一些示例中,逻辑可包括各种软件元素,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任意组合。
66.根据一些示例,计算机可读介质可包括非暂态存储介质来存储或维护指令,这些指令当被机器、计算设备或系统执行时,使得该机器、计算设备或系统执行根据描述的示例的方法和/或操作。指令可包括任何适当类型的代码,例如源代码、经编译的代码、经解释的代码,可执行代码、静态代码、动态代码,等等。可根据预定的计算机语言、方式或语法来实现指令,用于指示机器、计算设备或系统执行特定的功能。可利用任何适当的高级别的、低级别的、面向对象的、视觉的、编译的和/或解释的编程语言来实现指令。
67.至少一个示例的一个或多个方面可由存储在至少一个机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些指令当被机器、计算设备或系统读取时,使得该机器、计算设备或系统制作逻辑来执行本文描述的技术。这种被称为“ip核”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
68.短语“一个示例”或者“一示例”的出现不一定全都指的是同一示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或类似方面相组合,无论这些方面是否是针对同一附图或元素来描述的。附图中描绘的块功能的分割、省略或包括并不推断出用于实现这些功能的硬件组件、电路、软件和/或元件在实施例中一定会被分割、省略或包括。
69.可利用表述“耦合”和“连接”以及其衍生词来描述一些示例。这些术语并不一定打算是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可指示出两个或更多个元素与彼此发生直接物理或电气接触。然而,术语“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。
70.术语“第一”、“第二”之类的在本文中并不表示任何顺序、数量或重要性,而是用来区分一个元素与另一个元素。本文的术语“一”并不表示对数量的限制,而是表示至少一个被提及的项目的存在。本文提到信号时使用的术语“断言”指的是该信号的一种状态,在这种状态下,信号是有效的,并且该状态可以通过向该信号施加任何逻辑电平(无论是逻辑0还是逻辑1)来实现。术语“随后”或“之后”可以指紧随在后或者跟随在某个或某些其他事件之后。根据替代性实施例,也可以执行其他步骤序列。此外,取决于特定的应用,可以添加或去除额外的步骤。可以使用变化的任意组合,并且受益于本公开的本领域普通技术人员将会理解其许多变化、修改和替代性实施例。
71.除非另有具体声明,否则诸如短语“x、y或z中的至少一者”这样的析取语言在上下文内被理解为一般用来陈述一项目、术语等等可以是x、y或z,或者其任意组合(例如,x、y和/或z)。从而,这种析取语言一般不打算也不应当暗示某些实施例要求至少一个x、至少一个y或者至少一个z的每一者存在。此外,除非另有具体声明,否则诸如短语“x、y和z中的至少一者”这样的连接性语言也应当被理解为指x、y、z或者其任意组合,包括“x、y和/或z”。
72.下面提供本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可包括下面描述的示例中的任何一个或多个,以及其任意组合。

技术特征:
1.一种用于基于risc-v加速n:m稀疏网络的方法,包括:获得n:m稀疏网络的矩阵a的有效值矩阵a’,其中所述有效值矩阵a’仅包括所述矩阵a的非零值;获得用于指示所述矩阵a的非零值的位置的矩阵掩码,其中所述矩阵掩码的各个行包括多个位置指示符,所述多个位置指示符指示所述矩阵a的相应行的非零值的位置;以及利用所述有效值矩阵a’和所述矩阵掩码执行所述矩阵a与矩阵b的卷积运算。2.根据权利要求1所述的方法,还包括:将来自所述卷积运算的多个连续的单次乘法和/或求和计算合并为一次乘法和/或求和计算。3. 根据权利要求1所述的方法, 其中,利用所述有效值矩阵a’和所述矩阵掩码执行所述矩阵a与所述矩阵b的卷积运算包括:选择所述有效值矩阵a’的各个行作为所述卷积运算的卷积乘法的第一操作数;根据所述矩阵掩码从所述矩阵b中逐列选择所述卷积乘法的第二操作数。4.根据权利要求3所述的方法,还包括:将用于执行所述卷积运算的单次乘法计算的乘法单元中的空闲的乘法器用于执行所述单次乘法计算后续的一个或多个单次乘法计算。5.根据权利要求4所述的方法,还包括:在所述乘法单元中将所述矩阵a中的一个或多个行与所述矩阵b中的相应列的多个乘法计算合并为一次计算。6. 根据权利要求5所述的方法,还包括:在所述乘法单元中,将所述矩阵a的单个行中的非零值按顺序重复多次以作为所述乘法计算的第一操作数;并且根据所述矩阵掩码中与所述矩阵a的所述行对应的所述位置指示符,从所述矩阵b中逐列按顺序选择多个列的有效值作为所述乘法计算的第二操作数,其中,所述多个列的有效值为各列中用于与所述矩阵a的所述行的非零值相乘的值。7.根据权利要求1所述的方法,还包括:对用于执行卷积运算的risc-v矢量指令进行重新排序以触发硬件优化所述卷积运算。8.根据权利要求7所述的方法,其中,所述用于执行卷积运算的risc-v矢量指令被重排序为:指示risc-v处理器将所述矩阵a和所述矩阵b的卷积运算中的两个或更多个连续的单次乘法和/或求和计算合并为一次乘法和/或求和计算。9.一种基于risc-v的处理器,包括:至少一个处理器核,所述至少一个处理器核用于:获得n:m稀疏网络的矩阵a的有效值矩阵a’,其中所述有效值矩阵a’仅包括所述矩阵a的非零值;获得用于指示所述矩阵a的非零值的位置的矩阵掩码,其中所述矩阵掩码的各个行包括多个位置指示符,所述多个位置指示符指示所述矩阵a的相应行的非零值的位置;以及利用所述有效值矩阵a’和所述矩阵掩码执行所述矩阵a与矩阵b的卷积运算。10.根据权利要求9所述的处理器,所述至少一个处理器核还用于:将来自所述卷积运算的多个连续的单次乘法和/或求和计算合并为一次乘法和/或求
和计算。11.根据权利要求9所述的处理器,所述至少一个处理器核还用于:选择所述有效值矩阵a’的各个行作为所述卷积运算的卷积乘法的第一操作数;根据所述矩阵掩码从所述矩阵b中逐列选择所述卷积乘法的第二操作数。12.根据权利要求11所述的处理器,所述至少一个处理器核还用于:将用于执行所述卷积运算的单次乘法计算的乘法单元中的空闲的乘法器用于执行所述单次乘法计算后续的一个或多个单次乘法计算。13.根据权利要求12所述的处理器,所述至少一个处理器核还用于:在所述乘法单元中将所述矩阵a中的一个或多个行与所述矩阵b中的相应列的多个乘法计算合并为一次计算。14.根据权利要求9所述的处理器,所述至少一个处理器核还用于:对用于执行卷积运算的risc-v矢量指令进行重新排序以触发硬件优化所述卷积运算。15.一种计算机可读存储介质,其上存储有指令,其中所述指令当由处理器执行时使得所述处理器执行根据权利要求1-8中任一项所述的用于基于risc-v加速n:m稀疏网络的方法。

技术总结
本申请涉及用于基于RISC-V加速N:M稀疏网络的方法和装置。该方法包括:获得N:M稀疏网络的矩阵A的有效值矩阵A’,其中有效值矩阵A’仅包括矩阵A的非零值;获得用于指示矩阵A的非零值的位置的矩阵掩码,其中矩阵掩码的各个行包括多个位置指示符以指示矩阵A的相应行的非零值的位置;以及利用有效值矩阵A’和矩阵掩码执行矩阵A与矩阵B的卷积运算。本发明在RISC-V上加速了N:M稀疏网络,进而线性地降低了N:M稀疏网络中卷积的计算成本。网络中卷积的计算成本。网络中卷积的计算成本。


技术研发人员:梁华岳 姚安邦 张博为 张新欣 吕剑桥 吴向斌 郑珊珊 张森杰
受保护的技术使用者:英特尔(中国)研究中心有限公司
技术研发日:2023.08.28
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐