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

一种可实现算力抽象的方法和系统与流程

2022-11-09 23:12:34 来源:中国专利 TAG:


1.本技术涉及电数字数据处理技术领域,具体涉及一种可实现算力抽象的方法和系统。


背景技术:

2.近些年来,算力作为核心生产力,呈现出泛在化、异构化特征。产业数字化转型对算力的效率提出了更高要求,因此出现了图形处理器(graphics processing unit,gpu)、现场可编程门阵列(field programmable gate array,fpga)、专用集成电路(application specific integrated circuit,asic)等异构芯片,算力资源从传统中央处理器(central processing unit,cpu)通用算力演变为多种硬件混合的异构计算。当前,面向异构计算的应用开发系统多为竖井模式。通常,各个硬件厂商使用各自的开发生态,彼此之间不互通。一种单个厂商的开发系统如图1所示,主要分为3层:应用开发层:基于业务需求开发代码。
3.编译层:编译器前端对代码进行解析,生成中间表达;输入后端进行优化,形成硬件可以理解的机器语言代码;通过链接器生成可执行文件。
4.算力资源层:提供运行时库,执行目标程序。
5.现有技术的异构算力场景中,通常存在不同硬件厂商之间的开发生态隔离、代码迁移难和资源利用低等问题。


技术实现要素:

