计算核、加速器、计算方法、装置、设备、介质及系统转让专利

申请号 : CN202310114640.4

文献号 : CN115860080B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李仁刚杨宏斌董刚蒋东东曹其春胡克坤

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了计算机技术领域内的一种计算核、加速器、计算方法、装置、设备、介质及系统。本申请能够并行计算第一矩阵中的N个行数据或N个列数据与第二矩阵中的N个列数据或N个行数据的矩阵乘结果,因此可一次性得到N个最终矩阵乘结果,提高了计算效率和速度;计算核也无需暂存中间结果,节约了片上资源。在得到矩阵乘结果后,本申请能够按照该矩阵乘结果参与下一矩阵乘操作中的每一轮计算时的参与方式确定将该矩阵乘结果存入哪个存储器,由此可实现:使矩阵乘结果在存储器中的存储格式与其参与计算时的输出格式一致,便于在连续的计算过程中顺序读取数据,而无需进行矩阵转置,因此还能降低访存的时间开销,进一步提高效率。

权利要求 :

1.一种计算核,其特征在于,包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件;

所述第一缓存器件,用于根据接收到的计算指令从外部的第一存储器中加载参与图神经网络中的矩阵乘操作的第一矩阵中的数据;

所述第二缓存器件,用于根据所述计算指令从外部的第二存储器中加载参与当前矩阵乘操作的第二矩阵中的数据;

所述矩阵乘计算器件,用于按照所述计算指令设定的并行数N并行计算所述第一矩阵中的N个行数据或N个列数据与所述第二矩阵中的N个列数据或N个行数据的矩阵乘结果;

所述输出器件,用于暂存所述矩阵乘结果,在所述矩阵乘结果的数据量满足预设写条件时,将所述矩阵乘结果写入所述计算指令设定的所述第一存储器或所述第二存储器;

其中,所述第二存储器的传输带宽大于所述第一存储器;若所述矩阵乘结果参与当前矩阵乘操作在所述图神经网络中的下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则将所述矩阵乘结果存入所述第二存储器;否则,将所述矩阵乘结果存入所述第一存储器;所述计算指令针对所述图神经网络中的每一矩阵乘操作生成,所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置。

2.根据权利要求1所述的计算核,其特征在于,所述第一缓存器件具体用于:在所述矩阵乘计算器件计算所述矩阵乘结果的过程中,从所述第一存储器中加载参与当前矩阵乘操作的第一矩阵中的剩余未加载数据;

相应地,所述第二缓存器件具体用于:在所述矩阵乘计算器件计算所述矩阵乘结果的过程中,从所述第二存储器中加载参与当前矩阵乘操作的第二矩阵中的剩余未加载数据。

3.根据权利要求1所述的计算核,其特征在于,所述第一缓存器件利用乒乓方式加载所述第一矩阵中的数据。

4.根据权利要求1所述的计算核,其特征在于,所述第二缓存器件利用先入先出队列加载所述第二矩阵中的数据。

5.根据权利要求1至4任一项所述的计算核,其特征在于,所述矩阵乘计算器件包括:至少一个计算单元,所述计算单元利用乘法器和累加器构成且每次计算的数据量等于N。

6.一种加速器,其特征在于,包括:控制器、第一存储器、传输带宽大于所述第一存储器的第二存储器、以及如权利要求1至5任一项所述的计算核;

其中,所述控制器与所述第一存储器、所述第二存储器、所述计算核分别连接;所述计算核与所述第一存储器、所述第二存储器分别连接;

所述控制器,用于将图神经网络中的矩阵乘操作的计算指令发送至所述第一存储器、所述第二存储器和所述计算核;

所述第一存储器,用于根据所述计算指令以DMA方式获取并存储参与当前矩阵乘操作的第一矩阵;

所述第二存储器,用于根据所述计算指令以DMA方式获取并存储参与当前矩阵乘操作的第二矩阵;

所述计算核,用于根据所述计算指令计算所述第一矩阵和所述第二矩阵的矩阵乘结果。

7.根据权利要求6所述的加速器,其特征在于,所述计算核有多个。

8.根据权利要求7所述的加速器,其特征在于,所述控制器还用于:控制多个计算核执行同一矩阵乘操作。

9.根据权利要求8所述的加速器,其特征在于,所述控制器具体用于:在控制多个计算核执行同一矩阵乘操作时,使每一计算核在同一计算周期内计算所述第一矩阵中的相同行数据或相同列数据与所述第二矩阵中的不同列数据或不同行数据的矩阵乘结果。

10.根据权利要求8所述的加速器,其特征在于,所述控制器具体用于:在控制多个计算核执行同一矩阵乘操作时,使每一计算核在同一计算周期内分别计算所述第一矩阵中的不同列数据或不同行数据与所述第二矩阵中的相同列数据或相同行数据的矩阵乘结果。

11.根据权利要求7所述的加速器,其特征在于,所述控制器还用于:控制不同计算核在同一计算周期内执行不同矩阵乘操作。

12.根据权利要求6所述的加速器,其特征在于,所述计算指令用于实现图神经网络中的任意矩阵乘操作。

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

针对图神经网络中的每一矩阵乘操作生成计算指令;所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;

将所述计算指令发送至加速器,以使所述加速器对所述图神经网络中的矩阵乘操作进行加速计算;所述加速器为权利要求6至12任一项所述的加速器。

14.根据权利要求13所述的方法,其特征在于,所述将所述计算指令发送至加速器,包括:按照所述图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至所述加速器。

