由电子设备执行的方法、处理模块、存储介质及程序产品与流程

摘要: 本公开涉及人工智能,具体而言,本公开涉及一种由电子设备执行的方法、处理模块、存储介质及程序产品。背景技术:1、矩阵运算单元包括一个立方体阵列结构的mac(mul...
由电子设备执行的方法、处理模块、存储介质及程序产品与流程

本公开涉及人工智能,具体而言,本公开涉及一种由电子设备执行的方法、处理模块、存储介质及程序产品。

背景技术:

1、矩阵运算单元包括一个立方体阵列结构的mac(multiply accumulate,乘加运算)阵列单元以及一个累加器单元。ai模型在计算中会涉及到不同尺寸的矩阵运算,现有技术的npu(neural processing unit)矩阵运算单元会将输入不同尺寸的矩阵进行预处理,如矩阵分块,以适应硬件结构,但在执行乘法后还需要通过累加器进行累加操作才能得到最终的计算结果,该冗长的计算过程严重降低了矩阵运算单元的计算效率,导致不能满足输出数据的实时性。

技术实现思路

1、本公开的目的在于至少能够解决上述的技术缺陷之一,本公开实施例提供的技术方案如下:

2、第一方面,本公开实施例提供了一种由电子设备执行的方法,包括:

3、根据输入数据的尺寸信息,在第一处理模块包含的运算单元中确定多个第一运算单元以及各第一运算单元的配置信息;

4、根据对应的配置信息配置各第一运算单元;

5、基于各第一运算单元组成的运算阵列,对所述输入数据进行处理;

6、其中,所述运算阵列的尺寸与所述输入数据的尺寸对应,所述配置信息包括第一运算单元在所述运算阵列中的位置相关信息。

7、在一可行的实施例中,根据对应的配置信息配置各第一运算单元,包括:

8、将每个第一运算单元的配置信息分别配置到该第一运算单元的寄存器中。

9、在一可行的实施例中,所述位置相关信息包括:至少指示第一运算单元位于所述运算阵列中运算行的首位置和/或尾位置的第一指示信息。

10、在一可行的实施例中,对所述输入数据进行相应处理,包括:

11、当第一指示信息指示第一运算单元位于运算行的首位置时,第一运算单元将运算结果输出到连接的下一个第一运算单元;和/或

12、当第一指示信息指示第一运算单元位于运算行的尾位置时,第一运算单元将运算结果输出到第二处理模块;和/或

13、当第一指示信息指示第一运算单元不位于运算行的首位置和尾位置时,第一运算单元将运算结果输出到连接的下一个第一运算单元。

14、在一可行的实施例中,所述第一处理模块中的各运算单元顺序级联,每个运算单元的输出端口与所述第二处理模块相连。

15、在一可行的实施例中,所述第一指示信息的确定,包括:

16、将m×n的输入数据与所述第一处理模块中包含l×h的运算单元分别转换为一维的行向量,所述m、n、l和h不小于1;

17、将所述输入数据1×n的行向量映射至所述第一处理模块中包含的运算单元1×(l×h)的行向量中;

18、基于映射长度为所述n的倍数相应运算单元的位置,确定第一指示信息。

19、在一可行的实施例中,所述第一指示信息的确定,包括:

20、基于所述输入数据的尺寸和所述第一处理模块中包含的运算单元的尺寸的比较结果,确定第一指示信息。

21、在一可行的实施例中,所述第一指示信息的确定,包括:

22、在m×n的输入数据的行和列均小于所述第一处理模块中包含l×h的运算单元的行和列的情况下,基于每行对应的第n-1个运算单元的位置确定所述第一指示信息;

23、在所述输入数据的逻辑行大于所述运算阵列的物理行,且所述输入数据的总尺寸小于所述第一处理模块中包含的运算单元总尺寸的情况下,基于每行的第n×i个运算单元的位置确定第一指示信息,i为从1至m的顺序递增整数;

24、在所述输入数据的总尺寸大于所述第一处理模块中包含的运算单元总尺寸的情况下,执行循环计算,在本次计算结束时将m-(l×h)/n的行向量重新排列至所述运算阵列中,并将本次计算结果与前一计算结果拼接,基于每一计算结果的输出位置确定第一指示信息。

25、在一可行的实施例中,所述循环计算包括:

26、在第一轮计算中,所述输入数据中处理权重数据的行数为(h×l)/n;

27、在下一轮计算中,若(m - ((h×l)/n)>(h×l)),则执行与所述第一轮计算相同的操作,否则结束循环计算。

28、在一可行的实施例中,所述输入数据包括待处理数据和处理权重数据;

29、所述配置信息还包括下述至少一项:

30、指示所述第一运算单元对应的处理权重数据是否为零的第二指示信息;

31、所述第一运算单元对应的处理权重数据;

32、所述第一运算单元在所述第一处理模块中的位置信息。

33、在一可行的实施例中,所述位置信息包括下述至少一项:

34、第一位置信息,用于指示各运算行运算结束的第一运算单元的位置;

35、第二位置信息,用于指示各运算行运算开始的第一运算单元的位置。

36、在一可行的实施例中,所述对所述输入数据进行处理,包括:

37、当所述第二指示信息指示第一运算单元对应的处理权重数据为零时,第一运算单元将上一个第一运算单元的运算结果直接输出给下一个第一运算单元或第二处理模块。

38、在一可行的实施例中,还包括下述至少一项:

39、将所述待处理数据按列顺序依次映射至第一序列,将所述运算矩阵中的第一运算单元按顺序映射至第二序列,通过所述第一序列和所述第二序列将所述待处理数据输入至所述第一运算单元;

40、从所述运算阵列中各运算行的首位置开始,以列为单元,将所述待处理数据依次输入至每一第一运算单元中。

41、在一可行的实施例中,还包括:

42、接收cpu发送的第一阈值,所述第一阈值是所述cpu根据所述输入数据的当前运算结果配置的;

43、确定各第一运算单元的配置信息,包括:

44、将所述处理权重数据中数值小于所述第一阈值的元素值置零。

45、在一可行的实施例中,还包括:

46、使用门控时钟关闭所述第一处理模块中不处理所述输入数据的各运算单元。

47、在一可行的实施例中,所述运算单元为乘加运算mac单元。

48、在一可行的实施例中,所述输入数据包括下述至少一种:通信数据、图像数据、音频数据和文本数据;

49、其中,所述通信数据为所述电子设备接收到的、待进行预失真处理的通信数据,所述电子设备为网络节点或用户设备。

50、第二方面,本公开实施例提供一种处理模块,包括控制逻辑单元和多个运算单元;

51、所述控制逻辑单元,被配置为根据输入数据的尺寸信息,在第一处理模块包含的运算单元中确定多个第一运算单元以及各第一运算单元的配置信息,并根据对应的配置信息配置各第一运算单元,其中,各第一运算单元组成的运算阵列的尺寸与所述输入数据的尺寸对应,所述配置信息包括第一运算单元在所述运算阵列中的位置相关信息;

52、所述运算单元,被配置为对所述输入数据进行处理。

53、在一可行的实施例中,所述运算单元包括寄存器;

54、所述控制逻辑单元,被配置为将每个第一运算单元的配置信息分别配置到该第一运算单元的寄存器中;

55、所述运算单元,被配置为根据寄存器中的配置信息对所述输入数据进行处理。

56、所述位置相关信息包括:至少指示第一运算单元位于所述运算阵列中运算行的首位置和/或尾位置的第一指示信息。

57、在一可行的实施例中,所述运算单元包括第一数据通路选择器,所述第一数据通路选择器被配置为:

58、当第一指示信息指示第一运算单元位于运算行的首位置时,将运算结果输出到连接的下一个第一运算单元;和/或

59、当第一指示信息指示第一运算单元位于运算行的尾位置时,将运算结果输出到第二处理模块;和/或

60、当第一指示信息指示第一运算单元不位于运算行的首位置和尾位置时,将运算结果输出到连接的下一个第一运算单元。

61、在一可行的实施例中,所述第一处理模块中的各运算单元顺序级联,每个运算单元的输出端口与所述第二处理模块相连。

62、在一可行的实施例中,所述控制逻辑单元被配置为:

63、将m×n的输入数据与所述第一处理模块中包含l×h的运算单元分别转换为一维的行向量,所述m、n、l和h不小于1;

64、将所述输入数据1×n的行向量映射至所述第一处理模块中包含的运算单元1×(l×h)的行向量中;

65、基于映射长度为所述n的倍数相应运算单元的位置,确定第一指示信息。

66、在一可行的实施例中,所述控制逻辑单元被配置为:

67、基于所述输入数据的大小和所述第一处理模块中包含的运算单元的大小的比较结果,确定第一指示信息。

68、在一可行的实施例中,所述控制逻辑单元被配置为:

69、在m×n的输入数据的行和列均小于所述第一处理模块中包含l×h的运算单元的行和列的情况下,基于每行对应的第n-1个运算单元的位置确定所述第一指示信息;

70、在所述输入数据的逻辑行大于所述运算阵列的物理行,且所述输入数据的总尺寸小于所述第一处理模块中包含的运算单元总尺寸的情况下,基于每行的第n×i个运算单元的位置确定第一指示信息,i为从1至m的顺序递增整数;

71、在所述输入数据的总尺寸大于所述第一处理模块中包含的运算单元总尺寸的情况下,执行循环计算,在本次计算结束时将m-(l×h)/n的行向量重新排列至所述运算阵列中,并将本次计算结果与前一计算结果拼接,基于每一计算结果的输出位置确定第一指示信息。

72、在一可行的实施例中,所述循环计算包括:

73、在第一轮计算中,所述输入数据中处理权重数据的行数为(h×l)/n;

74、在下一轮计算中,若(m - ((h×l)/n)>(h×l)),则执行与所述第一轮计算相同的操作,否则结束循环计算。

75、在一可行的实施例中,所述输入数据包括待处理数据和处理权重数据;

76、所述配置信息还包括分别配置在不同寄存器中的下述至少一项:

77、指示所述第一运算单元对应的处理权重数据是否为零的第二指示信息;

78、所述第一运算单元对应的处理权重数据;

79、所述第一运算单元在所述第一处理模块中的位置信息。

80、在一可行的实施例中,所述位置信息包括下述至少一项:

81、第一位置信息,用于指示各运算行运算结束的第一运算单元的位置;

82、第二位置信息,用于指示各运算行运算开始的第一运算单元的位置。

83、在一可行的实施例中,所述运算单元包括第二数据通路选择器,所述第二数据通路选择器被配置为:

84、当所述第二指示信息指示第一运算单元对应的处理权重数据为零时,第一运算单元将上一个第一运算单元的运算结果直接输出给下一个第一运算单元或第二处理模块。

85、在一可行的实施例中,所述运算单元还被配置为:

86、将所述待处理数据按列顺序依次映射至第一序列,将所述运算矩阵中的第一运算单元按顺序映射至第二序列,通过所述第一序列和所述第二序列将所述待处理数据输入至所述第一运算单元;

87、和/或,从所述运算阵列中各运算行的首位置开始,以列为单元,将所述待处理数据依次输入至每一第一运算单元中。

88、在一可行的实施例中,所述控制逻辑单元还被配置为:

89、接收cpu发送的第一阈值,所述第一阈值是所述cpu根据所述输入数据的当前运算结果配置的;

90、将所述处理权重数据中数值小于所述第一阈值的元素值置零。

91、在一可行的实施例中,所述控制逻辑单元还被配置为:

92、使用门控时钟关闭所述第一处理模块中不处理所述输入数据的各运算单元。

93、在一可行的实施例中,所述运算单元为乘加运算mac单元。

94、在一可行的实施例中,所述输入数据包括下述至少一种:通信数据、图像数据、音频数据和文本数据;

95、其中,所述通信数据为所述电子设备接收到的、待进行预失真处理的通信数据,所述电子设备为网络节点或用户设备。

96、第三方面,本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面及其任一实施例所述的方法。

97、第四方面,本公开实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面及其任一实施例所述的方法。

98、本公开实施例提供的技术方案带来的有益效果是:

99、本公开实施例提供一种由电子设备执行的方法,具体地,可以根据输入数据的尺寸信息在第一处理模块包含的运算单元中确定多个第一运算单元以及各第一运算单元的配置信息,并根据对应的配置信息配置各第一运算单元,实现对第一处理模块中的运算单元的动态配置,并可以基于各第一运算单元组成的运算阵列,对输入数据进行处理;其中,运算阵列的尺寸与输入数据的尺寸对应,配置信息包括第一运算单元在运算阵列中的位置相关信息。本公开的实施可以根据输入数据的尺寸信息自适应地调整运算阵列的结构,实现对任意尺寸的输入数据进行处理,避免矩阵分块和合并的操作,无需再配置累加器单元,有利于提高计算效率,保证运算的实时性,且节省硬件资源的占用。

100、本公开实施例提供一种处理模块,包括控制逻辑单元和多个运算单元;其中,控制逻辑单元被配置为根据输入数据的尺寸信息,在第一处理模块包含的运算单元中确定多个第一运算单元以及各第一运算单元的配置信息,并根据对应的配置信息配置各第一运算单元,其中,各第一运算单元组成的运算阵列的尺寸与输入数据的尺寸对应,配置信息包括第一运算单元在运算阵列中的位置信息;运算单元被配置为对输入数据进行处理。本公开实施例提供的处理模块可以自适应地调整运算阵列的结构,避免矩阵分块和合并的操作,有利于提高计算效率,保证运算的实时性,实现对任意尺寸的输入数据进行处理。本公开的实施由于不需要对输入数据进行预处理,mac单元后也不再需要配置累加器,有利于节省硬件资源的占用。