6.本技术的至少一个实施例提供了一种可实现算力抽象的方法和系统,用于解决现有技术的异构算力场景中不同硬件厂商之间的开发生态隔离、代码迁移难和资源利用低等问题中的至少一个。
7.为了解决上述技术问题,本技术是这样实现的:第一方面,本技术实施例提供了一种可实现算力抽象的方法,包括:对开发代码进行解析,识别出控制代码和加速代码,通过将所述控制代码和加速代码分别与算子接口进行映射,并对设备管理接口、内核调度接口、内存管理接口中的至少一个进行配置,得到原生代码;基于所述原生代码生成流转代码;基于所述流转代码进行资源匹配,并根据资源匹配结果进行硬件链接,生成可执行文件。
8.可选的,所述算子接口用于定义计算类运算的统一表述;所述设备管理接口用于注册和管理硬件资源,获取、初始化和配置硬件信息;内核调度接口用于统一描述计算的调度类型、调度特征和属性;内存管理接口用于规范内存分配释放、拷贝迁移和优先级描述。
9.可选的,所述控制代码包括所述开发代码中的参数配置代码和/或执行流程代码;
所述加速代码包括所述开发代码中的能够通过异构硬件处理的代码部分。
10.可选的,对设备管理接口、内核调度接口、内存管理接口中的至少一个进行配置,包括以下至少一种:将控制代码中的内存使用及地址配置与内存管理接口进行统一表述映射;将控制代码中的设备资源申请及使用与设备管理接口进行统一表述映射;将控制代码中的进程管理及时序控制与内核调度接口进行统一表述映射。
11.可选的,基于所述原生代码生成流转代码,包括:对所述原生代码进行执行效率的优化,得到优化后的控制代码和加速代码;根据预测得到的所述加速代码在不同硬件上的执行效率和性能分析结果,生成不同异构硬件执行所述加速代码的执行优先级;将优化后的控制代码和加速代码以及所述执行优先级,合并为可统一调度分配的流转代码。
12.可选的,基于所述流转代码进行资源匹配,包括:将优化后的控制代码和加速代码分别与算力抽象运行时库中注册的硬件资源进行匹配,根据匹配结果完成相关硬件注册和资源匹配,得到资源匹配结果,其中,在对加速代码进行资源匹配时,按照所述执行优先级,从所述算力抽象运行时库中选择优先级最高的可用硬件进行注册和资源匹配。
13.可选的,还包括:接收硬件注册信息,更新所述算力抽象运行时库中的硬件资源。
14.第二方面,本技术实施例提供了一种可实现算力抽象的系统,包括:算力抽象解析器,用于对开发代码进行解析,识别出控制代码和加速代码,通过将所述控制代码和加速代码分别与算子接口进行映射,并对设备管理接口、内核调度接口、内存管理接口中的至少一个进行配置,得到原生代码;算力抽象流转器,用于基于所述原生代码生成流转代码;算力抽象运行时库,用于基于所述流转代码进行资源匹配,并根据资源匹配结果进行硬件链接,生成可执行文件。
15.可选的,所述算子接口用于定义计算类运算的统一表述;所述设备管理接口用于注册和管理硬件资源,获取、初始化和配置硬件信息;内核调度接口用于统一描述计算的调度类型、调度特征和属性;内存管理接口用于规范内存分配释放、拷贝迁移和优先级描述。
16.可选的,所述控制代码包括所述开发代码中的参数配置代码和/或执行流程代码;所述加速代码包括所述开发代码中的能够通过异构硬件处理的代码部分。
17.可选的,所述算力抽象解析器,还用于执行以下处理中的至少一种:将控制代码中的内存使用及地址配置与内存管理接口进行统一表述映射;将控制代码中的设备资源申请及使用与设备管理接口进行统一表述映射;将控制代码中的进程管理及时序控制与内核调度接口进行统一表述映射。
18.可选的,还包括:算力抽象代码生成器,用于对所述原生代码进行执行效率的优化,得到优化后的控制代码和加速代码;根据预测得到的所述加速代码在不同硬件上的执行效率和性能分析
结果,生成不同异构硬件执行所述加速代码的执行优先级;所述算力抽象流转器,还用于将优化后的控制代码和加速代码以及所述执行优先级,合并为可统一调度分配的流转代码。
19.可选的,所述算力抽象运行时库,还用于将优化后的控制代码和加速代码分别与算力抽象运行时库中注册的硬件资源进行匹配,根据匹配结果完成相关硬件注册和资源匹配,得到资源匹配结果,其中,在对加速代码进行资源匹配时,按照所述执行优先级,从所述算力抽象运行时库中选择优先级最高的可用硬件进行注册和资源匹配。
20.可选的,所述算力抽象运行时库,还用于接收硬件注册信息,更新所述算力抽象运行时库中的硬件资源。
21.与现有技术相比,本技术实施例提供的可实现算力抽象的方法和系统,提出了一种跨厂商的异构硬件的统一开发系统,通过统一的开发环境和松耦合的开发架构,使开发者的一套代码能够实现异构部署,从而解决硬件厂商之间的开发生态隔离、代码迁移难等问题,提升了资源利用率。
附图说明
22.图1为一种单个厂商的开发系统的结构示意图;图2为现有技术中不同厂商开发生态隔离的示意图;图3为本技术实施例的可实现算力抽象的系统的架构示意图;图4为本技术实施例的可实现算力抽象的方法的流程示意图。
具体实施方式
23.下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
24.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。说明书以及权利要求中“和/或”表示所连接对象的至少其中之一。
25.现有技术的异构开发中,不同硬件厂商通常存在以下问题:一、开发生态隔离如图2所示,不同硬件厂商为自有硬件提供定制开发环境,生态相互隔离。各个厂商芯片架构和软件栈碎片化,呈现出烟囱式的技术栈,不同厂家的软硬件技术栈差异大,导致应用代码和硬件紧耦合,更新和维护代价高,新硬件出现时,难以快速适配和调优。
26.二、 迁移难度大由于硬件架构差异,基础开发语言不同,导致在不同的芯片架构实现同一个功能,
需要用不同的语言、基于不同的开发环境生成代码。例如:实现矩阵乘法功能,cpu、fpga和gpu需要用3种语言、3套代码实现。当业务在不同异构硬件间迁移时,代码迁移困难,难以复用,开发效率低下,如基于c /fortran的数据密集型应用,代码量多在百万行量级,异构平台上迁移工作量大。
27.三、 资源利用率低当前应用开发模式限制了算力调度方法,降低了基础设施层算力资源使用率。由于应用代码与硬件耦合,在进行资源调度时,用户需要指定特定的算力资源,对于算力提供商来说,一方面,在规划建设阶段,难以提前根据需求进行算力资源池的建设规划,可能造成投资的浪费;另一方面,在运营过程中,若用户申请的算力类型与资源池可提供的算力类型不匹配,则无法调用周边算力资源,有可能形成算力孤岛,降低算力资源使用率。
28.导致以上技术问题的核心在于缺乏一个跨厂商、异构硬件的统一开发系统,提供统一的开发环境和松耦合的开发架构,使开发者的一套代码可以实现异构部署,从而提升资源利用率。
29.为了解决以上问题中的至少一种,本技术实施例提供了一种可实现算力抽象的方法及系统,应用于异构算力场景中,该异构算力场景包括有多种不同的硬件,如cpu、gpu、asic等中的多种,具体可以是不同种类和/或不同设备厂商的硬件。本技术实施例提供的可实现算力抽象的系统,也可以称作算力抽象系统,该系统为面向算力网络领域的跨厂商、异构硬件的统一开发系统。
30.如图3所示,本技术实施例提供的可实现算力抽象的系统,包括算力抽象解析器、算力抽象流转器和算力抽象运行时库。其中,所述算力抽象解析器,用于对开发代码进行解析,识别出控制代码和加速代码,通过将所述控制代码和加速代码分别与算子接口进行映射,并对设备管理接口、内核调度接口、内存管理接口中的至少一个进行配置,得到原生代码。
31.这里,开发代码可以是开发者选择任意的软硬件栈进行程序开发所生成的代码,本技术实施例不对程序开发的语言进行限定,开发者可以选择任意的程序开发语言,如c、c 、python等,所述软硬件栈可以是tensorflow、pytorch、opengl、cuda等任意开发框架。所述控制代码通常包括所述开发代码中的参数配置代码和/或执行流程代码,所述加速代码通常包括所述开发代码中的能够通过异构硬件处理的代码部分。控制代码通常为由cpu执行的代码,加速代码为优先由不同于cpu的异构硬件执行的代码,异构硬件可以包括aisc、fpga、gpu等,在异构硬件资源不足时,控制代码可以由cpu执行。
32.本技术实施例中,所述算子接口用于定义计算类运算的统一表述,从而,规范了基础数学库、图像渲染识别、深度学习等计算类运算的统一表达。所述设备管理接口用于注册和管理硬件资源,获取、初始化和配置硬件信息。所述内核调度接口用于统一描述计算的调度类型、调度特征和属性。所述内存管理接口用于规范内存分配释放、拷贝迁移和优先级描述。
33.所述算力抽象流转器,用于基于所述原生代码生成流转代码。
34.所述算力抽象运行时库,用于基于所述流转代码进行资源匹配,并根据资源匹配结果进行硬件链接,生成可执行文件。
35.通过以上单元或模块,本技术实施例提供了一种统一的开发环境和松耦合的开发
架构,使得开发代码能够实现异构部署,从而解决硬件厂商之间的开发生态隔离、代码迁移难等问题,提升了资源利用率。
36.本技术实施例中,所述算力抽象解析器,还用于执行以下处理中的至少一种:将控制代码中的内存使用及地址配置与内存管理接口进行统一表述映射;将控制代码中的设备资源申请及使用与设备管理接口进行统一表述映射;将控制代码中的进程管理及时序控制与内核调度接口进行统一表述映射。
37.通过上述映射处理,可以支持不同程序开发语言开发得到的控制代码,实现算网资源层的松耦合结构,以支持多厂商、异构硬件的接入。
38.如图3所示,本技术实施例的上述系统还可以包括算力抽象代码生成器。所述算力抽象代码生成器,用于对所述原生代码进行执行效率的优化,得到优化后的控制代码和加速代码;根据预测得到的所述加速代码在不同硬件上的执行效率和性能分析结果,生成不同异构硬件执行所述加速代码的执行优先级。此时,所述算力抽象流转器,还用于将优化后的控制代码和加速代码以及所述执行优先级,合并为可统一调度分配的流转代码。这样,通过上述优化处理,可以提高代码执行效率,另外,还可以根据加速代码在异构硬件上的执行效率和性能分析结果,生成所述执行优先级,以选择执行效率和性能最优的可用硬件去执行对应的代码。
39.例如,所述算力抽象运行时库,还用于将优化后的控制代码和加速代码分别与算力抽象运行时库中注册的硬件资源进行匹配,根据匹配结果完成相关硬件注册和资源匹配,得到资源匹配结果,其中,在对加速代码进行资源匹配时,按照所述执行优先级,从所述算力抽象运行时库中选择优先级最高的可用硬件进行注册和资源匹配。这样,通过选择优先级最高的可用硬件进行注册和资源匹配,本技术实施例能够提高加速代码的执行效率和性能。
40.本技术实施例中,所述算力抽象运行时库,还用于接收硬件注册信息,更新所述算力抽象运行时库中的硬件资源,从而可以支持多厂商、异构硬件的接入。
41.图3所示的可实现算力抽象的系统中,具体可以包括三层结构,分别为算网应用开发层、算力抽象层和算网资源层。其中,所述算网应用开发层可以是为各种应用(如ai应用、大数据应用、云游戏、科学计算)开发生成对应的开发代码。所述算网资源层则包括各种用于计算的硬件资源,还可以包括网络和存储资源。所述算力抽象接口、算力抽象解析器、算力抽象代码生成器、算力抽象流转器和算力抽象运行时库均位于算力抽象层。
42.所述算力抽象层用于将上层业务代码按算力抽象接口所定义的算子,分配具体硬件执行。分配过程包括3步,第一步解析代码,拆分为算子(计算任务,如傅里叶变换、矩阵乘),第二步,对算子进行优化处理以提高执行效率(如同类算子的合并),并确定适合运行该算子的硬件类型及所对应的运行时,第三步,将算子链接到具体的运行时库,当有多个运行时库适合运行该算子时,将按优先级排序,按顺序确定其可用算力资源量,并最终选择一个适合运行该算子、并且算力资源充足的运行时进行链接。
43.所述算力抽象接口,定义了算力抽象系统中开发代码与软硬件技术栈解耦的统一规范,具体的,所述算力抽象接口包括:(1)算子接口:定义了计算相关的统一表述,规范基础数学库、图像渲染识别、深度学习等计算类运算的统一表达。
44.(2)设备管理接口:对于硬件的资源注册和管理,硬件信息的获取,初始化、配置。
45.(3)内核调度接口:计算的调度类型、调度特征和属性的统一描述。
46.(4)内存管理接口:规范算力抽象系统中内存分配释放、拷贝迁移、优先级描述。
47.可以看出,算力抽象接口定义了标准的、跨厂商、跨异构资源的编程规范,代码开发人员无需关注底层硬件的厂商、类型。算力抽象接口还定义了底层硬件的标准接入方法(如硬件注册方法、运行时库接入方法等),用于硬件接入后供算力抽象层进行算力调用。
48.所述算力抽象解析器:对开发代码进行显式解析和隐式解析,识别开发代码中控制代码和加速代码,与算子接口进行映射,实现控制、加速代码的拆分与统一描述。
49.所述算力抽象代码生成器:对于原生代码进行提高执行效率的优化和性能分析(预测计算任务在不同硬件上的执行效率,经验分析不同硬件的执行优先级),生成抽象代码,分为三段:控制段、加速段、优先级。控制代码主要指在cpu上运行、加速代码是在异构硬件上运行,优先级指的是执行最优的异构设备排序队列。
50.所述算力抽象流转器:将三段式的抽象代码合并为可统一调度分配的流转代码。
51.所述算力抽象运行时库:松耦合架构,各硬件厂商将硬件运行时库,编译器后端集成进来,将流转代码实际部署执行,包含具体硬件可执行流转代码的动态链接库,程序运行时对设备、内核、内存的管理。
52.本技术实施例还提供了一种可实现算力抽象的方法,如图4所示,包括:步骤41,对开发代码进行解析,识别出控制代码和加速代码,通过将所述控制代码和加速代码分别与算子接口进行映射,并对设备管理接口、内核调度接口、内存管理接口中的至少一个进行配置,得到原生代码。
53.这里,所述算子接口用于定义计算类运算的统一表述。所述设备管理接口用于注册和管理硬件资源,获取、初始化和配置硬件信息。所述内核调度接口用于统一描述计算的调度类型、调度特征和属性。所述内存管理接口用于规范内存分配释放、拷贝迁移和优先级描述。所述控制代码包括所述开发代码中的参数配置代码和/或执行流程代码。所述加速代码包括所述开发代码中的能够通过异构硬件处理的代码部分。
54.对设备管理接口、内核调度接口、内存管理接口中的至少一个进行配置,包括以下至少一种:将控制代码中的内存使用及地址配置与内存管理接口进行统一表述映射;将控制代码中的设备资源申请及使用与设备管理接口进行统一表述映射;将控制代码中的进程管理及时序控制与内核调度接口进行统一表述映射。
55.另外,本技术实施例可以通过不同的方式识别出开发代码中的控制代码和加速代码。例如,在开发代码中预先定义或注释了不同代码部分的属性时,例如,指定了某个部分的代码为host代码(控制代码),某个部分的代码为device代码(加速代码),则可以基于开发代码中的预先定义或注释的属性信息,确定出各个控制代码和加速代码。又例如,本技术实施例还可以预先训练一种用于识别控制代码和加速代码的神经网络模型,利用该模型来识别出上述代码部分。
56.步骤42,基于所述原生代码生成流转代码。
57.这里,本技术实施例可以对所述原生代码进行执行效率的优化,得到优化后的控制代码和加速代码;根据预测得到的所述加速代码在不同硬件上的执行效率和性能分析结果,生成不同异构硬件执行所述加速代码的执行优先级;将优化后的控制代码和加速代码
以及所述执行优先级,合并为可统一调度分配的流转代码。
58.步骤43,基于所述流转代码进行资源匹配,并根据资源匹配结果进行硬件链接,生成可执行文件。
59.这里,本技术实施例将优化后的控制代码和加速代码分别与算力抽象运行时库中注册的硬件资源进行匹配,根据匹配结果完成相关硬件注册和资源匹配,得到资源匹配结果,其中,在对加速代码进行资源匹配时,按照所述执行优先级,从所述算力抽象运行时库中选择优先级最高的可用硬件进行注册和资源匹配。
60.另外,所述算力抽象运行时库可以接收各种硬件注册信息,更新所述算力抽象运行时库中的硬件资源。
61.通过以上步骤,本技术实施例实现了一种统一的开发环境和松耦合的开发架构,使得开发者的一套开发代码能够实现异构部署,解决了硬件厂商之间的开发生态隔离、代码迁移难等问题,提升了资源利用率。
62.下面提供一个更为具体的基于上述的可实现算力抽象的系统的方法示例,对以上方法作进一步的说明。
63.该示例包括:步骤s1: 开发者选择任意的软硬件栈进行程序开发,生成开发代码;在一个具体实现中,开发者选择任意c、c 、python等程序开发语言,所述软硬件栈可以是tensorflow、pytorch、opengl、cuda等任意开发框架,进行程序开发,生成开发代码。
64.步骤s2: 算力抽象解析器对开发代码进行显式解析和隐式解析,识别出控制代码和并行加速的代码,把这部分的代码与算子接口进行映射,对设备管理接口、内核调度接口、内存管理接口进行配置,生成原生代码。
65.在一个具体实现中,显式解析可以是对cuda、opengl中特定的编程接口定义或者是宏注释的转换。
66.在一个具体实现中,隐式解析可以是对用户没有进行特殊标注或编程接口定义的代码部分进行智能识别并转换。
67.在一个具体实现中,基于显式和隐式解析识别出控制代码和并行加速代码,控制代码可以是包括参数配置、执行流程等代码部分,并行加速代码可以被算力网络中异构硬件特殊优化处理的代码部分。
68.在一个具体实现中,并行加速代码如opengl中算子可与算子接口中图像渲染识别类运算进行统一表述映射。并行加速代码如tensorflow中算子可与算子接口中深度学习类运算进行统一表述映射。
69.在一个具体实现中,控制代码中的内存使用及地址配置可与内存管理接口进行统一表述映射。控制代码中的设备资源申请及使用可与设备管理接口进行统一表述映射。控制代码中的进程管理及时序控制可与内核调度接口进行统一表述映射。
70.在一个具体实现中,原生代码具体包含算力抽象接口统一表述的中间表达文件。
71.步骤s3:对于原生代码进行提高执行效率的优化和性能分析(预测计算在不同硬件上的执行效率,经验分析不同硬件的执行优先级),生成抽象代码,分为三段:控制代码、加速代码、执行优先级。控制代码一般在cpu上运行、加速代码一般在异构硬件上运行,优先
级指的是执行最优的异构设备排序队列;在一个具体实现中,优化具体指对执行流程、运算结构的优化,如算子的合并,常量的代替等。
72.在一个具体实现中,性能分析对算子接口统一表述的部分,按照cpu、gpu等异构硬件的执行能力进行预测,按照预测后的执行效率生成执行优先级。
73.步骤s4:抽象代码输入算力流转器,合并生成可统一调度分配的流转代码。
74.在一个具体实现中,所述的算力流转器将抽象代码中控制代码、加速代码和执行优先级合并为流转代码文件。
75.在一个具体实现中,流转代码具体指按照数据池、变量池、数据段、控制段、加速段、执行优先级配置数据段顺序编排的文件。
76.步骤s5:算力抽象运行时库接收硬件注册信息,完成运行时库的更新。
77.在一个具体实现中,运行时库可以是运行于cpu硬件上的算力抽象运行时、运行时库可以是运行于gpu硬件上的算力抽象运行时、运行于fpga硬件上的算力抽象运行时、运行于asic硬件上的算力抽象运行时等。
78.在一个具体实现中,运行于cpu上的算力抽象运行时接受流转代码中控制段、数据段、执行优先级配置数据段等与cpu相关的硬件代码,并完成信息注册。
79.在一个具体实现中,运行于gpu等异构硬件上的算力抽象运行时接受流转代码中加速段、数据段等与cpu相关硬件的代码,并完成信息注册。
80.松耦合架构,各硬件厂商将硬件运行时库,编译器后端集成进来,将流转代码实际部署执行,包含具体硬件可执行流转代码的动态链接库,程序运行时对设备、内核、内存的管理。
81.步骤s6:流转代码输入运行时库后,按照执行优先级、硬件注册信息进行资源匹配。
82.在一个具体实现中,流转代码中的执行优先级假设fpga第一优先级,gpu第二优先级、cpu第三优先级。
83.在一个具体实现中,同时包含fpga运行时、gpu运行时和cpu运行时,则流转代码将按照fpga第一优先级完成fpga相关的硬件注册及资源匹配。
84.在一个具体实现中,同时包含gpu运行时和cpu运行时,则流转代码将按照gpu第二优先级完成相关的硬件注册及资源匹配。
85.在一个具体实现中,仅包含cpu运行时,则流转代码将按照cpu第三优先级完成相关的硬件注册及资源匹配。
86.步骤s7:结合算力资源池算力类型,根据匹配结果进行特定硬件的即时链接,生成可执行文件。
87.在一个具体实现中,完成与cpu、gpu、fpga、asic等硬件的注册及资源匹配后,分配映射后的代码,完成特定硬件结构的机器语言动态翻译和运行时库链接,生成可在具体硬件上执行的可执行文件。
88.从以上所述可以看出,本技术实施例提出的算力抽象层,基于算力抽象接口,构建北向对接算网应用开发层,南向对接算网资源层的松耦合开发系统,北向可以支持多类应用开发,南向可以支持多厂商、异构硬件的接入,屏蔽异构硬件差异,实现业务开发无感、灵
活调度,解决了开发生态隔离和迁移难的问题。另外,本技术实施例还提出了一种可实现算力抽象的方法,实现一套代码的灵活迁移,提高代码执行效率,提升算力资源利用率。
89.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述可实现算力抽象的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等。
90.需要说明的是,在本文中,术语“包括”、“中包含”或者其任何其他变体意在涵盖非排他性的中包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
91.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
92.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献