15.根据权利要求13所述的方法,其特征在于,还包括:根据所述加速器中的计算核的资源配置确定并行数N的取值;

相应地,所述根据所述加速器中的计算核的资源配置确定并行数N的取值,包括:

3 2

基于所述计算核的资源配置构建约束公式:Count≥N/2、BW≥DW×f×N ;其中,Count表示所述计算核的计算资源数量,BW表示所述计算核的访存带宽,DW表示所述计算核的数据位宽,f为所述计算核的计算时钟频率;

基于所述约束公式确定N的取值。

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

生成模块,用于针对图神经网络中的每一矩阵乘操作生成计算指令;所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;

发送模块,用于将所述计算指令发送至加速器,以使所述加速器对所述图神经网络中的矩阵乘操作进行加速计算;所述加速器为权利要求6至12任一项所述的加速器。

17.根据权利要求16所述的装置,其特征在于,还包括:配置模块,用于根据所述加速器中的计算核的资源配置确定并行数N的取值;

相应地,所述配置模块具体用于:

3 2

基于所述计算核的资源配置构建约束公式:Count≥N/2、BW≥DW×f×N ;其中,Count表示所述计算核的计算资源数量,BW表示所述计算核的访存带宽,DW表示所述计算核的数据位宽,f为所述计算核的计算时钟频率;

基于所述约束公式确定N的取值。

18.一种电子设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序,以实现如权利要求13至15任一项所述的方法。

19.一种可读存储介质,其特征在于,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求13至15任一项所述的方法。

20.一种计算系统,其特征在于,包括:服务器以及至少一个如权利要求6至12任一项所述的加速器。

说明书 :

计算核、加速器、计算方法、装置、设备、介质及系统

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种计算核、加速器、计算方法、装置、设备、介质及系统。

背景技术

[0002] 目前,对于图神经网络中的矩阵乘,现有的计算器件可以采用矩阵分块操作进行矩阵乘操作,但此方式需要将大量的中间结果暂存到计算器件之外,计算器件在进行后续计算时再读回至片内进行累加,增加了许多额外的数据搬移操作,会浪费计算资源,降低计算速度。
[0003] 因此,如何提高图神经网络中矩阵乘操作的计算速度和计算效率,是本领域技术人员需要解决的问题。

发明内容

