一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种算子计算方法、装置、设备及系统与流程

2022-05-21 04:44:56 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种算子计算方法、装置、设备及系统。


背景技术:

2.ai(artificial intelligence,人工智能)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
3.目前,随着计算机技术的不断发展,ai网络也得到了广泛的应用。并且,ai网络越来越复杂,ai网络中ai算子的类型也越来越多,即使是同一类型ai算子,其需要支持处理的数据的数据形状也越来越多,若针对每个不同的数据形状,均需要重新编译一个ai算子,使得编译越来越耗时,也降低了ai网络启动速度。


技术实现要素:

4.本技术实施例提供了一种算子计算方法、装置、设备及系统,通过组合至少两个计算单元的方式来支持任意范围数据形状的变化,从而实现了ai动态形状算子功能,提高了ai网络启动速度。
5.第一方面,本技术实施例提供了一种算子计算方法,所述方法包括:
6.获取ai网络的第一数据形状的参数数据,所述第一数据形状是所述ai网络支持处理的每个维度上的数据长度,所述参数数据包括至少两个计算单元的组合信息,每个计算单元支持处理的数据为具有第二数据形状的数据,每个计算单元的第二数据形状按照所述组合信息组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度;
7.调用所述至少两个计算单元,对具有所述第一数据形状的第一目标数据进行计算。
8.也就是说,针对ai网络支持处理的第一数据形状,不是重新编译算子,而是获取第一数据形状的参数数据,该参数数据包括至少两个计算单元的组合信息,并通过调用这些计算单元来实现对具有第一数据形状的第一目标数据的计算,从而避免了针对每个不同的第一数据形状均需要重新编译一个ai算子,而是通过组合至少两个计算单元的方式来支持任意范围数据形状的变化,实现了ai动态形状算子功能,提高了ai网络启动速度。
9.其中,该方法中的第一数据形状的数量可能是一个或多个。由于第一数据形状实际上指的是算子的属性,即ai网络中一个或多个算子中每个算子支持处理的每个维度上的数据长度,所以第一数据形状的数量可能是一个或多个。这里的多个算子可以是相同类型
的算子,也可以是不同类型的算子。针对相同类型的算子,若算子支持处理的数据形状不一样,将会导致第一数据形状的数量可能为多个;针对不同类型的算子,由于算子类型不同,也会导致第一数据形状的数量可能为多个。
10.第二数据形状指的是计算单元支持处理的每个维度上的数据长度。
11.第二数据形状和第一数据形状的关系为:每个计算单元的第二数据形状按照所述组合信息组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度。
12.比如:第二数据形状包括长度、宽度和高度这三个维度;每个计算单元的第二数据形状按照所述组合信息组合后:在长度这个维度上的数据长度大于或等于第一数据形状在长度这个维度上的数据长度,在宽度这个维度上的数据长度大于或等于第一数据形状在宽度这个维度上的数据长度,在高度这个维度上的数据长度大于或等于第一数据形状在高度这个维度上的数据长度。该方法中的计算单元可以等同于算子,该计算单元可以是ai网络的算子,也可以是算子的一个组成部分。该方法中的组合信息可以包括至少两个计算单元的组合模式。比如:第一数据形状在某个维度上的数据长度为11,组合信息中的至少两个计算单元的组合模式可以是数据长度为5的计算单元 数据长度为5的计算单元 数据长度为5的计算单元;也可以是数据长度为5的计算单元 数据长度为5的计算单元 数据长度为1的计算单元。
13.该方法中的参数数据可以以参数表的形式保存在缓存中。
14.在一种可能的实现方式中,所述至少两个计算单元包括相同的计算单元;或不同的计算单元;或相同的计算单元和不同的计算单元;
15.其中,相同的计算单元的第二数据形状,在每个维度上的数据长度均相同;不同的计算单元的第二数据形状,在至少一个维度上的数据长度不同。
16.也就是说,在该种实现方式中,可以通过在每个维度上的数据长度是否相同,来确定相同的计算单元和不同的计算单元。
17.在一种可能的实现方式中,所述至少两个计算单元均为所述ai网络的计算单元。
18.也就是说,在该种实现方式中,可以通过调用ai网络的至少两个计算单元,来实现对ai网络支持处理的第一数据形状的第一目标数据的计算。
19.其中,该方式中的至少两个计算单元可以是ai网络的计算单元,还可以是除了ai网络之外的其他网络的计算单元。这里的ai网络和其他网络可以用于实现不同的功能,比如:目标检测、图像分类、音频处理、自然语言处理等功能。
20.针对实现不同功能的ai网络和其他网络,可以包括相同的计算单元,比如:ai网络和其他网络均包括卷积计算单元;也可以包括不同的计算单元,ai网络不包括卷积计算单元,而其他网络包括卷积算子单元。示例性的,若ai网络不包括卷积计算单元,而其他网络包括卷积算子单元,在ai网络需要使用卷积计算单元时,可以使用其他网络包括的卷积算子单元。
21.在一种可能的实现方式中,所述组合信息包括所述至少两个计算单元的组合模式;
22.每个计算单元的第二数据形状按照所述组合模式组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度。
23.也就是说,在该种实现方式中,第二数据形状和第一数据形状的关系为:每个计算单元的第二数据形状按照一定的组合模式组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度。
24.在一种可能的实现方式中,所述所述参数数据中还包括针对指定计算单元的标识信息;
25.其中,所述指定计算单元指的是所述至少两个计算单元中需要处理的数据为具有第三数据形状的数据的计算单元,所述第三数据形状在至少一个维度上的数据长度小于所述指定计算单元支持处理的第二数据形状在同一维度上的数据长度。
26.也就是说,在该种实现方式中,针对需要处理第三数据形状的数据的指定计算单元,可以在参数数据中对该指定计算单元添加标识信息,以便后续调用该指定计算单元对具有第三数据形状的数据进行计算,从而提高了算子计算的准确性。
27.在一种可能的实现方式中,所述参数数据中还包括所述指定计算单元针对所述具有第三数据形状的数据的指定处理方式。
28.也就是说,在该种实现方式中,针对需要处理第三数据形状的数据的指定计算单元,还可以在参数数据中对该指定计算单元添加指定处理方式,以便后续调用该指定计算单元,采用指定处理方式对第三数据形状的数据进行计算。
29.在一种可能的实现方式中,所述指定处理方式包括:
30.丢弃无效数据,所述无效数据是所述指定计算单元支持处理的第二数据形状中除了具有所述第三数据形状的数据之外的数据;或
31.数据重叠,所述数据重叠是将所述无效数据与另一计算单元需要处理的数据进行重叠。
32.也就是说,在该种实现方式中,指定处理方式可以为丢弃无效数据,也可以是数据重叠,以便后续根据该指定处理方式对第三数据形状的数据进行计算,丰富了算子计算的实现方式,也提高了算子计算的可靠性。
33.在一种可能的实现方式中,所述参数数据中还包括所述指定计算单元支持所述第三数据形状在每个维度上的指定变化范围。
34.也就是说,在该种实现方式中,由于指定计算单元支持处理的第二数据形状是固定的,指定计算单元需要处理的第三数据形状是可以变化的,但其变化是有一定变化范围,所以在参数数据中可以添加第三数据形状在每个维度上的指定变化范围,以便实现同一个计算单元可以支持一定变化范围的数据形状的变化。
35.在一种可能的实现方式中,所述指定变化范围为所述指定计算单元支持处理的第二数据形状在每个维度上的数据长度;或所述第二数据形状在每个维度上的数据长度中的指定部分长度。
36.也就是说,在该种实现方式中,可以实际情况选择不同的变化范围,若数据在每个维度上的数据长度比较小时,可以在整个数据长度内的变化,比如:数据长度为16,可以在0至16内变化;若数据在每个维度上的数据长度比较大时,可以在该数据长度的尾部小范围内的变化,比如:数据长度为100,可以支持在90至100内变化,这样可以保证算子计算的效率,避免了大量的重复计算。
37.在一种可能的实现方式中,所述参数数据包括分档参数数据,所述分档参数数据
用于支持指定变化范围的数据形状。
38.也就是说,在该种实现方式中,不同的第一数据形状的参数数据可以相同,即分档参数数据,这样不必每个不同数据形状都对应不同的参数数据,从而有效减少了缓存中参数数据的数量,避免了资源浪费。
39.在一种可能的实现方式中,所述调用所述至少两个计算单元,对具有所述第一数据形状的第一目标数据进行计算,包括:
40.从计算单元算子库中获取所述至少两个计算单元;
41.通过所述至少两个计算单元对具有所述第一数据形状的第一目标数据进行计算。
42.也就是说,在该种实现方式中,计算单元算子库可以包括很多个预先编译好的计算单元,在进行算子计算时,可以直接从计算单元算子库获取即可,从而提高了算子计算的效率,也提高了ai网络启动速度。
43.其中,计算单元算子库包括的计算单元可以用于实现不同的运算,比如:卷积、相加、矩阵相乘等。这些实现不同运算的计算单元可以被多个ai网络使用,这里的多个ai网络可以用于实现不同的功能,比如:目标检测、图像分类、音频处理、自然语言处理等功能。
44.在一种可能的实现方式中,所述调用所述至少两个计算单元,对具有所述第一数据形状的第一目标数据进行计算,包括:
45.针对任一计算单元,确定所述任一计算单元中需要处理的第二目标数据在所述第一目标数据中的目标位置;
46.按照所述目标位置从存储有所述第一目标数据的内存空间中,获取所述任一计算单元需要处理的第二目标数据;
47.通过所述任一计算单元对所述第二目标数据进行计算。
48.也就是说,在该种实现方式中,在进行算子计算时,可以先确定需要处理的第二目标数据在第一目标数据中的目标位置,再按照目标位置从内存空间中获取第二目标数据,并通过计算单元来完成对第二目标数据的计算,从而提高了算子计算的可靠性。
49.其中,该方式中的内存空间可以指的是在内存中用于保存数据的存储空间,其地址是一维的。在内存空间中获取第二目标数据时,由于第二目标数据可能是多维的,需要采用跳读跳写的方式从内存空间中获取第二目标数据,以及计算完成后,再采用跳读跳写的方式将计算得到的输出数据保存至内存空间中。
50.值得说明的是,在确定需要处理的第二目标数据在第一目标数据中的目标位置时,若参数数据中包括各个第二数据形状在第一数据形状的位置信息,可以根据该位置信息确定第二目标数据在第一目标数据中的目标位置。
51.在一种可能的实现方式中,所述目标位置包括:所述第二目标数据所在的各个维度;以及,针对任一维度,所述第二目标数据在所述任一维度上的偏移和数据长度。
52.也就是说,在该种实现方式中,由于第二目标数据可能是多维的,所以目标位置需要包括第二目标数据所在的各个维度,以及第二目标数据在任一维度上的偏移和数据长度,从而提高了目标数据获取的准确性和效率。
53.在一种可能的实现方式中,所述至少两个计算单元属于不同类型的算子。
54.也就是说,在该种实现方式中,参数数据中的至少两个计算单元可以属于同一类型的算子,即实现同一功能;也可以属于不同类型的算子,即实现不同功能,比如:卷积算
子,add(相加)算子,matmul(矩阵相乘)算子等。
55.其中,该方式中的不同类型的算子可以指的是级联成融合算子的各个算子。融合算子指的是级联的不同类型算子,融合成一个算子一次性计算完成。此时,参数数据中的至少两个计算单元可以是这些不同类型算子的计算单元,比如:conv算子的计算单元、relu算子的计算单元、abs算子的计算单元、exp算子的计算单元等,这样在算子计算时,可以通过调用参数数据中这些不同类型算子的计算单元来完成融合算子的计算,从而避免了一种类型的算子计算完再调用另一个类型的算子进行计算,提高了融合算子的计算效率。
56.在一种可能的实现方式中,所述计算单元为预先编译好的算子。
57.也就是说,在该种实现方式中,该方法中的计算单元可以等同于算子,并且是预先编译好的算子。比如:计算单元算子库中可以包括很多个预先编译好的计算单元,在进行算子计算时,可以直接从计算单元算子库获取即可,从而提高了算子计算的效率,也提高了ai网络启动速度。
58.其中,该方式中的预先编译好的算子可以是编译主机编译出可发布的静态计算单元二进制包,所有的执行主机都只需要导入静态计算单元二进制包即可;也可以是执行主机预先编译好很多个计算单元,并将这些预先编译好的计算单元存入缓存,这样在进行算子计算时,可以直接从缓存获取即可,同样提高了算子计算的效率,也提高了ai网络启动速度。值得说明的是,静态计算单元中的静态指的是该计算单元支持处理的数据形状是固定不变的,这样预先编译好的计算单元可以直接用于算子计算,而不用重新编译。
59.第二方面,本技术实施例提供了一种算子计算装置,所述装置包括:
60.获取模块,被配置为获取ai网络的第一数据形状的参数数据,所述第一数据形状是所述ai网络支持处理的每个维度上的数据长度,所述参数数据包括至少两个计算单元的组合信息,每个计算单元支持处理的数据为具有第二数据形状的数据,每个计算单元的第二数据形状按照所述组合信息组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度;
61.计算模块,被配置为调用所述至少两个计算单元,对具有所述第一数据形状的第一目标数据进行计算。
62.在一种可能的实现方式中,所述至少两个计算单元包括相同的计算单元;或不同的计算单元;或相同的计算单元和不同的计算单元;
63.其中,相同的计算单元的第二数据形状,在每个维度上的数据长度均相同;不同的计算单元的第二数据形状,在至少一个维度上的数据长度不同。
64.在一种可能的实现方式中,所述至少两个计算单元均为所述ai网络的计算单元。
65.在一种可能的实现方式中,所述组合信息包括所述至少两个计算单元的组合模式;
66.每个计算单元的第二数据形状按照所述组合模式组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度。
67.在一种可能的实现方式中,所述参数数据中还包括针对指定计算单元的标识信息;
68.其中,所述指定计算单元指的是所述至少两个计算单元中需要处理的数据为具有第三数据形状的数据的计算单元,所述第三数据形状在至少一个维度上的数据长度小于所
述指定计算单元支持处理的第二数据形状在同一维度上的数据长度。
69.在一种可能的实现方式中,所述参数数据中还包括所述指定计算单元针对所述具有第三数据形状的数据的指定处理方式。
70.在一种可能的实现方式中,所述指定处理方式包括:
71.丢弃无效数据,所述无效数据是所述指定计算单元支持处理的第二数据形状中除了具有所述第三数据形状的数据之外的数据;或
72.数据重叠,所述数据重叠是将所述无效数据与另一计算单元需要处理的数据进行重叠。
73.在一种可能的实现方式中,所述参数数据中还包括所述指定计算单元支持所述第三数据形状在每个维度上的指定变化范围。
74.在一种可能的实现方式中,所述指定变化范围为所述指定计算单元支持处理的第二数据形状在每个维度上的数据长度;或所述第二数据形状在每个维度上的数据长度中的指定部分长度。
75.在一种可能的实现方式中,所述参数数据包括分档参数数据,所述分档参数数据用于支持指定变化范围的数据形状。
76.在一种可能的实现方式中,所述计算模块包括:
77.第一获取子模块,被配置为从计算单元算子库中获取所述至少两个计算单元;
78.第一计算子模块,被配置为通过所述至少两个计算单元对具有所述第一数据形状的第一目标数据进行计算。
79.在一种可能的实现方式中,所述计算模块包括:
80.确定子模块,被配置为针对任一计算单元,确定所述任一计算单元中需要处理的第二目标数据在所述第一目标数据中的目标位置;
81.第二获取子模块,被配置为按照所述目标位置从存储有所述第一目标数据的内存空间中,获取所述任一计算单元需要处理的第二目标数据;
82.第二计算子模块,被配置为通过所述任一计算单元对所述第二目标数据进行计算。
83.在一种可能的实现方式中,所述目标位置包括:所述第二目标数据所在的各个维度;以及,针对任一维度,所述第二目标数据在所述任一维度上的偏移和数据长度。
84.在一种可能的实现方式中,所述至少两个计算单元属于不同类型的算子。
85.在一种可能的实现方式中,所述计算单元为预先编译好的算子。
86.第三方面,本技术实施例提供了一种算子计算装置,包括:
87.至少一个存储器,用于存储程序;
88.至少一个处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行第一方面中的方法。
89.第四方面,本技术实施例提供了一种算子计算设备,包含第二方面或第三方面中所提供的装置。
90.第五方面,本技术实施例提供了一种算子计算系统,包括第四方面中所提供的算子计算设备和算子编译设备;
91.其中,所述算子计算设备包含包含第二方面或第三方面中所提供的装置;
92.所述算子编译设备用于编译出可发布的计算单元包;
93.所述算子计算设备用于导入所述计算单元包。
94.第六方面,本技术实施例提供了一种计算机存储介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第一方面中所提供的方法。
95.第七方面,本技术实施例提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第一方面中所提供的方法。
96.第八方面,本技术实施例提供了一种芯片,包括至少一个处理器和接口;
97.接口,用于为至少一个处理器提供程序指令或者数据;
98.至少一个处理器用于执行程序行指令,以实现第一方面中所提供的方法。
99.本技术公开了一种算子计算方法、装置、设备及系统,通过获取ai网络的第一数据形状的参数数据,第一数据形状是ai网络支持处理的每个维度上的数据长度,参数数据包括至少两个计算单元的组合信息,每个计算单元支持处理的数据为具有第二数据形状的数据,每个计算单元的第二数据形状按照组合信息组合后在任一维度上的数据长度大于或等于第一数据形状在同一维度上的数据长度;调用至少两个计算单元,对具有第一数据形状的第一目标数据进行计算,这样可以通过组合至少两个计算单元的方式来支持任意范围数据形状的变化,从而实现了ai动态形状算子功能,提高了ai网络启动速度。
附图说明
100.图1是一种人工智能主体框架示意图;
101.图2是一种算子计算的系统架构示意图;
102.图3是一种数据形状变化示意图;
103.图4是一种算子计算过程的示意图;
104.图5是一种算子计算的系统架构示意图;
105.图6是一种终端设备的组件结构图;
106.图7是一种ai芯片硬件结构图;
107.图8是一种用于算子计算过程中的跳读跳写场景示意图;
108.图9是一种跳读跳写支持方式示意图;
109.图10是一种尾部数据处理方式示意图;
110.图11是一种参数表结构示意图;
111.图12是一种分档数据表的应用场景示意图;
112.图13是一种融合算子示意图;
113.图14是一种算子计算过程示意图;
114.图15是一种算子计算过程示意图;
115.图16是一种算子计算过程示意图;
116.图17是本技术实施例提供的一种算子计算方法的流程示意图;
117.图18是本技术实施例提供的一种算子计算装置的结构示意图;
118.图19是本技术实施例提供的一种算子计算装置的结构示意图;
119.图20是本技术实施例提供的一种芯片的结构示意图。
具体实施方式
120.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本技术实施例中的技术方案进行描述。
121.在本技术实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
122.在本技术实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
123.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
124.图1是一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
125.下面从“智能信息链”(水平轴)和“it价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
[0126]“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
[0127]“it价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
[0128]
(1)基础设施:
[0129]
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(cpu、npu、gpu、asic、fpga等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
[0130]
(2)数据
[0131]
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
[0132]
(3)数据处理
[0133]
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
[0134]
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
[0135]
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,
和右侧“执行时数据形状可变”两种场景。对于执行时数据形状不变的ai网络,则只包含图4中左侧“执行时数据形状不变”这一种场景。图4中的静态计算单元可以事先保存在静态计算单元算子库中,在调用静态计算单元完成计算时,可以从静态计算单元算子库取出使用。图4中各部分的含义,具体如下:
[0150]
静态计算单元:只完成固定数据形状计算的算子单元,该算子单元也等同于一种算子。每种类型算子可以包含调优后的若干个不同数据形状的静态计算单元,不同类型的算子可以实现不同的功能,比如:卷积算子,add(相加)算子,matmul(矩阵相乘)算子等。
[0151]
参数表:用于描述静态计算单元组合模式的数据结构。每个静态计算单元完成一块数据的计算,根据参数表里的参数将多个静态计算单元组合后能完成全部数据的计算。
[0152]
ai网络初始化:分析ai网络算子类型等初始化操作阶段。
[0153]
ai网络初执行:调用算子并完成计算的过程。其中,算子计算可以通过参数表和静态计算单元的结合完成,参数表作为静态计算单元的一个入参。
[0154]
执行时数据形状不变场景:针对数据形状不变的算子,可以在ai网络初始化时生成参数表并保存在缓存中,在ai网络执行时直接从缓存中获取即可。
[0155]
执行时数据形状可变场景:针对数据形状可变的算子,可以在ai网络执行时生成参数表,再根据参数表调用静态计算单元完成计算,若使用了缓存机制,再使用该参数表时可以从缓存中获取,而不需要每次使用参数表时都重新生成该参数表。
[0156]
图5是一种算子计算的系统架构示意图。本技术的产品实现形态,是包含在ai编译器、机器学习/深度学习平台软件中,并部署在主机硬件上的程序代码。以图5所示的应用场景为例,本技术的程序代码存在于ai编译器的静态计算单元编译模块内部和平台软件的初始化模块、以及运行时引擎内部。编译时,本技术的程序代码运行于编译主机的cpu中;运行时,本技术的静态计算单元4016运行于执行主机的ai芯片中,该ai芯片可以搭载有二进制的静态计算单元以及本技术提供的算子计算过程的软件程序。图5示出了本技术在主机ai编译器及平台软件中的实现形态,其中虚线框所示部分4013、4015,4016,4017,4019为本技术在现有平台软件基础上新增加的模块。在初始化模块4012内部,本技术设计了组合算法模块4013;在运行时引擎4013内部,执行模块4017可以根据参数表4015和调用的静态计算单元4016完成算子计算;ai编译器4018,包括静态计算单元编译模块4019,该静态计算单元编译模块4019完成静态计算单元编译后可以得到静态计算单元二进制包4020。
[0157]
另外,上述图5表示了一种典型的静态计算单元二进制发布的应用场景。在该场景下,编译主机4002和执行主机4001是分开的,发布软件版本前在编译主机4002编译出可发布的静态计算单元二进制包4020,所有的执行主机4001都只需要导入静态计算单元二进制包4020即可。
[0158]
但是,在另一种应用场景下,机器学习平台4011包含了ai编译器4018,静态计算单元是在执行主机4001上编译出来的。也就是编译主机4002的功能放在执行主机4001上实现,在该种应用场景下,静态计算单元4016在初始化4012时编译。
[0159]
图6是一种终端设备的组件结构图。如图6所示,在终端设备上使用二进制发布的静态计算单元,通过通用接口nnapi(neural networks application programming interface,神经网络应用程序接口)4011对终端设备上所有的app提供ai网络执行能力。本技术的静态计算单元4016使用的是二进制发布的算子包4020,无需再次编译。初始化4012
时仅需调用组合算法4013,生成算子对应数据形状的参数表4015即可。本实施例能够在app(应用)打开时将ai网络的启动时间降到最小,大大提高用户体验。其中,本技术的静态计算单元4016可以运行于终端设备的ai芯片中,该ai芯片可以搭载有二进制的静态计算单元以及本技术提供的算子计算过程的软件程序。
[0160]
值得说明的是,终端设备使用已发布的静态计算单元二进制包可以实现数据的shape信息与算子代码间的解耦,降低算子开发与调优的难度。比如:在手机、平板电脑、智能电视等应用场景下,使用已发布的静态计算单元二进制包,可以大大提高app中ai网络初始化速度。
[0161]
图7是一种ai芯片硬件结构图,该ai芯片可以搭载有二进制的静态计算单元以及本技术提供的算子计算过程的软件程序。神经网络处理器(neural network processor,npu)50npu作为协处理器挂载到主cpu(host cpu)上,由host cpu分配任务。npu的核心部分为运算电路50,通过控制器504控制运算电路503提取存储器中的矩阵数据并进行乘法运算。
[0162]
在一些实现中,运算电路503内部包括多个处理单元(process engine,pe)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
[0163]
举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路从权重存储器502中取矩阵b相应的数据,并缓存在运算电路中每一个pe上。运算电路从输入存储器501中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器508accumulator中。
[0164]
统一存储器506用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器505direct memory access controller,dmac被搬运到权重存储器502中。输入数据也通过dmac被搬运到统一存储器506中。
[0165]
biu为bus interface unit即,总线接口单元510,用于axi总线与dmac和取指存储器509instruction fetch buffer的交互。
[0166]
总线接口单元510(bus interface unit,简称biu),用于取指存储器509从外部存储器获取指令,还用于存储单元访问控制器505从外部存储器获取输入矩阵a或者权重矩阵b的原数据。
[0167]
dmac主要用于将外部存储器ddr中的输入数据搬运到统一存储器506或将权重数据搬运到权重存储器502中或将输入数据数据搬运到输入存储器501中。
[0168]
向量计算单元507多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/fc层网络计算,如pooling(池化),batch normalization(批归一化),local response normalization(局部响应归一化)等。
[0169]
在一些实现种,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于
在神经网络中的后续层中的使用。
[0170]
控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
[0171]
统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为on-chip存储器。外部存储器私有于该npu硬件架构。
[0172]
图8是一种用于算子计算过程中的跳读跳写场景示意图。本技术中的静态计算单元只完成固定数据形状的数据的计算,其实现关键是在数据空间里,需要切分出每次计算所需的数据。该数据空间指的是通过数据形状定义的用于保存数据的逻辑空间,其地址是多维的,实际位于内存空间中;而内存空间可以指的是在内存中用于保存数据的存储空间,其地址是一维的。如图8所示,灰色部分为某次静态计算单元需要计算的数据。在内存空间展开后,可以看出灰色部分是不连续的,所以可以采用跳读跳写的方式,从内存空间中获取静态计算单元每次计算需要的数据,以及计算完成后,将计算得到的输出数据保存至内存空间中。
[0173]
图9是一种跳读跳写支持方式示意图。本技术中支持跳读跳写的方法之一是增加一个接口,比如:bind_buffer(axis,stride,offset)接口,该接口的作用是建立静态计算单元的tensor(张量)与buffer(缓存)的映射关系。如图8所示,tensor(张量)对应于该静态计算单元需要处理的数据(图9中灰色部分),buffer(缓存)的大小与数据空间保存的数据的大小一致。其中,axis(轴)指的是该tensor所在的各个维度;offset(偏移)为该tensor在需要读取数据的维度上的偏移;stride(步幅)指的是该tensor在需要读取数据的维度上需要跳过的数据长度。可见,本技术通过映射多个维度,可以实现多维数据空间的跳读跳写。
[0174]
图10是一种尾部数据处理方式示意图,该尾部数据指的是在一个维度上被静态计算单元逻辑划分时,得到的需要处理的数据长度比静态计算单元支持处理的数据长度小的一段数据。如图10所示,针对该尾部数据,可以有4种处理方式:
[0175]
方式1、丢弃无效数据,即将尾部数据超出部分丢弃,优点:标量计算小,缺点:无效计算多。
[0176]
方式2、部分数据重叠,即将尾部数据超出部分向前平移,部分数据重叠,优点:标量计算小,缺点:重复计算多。也就是说,可以尾部数据超出部分与另一计算单元需要处理的数据进行重叠,即计算尾部数据的静态计算单元读取数据时,可以将起始位置设置在另一计算单元需要处理的数据中,从而造成部分数据重叠。
[0177]
方式3、支持数据全范围内变化,即数据在每个维度上的数据长度比较小时,可以在整个数据长度内的变化。比如:数据长度为16,可以支持在0至16内变化。
[0178]
方式4、支持数据部分范围内变化,即数据在每个维度上的数据长度比较大时,只支持在该数据长度的尾部小范围内的变化。比如:数据长度为100,可以支持在90至100内变化。
[0179]
上述方式3和方式4均是数据形状变化的处理方式,优点:重复计算少,缺点:标量计算多
[0180]
图11是一种参数表结构示意图,该参数表是用于描述ai网络支持处理的数据形状的参数数据的一种形式。如图11所示,左侧为ai网络支持处理的目标数据的数据形状的一种逻辑切分方式(也可以切分成不同大小的数据形状),逻辑切分得到的每个数据形状都对
应着一次静态计算单元调用,右侧为参数表的数据结构。参数表是用于描述静态计算单元组合模式的数据结构,表中每一项都对应着一次静态计算单元的调用和待调用静态计算单元需要计算的数据在目标数据中的位置。其中,表项中的数据参数主要包括:
[0181]
1)待调用静态计算单元的id;
[0182]
2)目标数据在每个维度上的数据长度,比如:图11中的数据长度0为目标数据在宽度这个维度上的数据长度,数据长度1为目标数据在长度这个维度上的数据长度。
[0183]
3)待调用静态计算单元需要计算的数据在每个维度上的偏移,比如:图11中的偏移0为目标数据在宽度这个维度上的偏移,偏移1为目标数据在长度这个维度上的偏移。
[0184]
4)待调用静态计算单元需要计算的数据在每个维度上的数据长度。
[0185]
另外,参数表中有个公共参数区用于保存各个表项中相同的参数,比如:目标数据在每个维度上的数据长度。
[0186]
参数表由组合算法生成的。比如:在二维下,组合算法就是做矩形块的拼接;在三维下,组合算法相当于立方体的拼接。
[0187]
参数表可以分档数据表。由于静态计算单元在处理尾部数据时,是可以变长的。示例性的,如图12所示三个例子均能支持一定变化范围的数据形状,所以不必每个数据形状都生成一个参数表,若以分档参数表的形式,可以有效减少缓存中的参数表个数。其中,图12中左侧的变化范围指的是全局变化,比如:在某个维度上的数据长度为16,全局变化范围可以为0至16;中间的变化范围指的是部分变化,比如:在某个维度上的数据长度为100,部分变化范围可以为90至100;右侧的变化范围指的是只有尾部数据变化。
[0188]
值得说明的是,ai网络需要支持的数据形状对应的参数表是自动生成的,无需用户配置。该参数表的特征可以包括:1)一种可以描述静态计算单元调用顺序的数据结构;2)还可以描述每个静态计算单元计算的数据块在原始数据中的位置(即各静态计算单元对应的具有第二数据形状的数据块在具有第一数据形状的数据块中的位置);3)参数表可以描述静态计算单元的组合模式,控制静态计算单元完成所有数据的计算。其中,静态计算单元可以是二进制的静态计算单元。即静态计算单元可以在版本发布前就编译成二进制文件,发布时以二进制文件的形式提供给用户。
[0189]
并且,通过组合二进制静态计算单元的方式可以支持任意范围数据shape的变化。该方式的特征可以包括:1)一次调用只能完成一块数据的计算;2)支持在原始数据空间中用跳读的方式抽取一块数据,计算完后用跳写的方式写入输出数据空间的对应位置;3)支持用数据驱动计算,包括具体调用哪个静态计算单元、完成哪块数据的计算,都可以通过参数表以数据形式导入。
[0190]
图13是一种融合算子示意图,融合算子指的是级联的不同类型算子,融合成一个算子一次性计算完成。静态计算单元4016内可以包含不同类型算子的静态计算单元,调用时以id区分。然后用参数表4015描述不同类型算子的静态计算单元的调用顺序以及相关参数,这样就能完成融合算子的计算。如图13所示,静态计算单元4016包含conv算子的静态计算单元、relu算子的静态计算单元、abs算子的静态计算单元、exp算子的静态计算单元等,调用时以id区分;参数表4015描述conv算子的静态计算单元、relu算子的静态计算单元、abs算子的静态计算单元、exp算子的静态计算单元等的调用顺序和相关参数。其中,相关参数可以包括各个静态计算单元支持处理的第二数据形状的大小;还可以包括各个静态计算
单元支持处理的第二数据形状的数据在具有第一数据形状的数据中的位置信息。
[0191]
图14是一种算子计算过程示意图,在ai网络执行状态调用算子时,如图14所示,将参数表作为静态计算单元的入参之一,算子会根据参数表的内容依次调用静态计算单元完成算子计算。
[0192]
图15是一种算子计算过程示意图,如图15所示,左侧的计算过程示意图一指的是三维单输入场景下的算子计算过程;右侧的计算过程示意图二指的是两个算子输入,一个两维的输入数据和一个一维的输入数据。
[0193]
图16是一种算子计算过程示意图,如图16所示,在遍历每个ai算子需要支持的数据形状时,先查询缓存中是否有支持的参数表,若有,则使用缓存中的参数表;若没有,则先用简化的组合算法生成参数表置于缓存中,同时起线程调用优化的组合算法生成参数表并更新缓存,这样在ai网络第一次起动时,能以最快速度完成网络初始化,而后面再打开ai网络时就可以用优化的参数表,从而提高了用户体验。其中,简化的组合算法指的是只用相同的静态计算单元,组合算法时间最短;优化的组合算法指的是使用不同的静态计算单元做最优组合,组合算法时间较长。
[0194]
接下来,请参阅图17,图17是本技术实施例提供的一种算子计算方法的流程示意图。其中,该算子计算方法可以用于ai网络。如图17所示,该算子计算方法可以包括以下步骤:
[0195]
s171、获取ai网络的第一数据形状的参数数据,第一数据形状是ai网络支持处理的每个维度上的数据长度,参数数据包括至少两个计算单元的组合信息,每个计算单元支持处理的数据为具有第二数据形状的数据,每个计算单元的第二数据形状按照组合信息组合后在任一维度上的数据长度大于或等于第一数据形状在同一维度上的数据长度。
[0196]
在一些实施例中,参数数据中的至少两个计算单元可以包括相同的计算单元;或不同的计算单元;或相同的计算单元和不同的计算单元;其中,相同的计算单元的第二数据形状,在每个维度上的数据长度均相同;不同的计算单元的第二数据形状,在至少一个维度上的数据长度不同。
[0197]
参数数据中的至少两个计算单元可以均为ai网络的计算单元。
[0198]
参数数据中的至少两个计算单元的组合信息可以包括组合模式,这样每个计算单元的第二数据形状按照该组合模式组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度。
[0199]
参数数据中还可以包括针对指定计算单元的标识信息;其中,指定计算单元指的是所述至少两个计算单元中需要处理的数据为具有第三数据形状的数据的计算单元,第三数据形状在至少一个维度上的数据长度小于指定计算单元支持处理的第二数据形状在同一维度上的数据长度。示例性的,第三数据形状的数据可以是图10中涉及到的尾部数据。
[0200]
参数数据中还可以包括指定计算单元针对具有第三数据形状的数据的指定处理方式。其中,指定处理方式可以包括:丢弃无效数据,所述无效数据是所述指定计算单元支持处理的第二数据形状中除了具有所述第三数据形状的数据之外的数据;或数据重叠,所述数据重叠是将所述无效数据与另一计算单元需要处理的数据进行重叠。示例性的,丢弃无效数据可以是图10中涉及到的方式1;数据重叠可以是图10中涉及到的方式2。
[0201]
参数数据中还可以包括指定计算单元支持所述第三数据形状在每个维度上的指
定变化范围。其中,指定变化范围可以为所述指定计算单元支持处理的第二数据形状在每个维度上的数据长度;或所述第二数据形状在每个维度上的数据长度中的指定部分长度。示例性的,指定变化范围可以是图10中涉及到的方式3和方式4。
[0202]
参数数据包括分档参数数据,分档参数数据用于支持指定变化范围的数据形状。示例性的,如图12所示三个例子均能支持一定变化范围的数据形状,所以不必每个数据形状都生成一个参数表,若以分档参数表的形式,可以有效减少缓存中的参数表个数。
[0203]
参数数据中的至少两个计算单元可以属于不同类型的算子,这样可以通过调用参数数据中这些不同类型算子的计算单元来完成融合算子的计算,从而避免了一种类型的算子计算完再调用另一个类型的算子进行计算,提高了融合算子的计算效率。示例性的,如图13所示,静态计算单元4016包含conv算子的静态计算单元、relu算子的静态计算单元、abs算子的静态计算单元、exp算子的静态计算单元等,调用时以id区分;参数表4015描述conv算子的静态计算单元、relu算子的静态计算单元、abs算子的静态计算单元、exp算子的静态计算单元等的调用顺序和相关参数。
[0204]
s172、调用至少两个计算单元,对具有第一数据形状的第一目标数据进行计算。
[0205]
在一些实施例中,可以从计算单元算子库中获取至少两个计算单元;通过至少两个计算单元对具有第一数据形状的第一目标数据进行计算。示例性的,如图5所示,执行主机4001可以导入编译主机4002已发布的静态计算单元二进制包4020,这样可以从静态计算单元二进制包4020获取至少两个计算单元,通过所述至少两个计算单元对具有第一数据形状的第一目标数据进行计算。
[0206]
可以确定任一计算单元中需要处理的第二目标数据在第一目标数据中的目标位置;按照目标位置从存储有第一目标数据的内存空间中,获取任一计算单元需要处理的第二目标数据;通过任一计算单元对第二目标数据进行计算。示例性的,如图11所示,左侧为ai网络支持处理的目标数据的数据形状的一种逻辑切分方式(也可以切分成不同大小的数据形状),逻辑切分得到的每个数据形状都对应着一次静态计算单元调用,右侧为参数表的数据结构。参数表是用于描述静态计算单元组合模式的数据结构,表中每一项都对应着一次静态计算单元的调用和待调用静态计算单元需要计算的数据在目标数据中的位置,这样可以根据待调用静态计算单元需要计算的数据在目标数据中的位置获取需要计算的数据,调用待调用静态计算单元对需要计算的数据进行计算。
[0207]
由此,通过上述方案,可以支持任意范围数据形状的变化,实现了ai动态形状算子功能,提高了ai网络启动速度。
[0208]
基于上述实施例中的方法,本技术实施例还提供了一种算子计算装置,其中,该算子计算装置用于ai网络。请参阅图18,图18是本技术实施例提供的一种算子计算装置的结构示意图,如图18所示,该算子计算装置包括:
[0209]
获取模块181,被配置为获取ai网络的第一数据形状的参数数据,所述第一数据形状是ai网络支持处理的每个维度上的数据长度,所述参数数据包括至少两个计算单元的组合信息,每个计算单元支持处理的数据为具有第二数据形状的数据,每个计算单元的第二数据形状按照所述组合信息组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度;
[0210]
计算模块182,被配置为调用所述至少两个计算单元,对具有所述第一数据形状的
第一目标数据进行计算。
[0211]
在一种可能的实现方式中,所述至少两个计算单元包括相同的计算单元;或不同的计算单元;或相同的计算单元和不同的计算单元;
[0212]
其中,相同的计算单元的第二数据形状,在每个维度上的数据长度均相同;不同的计算单元的第二数据形状,在至少一个维度上的数据长度不同。
[0213]
在一种可能的实现方式中,所述至少两个计算单元均为ai网络的计算单元。
[0214]
在一种可能的实现方式中,所述组合信息包括所述至少两个计算单元的组合模式;
[0215]
每个计算单元的第二数据形状按照所述组合模式组合后在任一维度上的数据长度大于或等于所述第一数据形状在同一维度上的数据长度。
[0216]
在一种可能的实现方式中,所述参数数据中还包括针对指定计算单元的标识信息;
[0217]
其中,所述指定计算单元指的是所述至少两个计算单元中需要处理的数据为具有第三数据形状的数据的计算单元,所述第三数据形状在至少一个维度上的数据长度小于所述指定计算单元支持处理的第二数据形状在同一维度上的数据长度。
[0218]
在一种可能的实现方式中,所述参数数据中还包括所述指定计算单元针对所述具有第三数据形状的数据的指定处理方式。
[0219]
在一种可能的实现方式中,所述指定处理方式包括:
[0220]
丢弃无效数据,所述无效数据是所述指定计算单元支持处理的第二数据形状中除了具有所述第三数据形状的数据之外的数据;或
[0221]
数据重叠,所述数据重叠是将所述无效数据与另一计算单元需要处理的数据进行重叠。
[0222]
在一种可能的实现方式中,所述参数数据中还包括所述指定计算单元支持所述第三数据形状在每个维度上的指定变化范围。
[0223]
在一种可能的实现方式中,所述指定变化范围为所述指定计算单元支持处理的第二数据形状在每个维度上的数据长度;或所述第二数据形状在每个维度上的数据长度中的指定部分长度。
[0224]
在一种可能的实现方式中,所述参数数据包括分档参数数据,所述分档参数数据用于支持指定变化范围的数据形状。
[0225]
在一种可能的实现方式中,所述计算模块182包括:
[0226]
第一获取子模块,被配置为从计算单元算子库中获取所述至少两个计算单元;
[0227]
第一计算子模块,被配置为通过所述至少两个计算单元对具有所述第一数据形状的第一目标数据进行计算。
[0228]
在一种可能的实现方式中,所述计算模块182包括:
[0229]
确定子模块,被配置为针对任一计算单元,确定所述任一计算单元中需要处理的第二目标数据在所述第一目标数据中的目标位置;
[0230]
第二获取子模块,被配置为按照所述目标位置从存储有所述第一目标数据的内存空间中,获取所述任一计算单元需要处理的第二目标数据;
[0231]
第二计算子模块,被配置为通过所述任一计算单元对所述第二目标数据进行计
算。
[0232]
在一种可能的实现方式中,所述目标位置包括:所述第二目标数据所在的各个维度;以及,针对任一维度,所述第二目标数据在所述任一维度上的偏移和数据长度。
[0233]
在一种可能的实现方式中,所述至少两个计算单元属于不同类型的算子。
[0234]
在一种可能的实现方式中,所述计算单元为预先编译好的算子。
[0235]
应当理解的是,上述装置用于执行上述实施例中的方法,装置中相应的程序模块,其实现原理和技术效果与上述方法中的描述类似,该装置的工作过程可参考上述方法中的对应过程,此处不再赘述。
[0236]
基于上述实施例中的方法,本技术实施例还提供了一种算子计算装置。请参阅图19,图19是本技术实施例提供的一种算子计算装置的结构示意图。如图19所示,本技术实施例提供的算子计算装置,该算子计算装置可用于实现上述方法实施例中描述的方法。
[0237]
该算子计算装置包括至少一个处理器1601,该至少一个处理器1601可支持算子计算装置实现本技术实施例中所提供的控制方法。
[0238]
该处理器1601可以是通用处理器或者专用处理器。例如,处理器1601可以包括中央处理器(central processing unit,cpu)和/或基带处理器。其中,基带处理器可以用于处理通信数据(例如,确定目标屏幕终端),cpu可以用于实现相应的控制和处理功能,执行软件程序,处理软件程序的数据。
[0239]
进一步的,算子计算装置还可以包括收发单元1605,用以实现信号的输入(接收)和输出(发送)。例如,收发单元1605可以包括收发器或射频芯片。收发单元1605还可以包括通信接口。
[0240]
可选地,算子计算装置还可以包括天线1606,可以用于支持收发单元1605实现算子计算装置的收发功能。
[0241]
可选地,算子计算装置中可以包括一个或多个存储器1602,其上存有程序(也可以是指令或者代码)1604,程序1604可被处理器1601运行,使得处理器1601执行上述方法实施例中描述的方法。可选地,存储器1602中还可以存储有数据。可选地,处理器1601还可以读取存储器1602中存储的数据(例如,预存储的第一特征信息),该数据可以与程序1604存储在相同的存储地址,该数据也可以与程序1604存储在不同的存储地址。
[0242]
处理器1601和存储器1602可以单独设置,也可以集成在一起,例如,集成在单板或者系统级芯片(system on chip,soc)上。
[0243]
关于算子计算装置在上述各种可能的设计中执行的操作的详细描述可以参照本技术实施例提供的算子计算方法的实施例中的描述,在此就不再一一赘述。
[0244]
基于上述实施例中的装置,本技术实施例还提供了一种算子计算设备,该算子计算设备包含上述实施例中所提供的任一算子计算装置。
[0245]
可以理解的是,本技术实施例中,算子计算设备可以为手机、平板电脑、数码相机、个人数字助理(personal digitalassistant,pda)、可穿戴设备、智能电视、华为智慧屏等终端设备。终端设备的示例性实施例包括但不限于搭载ios、android、windows、鸿蒙系统(harmony os)或者其他操作系统的终端设备。上述终端设备也可以是其他终端设备,诸如具有触敏表面(例如触控面板)的膝上型计算机(laptop)等。本技术实施例对终端设备的类型不做具体限定。其中,终端设备的组件结构图,如图6所示。
[0246]
基于上述实施例中的算子计算设备,本技术实施例还提供了一种算子计算系统,算子计算设备和算子编译设备;其中,所述算子计算设备包含上述实施例中所提供的任一算子计算装置;所述算子编译设备用于编译出可发布的静态计算单元二进制包;所述算子计算设备用于导入所述静态计算单元二进制包。示例性的,算子计算设备可以为图5中的执行主机4001或图6中的终端设备,算子编译设备可以为图5中的编译主机4002。
[0247]
基于上述实施例中的方法,本技术实施例还提供了一种芯片。请参阅图20,图20为本技术实施例提供的一种芯片的结构示意图。如图20所示,芯片1900包括一个或多个处理器1901以及接口电路1902。可选的,芯片1900还可以包含总线1903。其中:
[0248]
处理器1901可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1901可以是通用处理器、数字通信器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0249]
接口电路1902可以用于数据、指令或者信息的发送或者接收,处理器1901可以利用接口电路1902接收的数据、指令或者其它信息,进行加工,可以将加工完成信息通过接口电路1902发送出去。
[0250]
可选的,芯片还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(nvram)。
[0251]
可选的,存储器存储了可执行软件模块或者数据结构,处理器可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
[0252]
可选的,接口电路1902可用于输出处理器1901的执行结果。
[0253]
需要说明的,处理器1901、接口电路1902各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
[0254]
应理解,上述方法实施例的各步骤可以通过处理器中的硬件形式的逻辑电路或者软件形式的指令完成。
[0255]
可以理解的是,本技术的实施例中的处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
[0256]
本技术的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至
处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。
[0257]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0258]
可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献