[0004] 有鉴于此,本申请的目的在于提供一种计算核、加速器、计算方法、装置、设备、介质及系统,以提高图神经网络中矩阵乘操作的计算速度和计算效率。其具体方案如下:
[0005] 第一方面,本申请提供了一种计算核,包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件;
[0006] 所述第一缓存器件,用于根据接收到的计算指令从外部的第一存储器中加载参与图神经网络中的当前矩阵乘操作的第一矩阵中的数据;
[0007] 所述第二缓存器件,用于根据所述计算指令从外部的第二存储器中加载参与当前矩阵乘操作的第二矩阵中的数据;
[0008] 所述矩阵乘计算器件,用于按照所述计算指令设定的并行数N并行计算所述第一矩阵中的N个行数据或N个列数据与所述第二矩阵中的N个列数据或N个行数据的矩阵乘结果;
[0009] 所述输出器件,用于暂存所述矩阵乘结果,在所述矩阵乘结果的数据量满足预设写条件时,将所述矩阵乘结果写入所述计算指令设定的所述第一存储器或所述第二存储器;
[0010] 其中,所述第二存储器的传输带宽大于所述第一存储器;若所述矩阵乘结果参与下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则所述计算指令设定有所述第二存储器;否则,所述计算指令设定有所述第一存储器。
[0011] 可选地,所述第一缓存器件具体用于:在所述矩阵乘计算器件计算所述矩阵乘结果的过程中,从所述第一存储器中加载参与当前矩阵乘操作的第一矩阵中的剩余未加载数据;
[0012] 相应地,所述第二缓存器件具体用于:在所述矩阵乘计算器件计算所述矩阵乘结果的过程中,从所述第二存储器中加载参与当前矩阵乘操作的第二矩阵中的剩余未加载数据。
[0013] 可选地,所述第一缓存器件利用乒乓方式加载所述第一矩阵中的数据。
[0014] 可选地,所述第二缓存器件利用先入先出队列加载所述第二矩阵中的数据。
[0015] 可选地,所述矩阵乘计算器件包括:至少一个计算单元,所述计算单元利用乘法器和累加器构成且每次计算的数据量等于N。
[0016] 第二方面,本申请提供了一种加速器,包括:控制器、第一存储器、传输带宽大于所述第一存储器的第二存储器、以及前文所述的计算核;
[0017] 其中,所述控制器与所述第一存储器、所述第二存储器、所述计算核分别连接;所述计算核与所述第一存储器、所述第二存储器分别连接;
[0018] 所述控制器,用于将图神经网络中的矩阵乘操作的计算指令发送至所述第一存储器、所述第二存储器和所述计算核;
[0019] 所述第一存储器,用于根据所述计算指令以DMA方式获取并存储参与当前矩阵乘操作的第一矩阵;
[0020] 所述第二存储器,用于根据所述计算指令以DMA方式获取并存储参与当前矩阵乘操作的第二矩阵;
[0021] 所述计算核,用于根据所述计算指令计算所述第一矩阵和所述第二矩阵的矩阵乘结果。
[0022] 可选地,所述计算核有多个。
[0023] 可选地,所述控制器还用于:控制多个计算核执行同一矩阵乘操作。
[0024] 可选地,所述控制器具体用于:在控制多个计算核执行同一矩阵乘操作时,使每一计算核在同一计算周期内计算所述第一矩阵中的相同行数据或相同列数据与所述第二矩阵中的不同列数据或不同行数据的矩阵乘结果。
[0025] 可选地,所述控制器具体用于:在控制多个计算核执行同一矩阵乘操作时,使每一计算核在同一计算周期内分别计算所述第一矩阵中的不同列数据或不同行数据与所述第二矩阵中的相同列数据或相同行数据的矩阵乘结果。
[0026] 可选地,所述控制器还用于:控制不同计算核在同一计算周期内执行不同矩阵乘操作。
[0027] 可选地,所述计算指令用于实现图神经网络中的任意矩阵乘操作。
[0028] 可选地,计算核包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件;
[0029] 所述第一缓存器件,用于根据接收到的计算指令从外部的第一存储器中加载参与图神经网络中的当前矩阵乘操作的第一矩阵中的数据;
[0030] 所述第二缓存器件,用于根据所述计算指令从外部的第二存储器中加载参与当前矩阵乘操作的第二矩阵中的数据;
[0031] 所述矩阵乘计算器件,用于按照所述计算指令设定的并行数N并行计算所述第一矩阵中的N个行数据或N个列数据与所述第二矩阵中的N个列数据或N个行数据的矩阵乘结果;
[0032] 所述输出器件,用于暂存所述矩阵乘结果,在所述矩阵乘结果的数据量满足预设写条件时,将所述矩阵乘结果写入所述计算指令设定的所述第一存储器或所述第二存储器;
[0033] 其中,所述第二存储器的传输带宽大于所述第一存储器;若所述矩阵乘结果参与下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则所述计算指令设定有所述第二存储器;否则,所述计算指令设定有所述第一存储器。
[0034] 可选地,所述第一缓存器件具体用于:在所述矩阵乘计算器件计算所述矩阵乘结果的过程中,从所述第一存储器中加载参与当前矩阵乘操作的第一矩阵中的剩余未加载数据;
[0035] 相应地,所述第二缓存器件具体用于:在所述矩阵乘计算器件计算所述矩阵乘结果的过程中,从所述第二存储器中加载参与当前矩阵乘操作的第二矩阵中的剩余未加载数据。
[0036] 可选地,所述第一缓存器件利用乒乓方式加载所述第一矩阵中的数据。
[0037] 可选地,所述第二缓存器件利用先入先出队列加载所述第二矩阵中的数据。
[0038] 可选地,所述矩阵乘计算器件包括:至少一个计算单元,所述计算单元利用乘法器和累加器构成且每次计算的数据量等于N。
[0039] 第三方面,本申请提供了一种计算方法,包括:
[0040] 针对图神经网络中的每一矩阵乘操作生成计算指令;所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;
[0041] 将所述计算指令发送至前文所述的加速器,以使所述加速器对所述图神经网络进行加速计算。
[0042] 可选地,所述将所述计算指令发送至前文所述的加速器,包括:
[0043] 按照所述图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至所述加速器。
[0044] 可选地,还包括:
[0045] 根据所述加速器中的计算核的资源配置确定并行数N的取值。
[0046] 可选地,所述根据所述加速器中的计算核的资源配置确定并行数N的取值,包括:
[0047] 基于所述计算核的资源配置构建约束公式:Count≥N3/2、BW≥DW×f×N2;其中,Count表示所述计算核的计算资源数量,BW表示所述计算核的访存带宽,DW表示所述计算核的数据位宽,f为所述计算核的计算时钟频率;
[0048] 基于所述约束公式确定N的取值。
[0049] 第四方面,本申请提供了一种计算装置,包括:
[0050] 生成模块,用于针对图神经网络中的每一矩阵乘操作生成计算指令;所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;
[0051] 发送模块,用于将所述计算指令发送至前文所述的加速器,以使所述加速器对所述图神经网络进行加速计算。
[0052] 可选地,发送模块具体用于:
[0053] 按照图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至加速器。
[0054] 可选地,还包括:
[0055] 配置模块,用于根据加速器中的计算核的资源配置确定并行数N的取值。
[0056] 可选地,配置模块具体用于:
[0057] 基于计算核的资源配置构建约束公式:Count≥N3/2、BW≥DW×f×N2;其中,Count表示计算核的计算资源数量,BW表示计算核的访存带宽,DW表示计算核的数据位宽,f为计算核的计算时钟频率;
[0058] 基于约束公式确定N的取值。
[0059] 第五方面,本申请提供了一种电子设备,包括:
[0060] 存储器,用于存储计算机程序;
[0061] 处理器,用于执行所述计算机程序,以实现前述公开的计算方法。
[0062] 第六方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的计算方法。
[0063] 第七方面,本申请提供了一种计算系统,包括:服务器以及至少一个前述公开的加速器。
[0064] 通过以上方案可知,本申请提供了一种计算核,包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件;所述第一缓存器件,用于根据接收到的计算指令从外部的第一存储器中加载参与图神经网络中的当前矩阵乘操作的第一矩阵中的数据;所述第二缓存器件,用于根据所述计算指令从外部的第二存储器中加载参与当前矩阵乘操作的第二矩阵中的数据;所述矩阵乘计算器件,用于按照所述计算指令设定的并行数N并行计算所述第一矩阵中的N个行数据或N个列数据与所述第二矩阵中的N个列数据或N个行数据的矩阵乘结果;所述输出器件,用于暂存所述矩阵乘结果,在所述矩阵乘结果的数据量满足预设写条件时,将所述矩阵乘结果写入所述计算指令设定的所述第一存储器或所述第二存储器;其中,所述第二存储器的传输带宽大于所述第一存储器;若所述矩阵乘结果参与下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则所述计算指令设定有所述第二存储器;否则,所述计算指令设定有所述第一存储器。
[0065] 可见,本申请提供的计算核能够并行计算第一矩阵中的N个行数据或N个列数据与第二矩阵中的N个列数据或N个行数据的矩阵乘结果,因此可一次性得到N个最终矩阵乘结果,提高了计算效率和速度;计算核也无需暂存中间结果,节约了片上资源。在得到矩阵乘结果后,本申请能够按照该矩阵乘结果参与下一矩阵乘操作中的每一轮计算时的参与方式确定将该矩阵乘结果存入哪个存储器,具体的,当矩阵乘结果参与下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则将该矩阵乘结果存入第二存储器;否则,该矩阵乘结果存入第一存储器。由此可实现:使矩阵乘结果在存储器中的存储格式与其参与计算时的输出格式一致,便于在连续的计算过程中顺序读取数据,也无需进行矩阵转置,因此还能降低访存的时间开销,进一步提高效率。在满足预设写条件时,再写入矩阵乘结果,可降低写入次数,提升写入效率和带宽利用率。
[0066] 相应地,本申请提供的一种加速器、计算方法、装置、设备、介质及系统,也同样具有上述技术效果。

附图说明

[0067] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0068] 图1为本申请公开的一种计算核示意图;
[0069] 图2为本申请公开的一种计算单元结构示意图;
[0070] 图3为本申请公开的一种加速器结构示意图;
[0071] 图4为本申请公开的另一种加速器结构示意图;
[0072] 图5为本申请公开的第三种加速器结构示意图;
[0073] 图6为本申请公开的一种计算方法流程图;
[0074] 图7为本申请公开的一种数据并行输入示意图;
[0075] 图8为本申请公开的一种4*4*4的PE阵列示意图;
[0076] 图9本申请公开的一种写入数据连续存储示意图;
[0077] 图10为本申请公开的一种矩阵乘计算流程示意图;
[0078] 图11为本申请公开的一种电子设备示意图。

具体实施方式

[0079] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0080] 目前,现有的计算器件可以采用矩阵分块操作进行矩阵乘操作,但此方式需要将大量的中间结果暂存到计算器件之外,计算器件在进行后续计算时再读回至片内进行累加,增加了许多额外的数据搬移操作,会浪费计算资源,降低计算速度。为此,本申请提供了一种方案,能够提高图神经网络中矩阵乘操作的计算速度和计算效率。
[0081] 参见图1所示,本申请实施例公开了一种计算核,包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件。
[0082] 其中,第一缓存器件,用于根据接收到的计算指令从外部的第一存储器中加载参与图神经网络中的当前矩阵乘操作的第一矩阵中的数据;第二缓存器件,用于根据计算指令从外部的第二存储器中加载参与当前矩阵乘操作的第二矩阵中的数据;矩阵乘计算器件,用于按照计算指令设定的并行数N并行计算第一矩阵中的N个行数据或N个列数据与第二矩阵中的N个列数据或N个行数据的矩阵乘结果;输出器件,用于暂存矩阵乘结果,在矩阵乘结果的数据量满足预设写条件时,将矩阵乘结果写入计算指令设定的第一存储器或第二存储器。其中,一个行数据为:矩阵中的一行数据;一个列数据为:矩阵中的一列数据。
[0083] 其中,第二存储器(如HBM)的传输带宽大于第一存储器(如DDR);若矩阵乘结果参与下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则计算指令设定有第二存储器;否则,计算指令设定有第一存储器。HBM(High Bandwidth Memory)是一种适用于高带宽的CPU/GPU内存芯片。DDR(Double Data Rate,双倍速率同步动态随机存储器)相比与HBM,适用带宽较低。
[0084] 其中,计算指令用于实现图神经网络中的任一矩阵乘操作,其中的并行数N的取值3
根据计算核的资源配置确定。具体的,基于计算核的资源配置构建约束公式:Count≥N/2、
2
BW≥DW×f×N ;其中,Count表示计算核的计算资源数量,BW表示计算核的访存带宽,DW表示计算核的数据位宽,f为计算核的计算时钟频率;基于约束公式确定N的取值。
[0085] 在一种具体实施方式中,第一缓存器件具体用于:在矩阵乘计算器件计算矩阵乘结果的过程中,从第一存储器中加载参与当前矩阵乘操作的第一矩阵中的剩余未加载数据;相应地,第二缓存器件具体用于:在矩阵乘计算器件计算矩阵乘结果的过程中,从第二存储器中加载参与当前矩阵乘操作的第二矩阵中的剩余未加载数据。由此便无需等待上一操作完成,就能提前进行数据加载,计算器件也不会出现空闲状态,能持续进行数据计算,提高了计算资源利用率和系统计算效率,降低任务延迟。
[0086] 在一种具体实施方式中,第一缓存器件利用乒乓方式加载第一矩阵中的数据。第一缓存器件可以为URAM(Ultra RAM)。
[0087] 在一种具体实施方式中,第二缓存器件利用先入先出队列加载第二矩阵中的数据。具体的,第二缓存器件利用第一先入先出队列缓存第二矩阵中的数据,利用第二先入先出队列缓存矩阵乘结果。
[0088] 在一种具体实施方式中,矩阵乘计算器件包括:至少一个计算单元,计算单元利用乘法器和累加器构成且每次计算的数据量等于N。请参见图2,任一个计算单元可以包括至少一个乘法器组,一个乘法器组中包括两个乘法器;并且,一个乘法器组的输出连接累加器。如图2所示,每次计算的数据量为4,故有4个乘法器组。如有需要,乘法器组及其输出所连累加器可灵活增设或删除,由此可实现计算器件的灵活扩展和调整。图2中的量化截取用于实现:数据位宽的量化与截取,如果数据位宽为8,那么乘法结果的位宽就为16,再经过累加,数据位宽会更大,此时需要将最终结果的数据位宽截取为8位。
[0089] 其中,每次计算的数据量等于N=行并行数=列并行数,可以使参与计算的行/列矩阵在内存的存储格式一致,便于图神经网络中每步计算结果的行优先/列优先转存(左右矩阵)变换,使得在连续的计算过程中可以顺序访存。
[0090] 本实施例提供的计算核能够并行计算第一矩阵中的N个行数据或N个列数据与第二矩阵中的N个列数据或N个行数据的矩阵乘结果,因此可一次性得到N个最终矩阵乘结果,提高了计算效率和速度;计算核也无需暂存中间结果,节约了片上资源。
[0091] 本申请在得到矩阵乘结果后,能够按照该矩阵乘结果参与下一矩阵乘操作中的每一轮计算时的参与方式确定将该矩阵乘结果存入哪个存储器,具体的,当矩阵乘结果参与下一矩阵乘操作中的每一轮计算时需以遍历方式参与计算,则将该矩阵乘结果存入第二存储器;否则,该矩阵乘结果存入第一存储器。由此可实现:使矩阵乘结果在存储器中的存储格式与其参与计算时的输出格式一致,便于在连续的计算过程中顺序读取数据,也无需进行矩阵转置,因此还能降低访存的时间开销,进一步提高效率。而在满足预设写条件时,再写入矩阵乘结果,可降低写入次数,提升写入效率和带宽利用率。可见,本实施例能够提高图神经网络中矩阵乘操作的计算速度和计算效率。
[0092] 下面对本申请实施例提供的一种加速器进行介绍,下文描述的一种加速器与上文描述的一种计算核可以相互参照。
[0093] 本申请实施例公开了一种加速器,包括:控制器、第一存储器、传输带宽大于第一存储器的第二存储器、以及前文所述的计算核。
[0094] 其中,控制器与第一存储器、第二存储器、计算核分别连接;计算核与第一存储器、第二存储器分别连接。控制器,用于将图神经网络中的矩阵乘操作的计算指令发送至第一存储器、第二存储器和计算核;第一存储器,用于根据计算指令以DMA方式获取并存储参与当前矩阵乘操作的第一矩阵;第二存储器,用于根据计算指令以DMA方式获取并存储参与当前矩阵乘操作的第二矩阵;计算核,用于根据计算指令计算第一矩阵和第二矩阵的矩阵乘结果。
[0095] 其中,第二存储器(如HBM)的传输带宽大于第一存储器(如DDR),且以遍历方式参与计算的矩阵存入第二存储器,可使以遍历方式参与计算的矩阵的读取速度更快,能够提升计算速度。
[0096] 其中,计算核包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件;第一缓存器件能够在矩阵乘计算器件计算矩阵乘结果的过程中,从第一存储器中加载参与当前矩阵乘操作的第一矩阵中的剩余未加载数据;相应地,第二缓存器件能够在矩阵乘计算器件计算矩阵乘结果的过程中,从第二存储器中加载参与当前矩阵乘操作的第二矩阵中的剩余未加载数据。由此便无需等待上一操作完成,就能提前进行数据加载,计算器件也不会出现空闲状态,能持续进行数据计算,提高了计算资源利用率和系统计算效率,降低任务延迟。
[0097] 参见图3所示,加速器中可设有多个计算核;相应地,需设置调度核来使控制器多这些计算核进行调度和控制。
[0098] 在一种具体实施方式中,控制器还用于:控制多个计算核执行同一矩阵乘操作。在一种具体实施方式中,控制器具体用于:在控制多个计算核执行同一矩阵乘操作时,使每一计算核在同一计算周期内计算第一矩阵中的相同行数据或相同列数据与第二矩阵中的不同列数据或不同行数据的矩阵乘结果。例如:在同一计算周期(同一时间段)内,计算核1计算第一矩阵中第一行与第二矩阵中第一列的乘法结果,计算核2计算第一矩阵中第一行与第二矩阵中第二列的乘法结果,由此可实现:第一矩阵中第一行数据在多个计算核上的复用,可避免数据的重复读取,也能够提升计算效率。如图3所示,S矩阵中的行数据1(第1行数据)被计算核1和计算核2复用。
[0099] 在一种具体实施方式中,控制器具体用于:在控制多个计算核执行同一矩阵乘操作时,使每一计算核在同一计算周期内分别计算第一矩阵中的不同列数据或不同行数据与第二矩阵中的相同列数据或相同行数据的矩阵乘结果。例如:在同一计算周期(同一时间段)内,计算核1计算第一矩阵中第一行与第二矩阵中第一列的乘法结果,计算核2计算第一矩阵中第二行与第二矩阵中第一列的乘法结果,由此可实现:第二矩阵中第一行数据在多个计算核上的复用,可避免数据的重复读取,也能够提升计算效率。如图4所示,遍历矩阵被计算核1和计算核2复用。
[0100] 在一种具体实施方式中,控制器还用于:控制不同计算核在同一计算周期内执行不同矩阵乘操作。例如:在同一计算周期(同一时间段)内,计算核1计算第一矩阵中第一行与第二矩阵中第一列的乘法结果,计算核2计算第三矩阵中第一行与第四矩阵中第一列的乘法结果,由此可实现:第一矩阵与第二矩阵的矩阵乘操作、第三矩阵与第四矩阵的矩阵乘操作同时执行,能够提高计算效率。如图5所示,计算核1计算矩阵A与矩阵B的乘法结果,计算核2计算矩阵C与矩阵D的乘法结果。
[0101] 由于需要连续遍历整个遍历矩阵中的数据,因此可使用高带宽的HBM实现遍历矩阵的数据缓存;而使用单端口带宽低的DDR4缓存S矩阵中少量几行/列数据。使用高、低带宽的存储器除了分别给遍历矩阵和S矩阵提供合理的带宽之外,由于可在计算的同时继续加载后续数据,因此能够隐藏访存时间开销,提高系统整体吞吐效率。如图3所示,只需要加载S矩阵中少量几行/列数据于片上缓存,而后使用FIFO流式加载遍历矩阵,便可实现S矩阵中的数据复用。也即:S矩阵中的数据被多个计算核共用,既可以按照数据内存组织格式依次写回数据,又可避免共享外存接口的访问冲突。
[0102] 在一种具体实施方式中,计算指令用于实现图神经网络中的任意矩阵乘操作。图神经网络中的主要运算为:特征矩阵F与相应的小波矩阵Wav、权重矩阵W相乘,用公式表示为:Wav×(F×W)。如该公式所示,特征矩阵F在与W相乘时,F为乘号左边的左矩阵,而F×W的乘积与Wav相乘时,该乘积为乘号右边的右矩阵,这种位置变换就需要将F×W的乘积按照该乘积在下一次乘法操作中的位置提前确定该乘积是行优先存储和列优先存储。当前一次矩阵乘结果需要存为行优先矩阵用于下一次计算时,前一次矩阵乘过程为:保持左矩阵中N行数据不动,遍历右矩阵的所有列,得到N行乘所有列的结果后;再次计算N+1 2N行乘所有列~的结果,直至计算完成;此过程在按序生成行优先矩阵的同时,对左矩阵的行数据进行了数据重用。当前一次矩阵乘结果需要存为列优先矩阵用于下一次计算时,前一次矩阵乘过程为:保持右矩阵中N列数据不动,遍历左矩阵的所有行,得到N列乘所有行的结果后;再次计算N+1 2N列乘所有行的结果,直至计算完成;此过程在按序生成列优先矩阵的同时,对右矩~
阵的列数据进行了数据重用。
[0103] 其中,任一个计算核包括:第一缓存器件、第二缓存器件、矩阵乘计算器件和输出器件;矩阵乘计算器件包括:至少一个计算单元,该计算单元利用乘法器和累加器构成且每次计算的数据量等于N。每次计算的数据量等于N=行并行数=列并行数,可以使参与计算的行/列矩阵在内存的存储格式一致,便于图神经网络中每步计算结果的行优先/列优先转存(左右矩阵)变换,使得在连续的计算过程中可以顺序访存。通过灵活设置N的取值可调整计算加速比。具体的,并行数N的取值根据计算核的资源配置确定。例如:基于计算核的资源配3 2
置构建约束公式:Count≥N/2、BW≥DW×f×N ;其中,Count表示计算核的计算资源数量,BW表示计算核的访存带宽,DW表示计算核的数据位宽,f为计算核的计算时钟频率;基于约束公式确定N的取值。
[0104] 可见,本实施例提供了一种加速器,利用该加速器能够避免矩阵转置的访存和时间开销,实现计算过程中的数据重用,提高图神经网络中矩阵乘操作的计算速度和计算效率,还可实现计算器件的灵活并行扩展。
[0105] 下面对本申请实施例提供的一种计算方法进行介绍,下文描述的一种计算方法与其他实施例可以相互参照。
[0106] 参见图6所示,本申请实施例公开了一种计算方法,包括:
[0107] S601、针对图神经网络中的每一矩阵乘操作生成计算指令;计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置。
[0108] S602、将计算指令发送至前文所述的加速器,以使加速器对图神经网络进行加速计算。
[0109] 在图神经网络中有很多节点,每一节点对应有一个特征矩阵。特征矩阵F与相应的小波矩阵Wav、权重矩阵W相乘,用公式表示为:Wav×(F×W)。图神经网络中包括多个这样的乘法步骤,故需要按照图神经网络中不同矩阵乘操作的计算顺序确定相应计算指令的顺序,而后按序发送计算指令至加速器,以使加速器按序进行图神经网络中的矩阵乘操作。在一种具体实施方式中,将计算指令发送至前文所述的加速器,包括:按照图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至加速器。
[0110] 在一种具体实施方式中,根据加速器中的计算核的资源配置确定并行数N的取值。在一种具体实施方式中,根据加速器中的计算核的资源配置确定并行数N的取值,包括:基
3 2
于计算核的资源配置构建约束公式:Count≥N/2、BW≥DW×f×N;其中,Count表示计算核的计算资源数量,BW表示计算核的访存带宽,DW表示计算核的数据位宽,f为计算核的计算
3 2
时钟频率;基于约束公式确定N的取值。具体的,求解满足Count≥N /2、BW≥DW×f×N的最大N值作为并行数。
[0111] 可见,本实施例提供了一种计算方法,能够避免矩阵转置的访存和时间开销,实现计算过程中的数据重用,提高图神经网络中矩阵乘操作的计算速度和计算效率,还可实现计算器件的灵活并行扩展。
[0112] 下面对本申请实施例提供的一种计算装置进行介绍,下文描述的一种计算装置与其他实施例可以相互参照。
[0113] 本申请实施例公开了一种计算装置,包括:
[0114] 生成模块,用于针对图神经网络中的每一矩阵乘操作生成计算指令;计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;
[0115] 发送模块,用于将计算指令发送至前文所述的加速器,以使加速器对图神经网络进行加速计算。
[0116] 在一种具体实施方式中,发送模块具体用于:
[0117] 按照图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至加速器。
[0118] 在一种具体实施方式中,还包括:
[0119] 配置模块,用于根据加速器中的计算核的资源配置确定并行数N的取值。
[0120] 在一种具体实施方式中,配置模块具体用于:
[0121] 基于计算核的资源配置构建约束公式:Count≥N3/2、BW≥DW×f×N2;其中,Count表示计算核的计算资源数量,BW表示计算核的访存带宽,DW表示计算核的数据位宽,f为计算核的计算时钟频率;
[0122] 基于约束公式确定N的取值。
[0123] 其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考其他实施例中公开的相应内容,在此不再进行赘述。
[0124] 可见,本实施例提供了一种计算装置,能够避免矩阵转置的访存和时间开销,实现计算过程中的数据重用,提高图神经网络中矩阵乘操作的计算速度和计算效率,还可实现计算器件的灵活并行扩展。
[0125] 基于上述任意实施例,下面提供一种用于图神经网络中矩阵乘操作的计算器件的设计方案。如图7所示,通过3个参数kernel长度、行并行数R、列并行数C设计构成计算器件的PE(Process Element,计算单元)阵列,且kernel长度=行并行数R=列并行数C。在图7中,矩阵中的一行数据或一列数据被划分为7个K大小的数据块,图7所示的PE阵列可同时计算输入给其的数据。也就是说,当kernel长度=行并行数R=列并行数C=8时,同时输入8行数据和8列数据至PE阵列,使得PE阵列同时计算8行数据和8列数据的乘法结果。需要说明的是,图7示意的7个K大小的数据块仅为示例,在实际实现时,数据块的个数应为2的指数,即:一行数据或一列数据被划分为2的指数个K大小的数据块。
[0126] 在本实施例中,kernel长度、行并行数R、列并行数C根据单一PE的DSP资源和访存带宽来设置;其中,DSP使用数量为:CountDSP = K*R*(C/2);K为kernel长度,R为行并行数,C为列并行数;其访存带宽为:BWtraverse= DW*K*C*f;DW为每个数据的位宽,K为kernel长度,C为列并行数,f为DSP运行时钟频率。例如,数据为int8,K=C=16,f为400M/s时,BWtraverse= 8bit*16*16*400M/s=100GB/s。由此可确定并行数的具体取值。由于kernel长3 2
度=行并行数R=列并行数C,因此在实际实现时,上述公式可用Count≥N/2、BW≥DW×f×N代替,N=K=R=C。
[0127] 在本实施例中,kernel为参与计算的最小单位,单一PE采用乘法器和加法器结构,该结构的好处是:能够并行加速计算过程。如果行的长度为L,那么整行/整列顺序计算的时间为L,而使用图2所示结构,用时为log2(L)。
[0128] 在一种示例中,4*4*4的PE阵列如图8所示。在图8中,每个PE中都存在一组数据的复用。
[0129] 其中,每次计算的数据量等于N=行并行数=列并行数,可以使参与计算的行/列矩阵在内存的存储格式一致,便于图神经网络中每步计算结果的行优先/列优先转存(左右矩阵)变换,使得在连续的计算过程中可以顺序访存。例如:4行×4列的A矩阵和4行×N列的B矩阵相乘时,在R=C=4时,针对A矩阵的1‑4行和B矩阵的1‑4列数据,每时钟周期取K个数据,经过完整行/列遍历后,得到结果矩阵中1‑4行1‑4列的数据;然后再取B矩阵5‑8列数据,和A矩阵1‑4行数据再次遍历后,得到结果矩阵中1‑4行5‑8列的数据,如此循环,直到结果矩阵1‑4行数据计算完成,再切换A矩阵5‑8行数据继续进行遍历;这样结果矩阵就和A矩阵的数据排列一致,从而保证每次矩阵计算时输入、输出矩阵格式的一致性。本例属于行优先矩阵,列优先矩阵类似。具体的,结果矩阵的存储顺序如图9所示。
[0130] 本实施例提供的计算核能够并行计算第一矩阵中的N个行数据或N个列数据与第二矩阵中的N个列数据或N个行数据的矩阵乘结果,因此可一次性得到N个最终矩阵乘结果,提高了计算效率和速度;计算核也无需暂存中间结果,节约了片上资源。
[0131] 请参见图10,按照本实施例实现的矩阵乘操作流程包括:
[0132] (1)执行重用矩阵加载指令,从DDR读取stationary矩阵(S矩阵)的一组行/列数据到URAM,由于URAM的存储深度通常较大,可以在当前组计算过程中提前将下一组数据读入进行乒乓缓存;
[0133] (2)执行遍历矩阵加载指令,从HBM依次读取遍历矩阵的所有列/行数据到FIFO;
[0134] (3)执行矩阵乘计算指令,PE阵列进行计算;
[0135] (4)计算完成一组数据后,执行结果写回指令,根据指令中定义的地址通过总线burst传输将结果写到对应的外部HBM/DDR4;
[0136] (5)复位PE阵列中的累加器,以便进行下一次计算;
[0137] 重复(1)‑(4)步,直到S矩阵所有组数据计算完成。
[0138] 其中,通过总线burst传输将结果写到对应的外部HBM/DDR4,可以减少写入次数。也即:凑够一个burst长度,向外部存储器写一次。例如:如果当前加速器为基于FPGA的系统,其中所用的AXI4(Advanced eXtensible Interface 4,一种总线协议)的burst长度为
4KB,而对于int8数据类型,需要凑够4096个数据向部存储器写一次。
[0139] 可见,本实施例使用定量设计方法,根据片上资源及外部可提供的访存带宽,得出PE阵列的组织形式及规模;使用行/列优先矩阵的生成方法生成图神经网络下一步计算所需格式的特征矩阵;使用完整的硬件加速系统及方法进行数据加载、遍历计算及结果写回;可灵活扩展的多PE阵列系统架构用于单个或多个矩阵乘的并行计算加速;将操作指令拆分为数据加载、计算和结果写回指令,提前进行数据加载,保证PE阵列连续不间断工作。该方案可灵活适配硬件资源,实现指令周期性流水处理,有效提升计算和访存效率,完成图神经网络中各级矩阵的灵活变换和连续高效计算。
[0140] 下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与其他实施例可以相互参照。
[0141] 参见图11所示,本申请实施例公开了一种电子设备,包括:
[0142] 存储器1101,用于保存计算机程序;
[0143] 处理器1102,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
[0144] 在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:针对图神经网络中的每一矩阵乘操作生成计算指令;所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;将所述计算指令发送至前文所述的加速器,以使所述加速器对所述图神经网络进行加速计算。
[0145] 在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:按照所述图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至所述加速器。
[0146] 在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:根据所述加速器中的计算核的资源配置确定并行数N的取值。
[0147] 在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实3 2
现以下步骤:基于所述计算核的资源配置构建约束公式:Count≥N /2、BW≥DW×f×N ;其中,Count表示所述计算核的计算资源数量,BW表示所述计算核的访存带宽,DW表示所述计算核的数据位宽,f为所述计算核的计算时钟频率;基于所述约束公式确定N的取值。
[0148] 进一步的,本申请实施例还提供了一种服务器来作为上述电子设备。该服务器,具体可以包括:至少一个处理器、至少一个存储器、电源、通信接口、输入输出接口和通信总线。其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行,以实现前述任一实施例公开的计算方法中的相关步骤。
[0149] 本实施例中,电源用于为服务器上的各硬件设备提供工作电压;通信接口能够为服务器创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0150] 另外,存储器作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
[0151] 其中,操作系统用于管理与控制服务器上的各硬件设备以及计算机程序,以实现处理器对存储器中数据的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序除了包括能够用于完成前述任一实施例公开的计算方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据除了可以包括虚拟机等数据外,还可以包括虚拟机的开发商信息等数据。
[0152] 进一步的,本申请实施例还提供了一种终端来作为上述电子设备。该终端具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
[0153] 通常,本实施例中的终端包括有:处理器和存储器。
[0154] 其中,处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
[0155] 存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器至少用于存储以下计算机程序,其中,该计算机程序被处理器加载并执行之后,能够实现前述任一实施例公开的由终端侧执行的计算方法中的相关步骤。另外,存储器所存储的资源还可以包括操作系统和数据等,存储方式可以是短暂存储或者永久存储。其中,操作系统可以包括Windows、Unix、Linux等。数据可以包括但不限于应用程序的更新信息。
[0156] 在一些实施例中,终端还可包括有显示屏、输入输出接口、通信接口、传感器、电源以及通信总线。
[0157] 下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与其他实施例可以相互参照。
[0158] 本申请实施例公开了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的计算方法。其中,可读存储介质为计算机可读存储介质,其作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
[0159] 在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:针对图神经网络中的每一矩阵乘操作生成计算指令;所述计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;将所述计算指令发送至前文所述的加速器,以使所述加速器对所述图神经网络进行加速计算。
[0160] 在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:按照所述图神经网络中不同矩阵乘操作的计算顺序将相应计算指令按序发送至所述加速器。
[0161] 在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:根据所述加速器中的计算核的资源配置确定并行数N的取值。
[0162] 在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:基于所述3 2
计算核的资源配置构建约束公式:Count≥N/2、BW≥DW×f×N ;其中,Count表示所述计算核的计算资源数量,BW表示所述计算核的访存带宽,DW表示所述计算核的数据位宽,f为所述计算核的计算时钟频率;基于所述约束公式确定N的取值。
[0163] 下面对本申请实施例提供的一种计算系统进行介绍,下文描述的一种计算系统与其他实施例可以相互参照。
[0164] 本申请实施例公开了一种计算系统,包括:服务器以及至少一个前述公开的加速器。服务器用于针对图神经网络中的每一矩阵乘操作生成计算指令;计算指令中设有并行数N以及相应矩阵乘操作的矩阵乘结果的写入位置;将计算指令发送至任一个加速器。接收到计算指令的加速器对图神经网络进行加速计算。
[0165] 可见,本实施例提供了一种计算系统,能够避免矩阵转置的访存和时间开销,实现计算过程中的数据重用,提高图神经网络中矩阵乘操作的计算速度和计算效率,还可实现计算器件的灵活并行扩展。
[0166] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0167] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
[0168] 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。