基于CPU和GPU混合计算的在线服务方法及装置与流程
基于cpu和gpu混合计算的在线服务方法及装置
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种基于cpu和gpu混合计算的在线服务方法及装置。
背景技术:
2.当前的gpu(graphic processing unit,图形处理单元)具有很好的并行处理能力,在很多领域和应用场景中可以进行加速计算。特别是可以并行或批量的一次性处理若干计算任务。传统的cpu主要是单任务的计算,配套的在线服务接口和调用方式也比较简单。当前环境下的很多在线服务,需要融合gpu的功能进行改造,以便达到加速的效果。
3.现有的涉及cpu和gpu的在线计算服务中,一种方法是通过在每个机器人中安装算法sdk(software development kit,软件开发工具包)进行识别计算,由于硬件限制,识别效率缓慢,不能达到实时返回结果的效果,而且安装多次造成一定的资源浪费。另一种方法是进行云端请求,将图片上传到云端服务,得到识别的结果,但是当前云端的在线服务一般不能进行批量请求的物品图片识别,每次只能发送一张图片请求,吞吐量低且浪费计算资源。因此,现有的在线计算服务方法中存在计算效率低,硬件资源浪费严重的问题。
技术实现要素:
4.有鉴于此,本技术实施例提供了一种基于cpu和gpu混合计算的在线服务方法及装置,以解决现有技术存在的计算效率低,硬件资源浪费严重的问题。
5.本技术实施例的第一方面,提供了一种基于cpu和gpu混合计算的在线服务方法,包括:接收在线业务请求,将在线业务请求添加到缓存队列中;根据预设的定时任务或者触发事件,选择一个计算组件对缓存队列中的在线业务请求进行异步处理,其中,计算组件包括cpu和gpu;在调用计算组件对在线业务请求进行异步处理过程中,依据缓存队列中的在线业务请求的数量以及计算组件的平均计算耗时,确定每个计算组件对应的权重;依据每个计算组件对应的权重,动态调用cpu或者gpu执行在线业务请求,并将在线业务请求对应的业务结果存储到业务结果集合中,其中,业务结果集合中包含在线业务请求的标识信息以及与标识信息对应的业务结果信息。
6.本技术实施例的第二方面,提供了一种基于cpu和gpu混合计算的在线服务装置,包括:接收模块,被配置为接收在线业务请求,将在线业务请求添加到缓存队列中;处理模块,被配置为根据预设的定时任务或者触发事件,选择一个计算组件对缓存队列中的在线业务请求进行异步处理,其中,计算组件包括cpu和gpu;计算模块,被配置为在调用计算组件对在线业务请求进行异步处理过程中,依据缓存队列中的在线业务请求的数量以及计算组件的平均计算耗时,确定每个计算组件对应的权重;调用模块,被配置为依据每个计算组件对应的权重,动态调用cpu或者gpu执行在线业务请求,并将在线业务请求对应的业务结果存储到业务结果集合中,其中,业务结果集合中包含在线业务请求的标识信息以及与标识信息对应的业务结果信息。
7.本技术实施例的第三方面,提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述方法的步骤。
8.本技术实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
9.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:通过接收在线业务请求,将在线业务请求添加到缓存队列中;根据预设的定时任务或者触发事件,选择一个计算组件对缓存队列中的在线业务请求进行异步处理,其中,计算组件包括cpu和gpu;在调用计算组件对在线业务请求进行异步处理过程中,依据缓存队列中的在线业务请求的数量以及计算组件的平均计算耗时,确定每个计算组件对应的权重;依据每个计算组件对应的权重,动态调用cpu或者gpu执行在线业务请求,并将在线业务请求对应的业务结果存储到业务结果集合中,其中,业务结果集合中包含在线业务请求的标识信息以及与标识信息对应的业务结果信息。本技术提升了在线计算服务的计算效率,提高了硬件资源的利用率。
附图说明
10.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
11.图1是本技术实施例在实际场景中涉及到的请求处理流程示意图;图2是本技术实施例提供的基于cpu和gpu混合计算的在线服务方法的流程示意图;图3是本技术实施例提供的基于cpu和gpu混合计算的在线服务装置的结构示意图;图4是本技术实施例提供的电子设备的结构示意图。
具体实施方式
12.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
13.如背景技术所述内容,当前的gpu(graphic processing unit,图形处理单元)具有很好的并行处理能力,在很多领域和应用场景中可以进行加速计算。特别是可以并行或批量的一次性处理若干计算任务,具有明显优势。传统的cpu主要是单任务的计算,配套的在线服务接口和调用方式也比较简单。当前环境下的很多在线服务,需要融合gpu的功能进行改造,以便达到加速的效果。下面以机器人对于图像物品识别的计算服务方法举例,对现有的计算服务方法存在的问题进行详细说明。
14.现有的针对图像物品识别的计算服务方法主要包括以下两种方式:第一种方式是通过在每个机器人中安装算法sdk(software development kit,软件开发工具包)进行图
像识别计算,但是由于硬件限制,识别效率缓慢,不能达到实时返回结果的效果,而且安装多次造成一定的资源浪费。另外一种方式是进行云端的请求,将图片上传到云端服务,得到识别的结果,但是当前云端的在线服务一般不能进行批量请求的物品图片识别,每次只能发送一张图片请求,吞吐量低且浪费计算资源。
15.鉴于现有技术中存在的问题,本技术实施例提供一种能够提高计算效率以及硬件资源利用率的融合cpu和gpu混合计算环境下的在线服务方法,图1是本技术实施例在实际场景中涉及到的请求处理流程示意图,如图1所示,其中,请求消息发送给队列缓存,中间层基于定时任务或者触发事件对缓存队列中的在线业务请求进行异步处理,在对在线业务请求进行处理之后,将查询结果进行缓存,并利用dll算法包调用加锁单线程,根据调度算法在不同情况调用cpu/gpu批处理计算结果,最后将处理结果存储到结果存储集合中,等待定时查询数据库的处理,并返回查询结果。
16.图2是本技术实施例提供的基于cpu和gpu混合计算的在线服务方法的流程示意图。图2的基于cpu和gpu混合计算的在线服务方法可以由在线服务器执行。如图2所示,该基于cpu和gpu混合计算的在线服务方法具体可以包括:s201,接收在线业务请求,将在线业务请求添加到缓存队列中;s202,根据预设的定时任务或者触发事件,选择一个计算组件对缓存队列中的在线业务请求进行异步处理,其中,计算组件包括cpu和gpu;s203,在调用计算组件对在线业务请求进行异步处理过程中,依据缓存队列中的在线业务请求的数量以及计算组件的平均计算耗时,确定每个计算组件对应的权重;s204,依据每个计算组件对应的权重,动态调用cpu或者gpu执行在线业务请求,并将在线业务请求对应的业务结果存储到业务结果集合中,其中,业务结果集合中包含在线业务请求的标识信息以及与标识信息对应的业务结果信息。
17.具体地,本技术实施例是以机器人的图片物品识别作为在线服务场景为例进行展开描述的,因此,在线业务请求可以认为是机器人拍摄物品图片后,将物品图片上传给系统平台,由系统平台根据物品图片生成的用于图像物品识别的在线业务请求,生成的在线业务请求将发送给在线服务器进行识别处理。
18.进一步地,本技术实施例的计算组件包括cpu组件和gpu组件,其中,gpu(graphic processing unit,图形处理单元)具有很好的并行处理能力,能同时一次性批量处理若干计算任务,相比cpu,gpu具有更好的并行处理能力,能够提高混合计算环境下的吞吐量。另外,本技术实施例的机器人包括但不限于:智能移动机器人、送物机器人、酒店服务机器人、迎宾机器人等。
19.在一些实施例中,接收在线业务请求,将在线业务请求添加到缓存队列中,包括:接收云平台发送的原始图片数据对应的字符串,根据字符串生成在线业务请求,并将在线业务请求按照时间顺序加入到缓存队列中去;其中,字符串为机器人根据机器人舱内接收到的物品生成原始图片数据,并将原始图片数据发送至云平台,以使云平台对原始图片数据进行编码处理得到的字符串。
20.具体地,以送物机器人为例,机器人将舱内接收到的物品拍摄成图像后发送给云平台,由云平台调用接口(比如restful等类型接口)对原始图像进行编码处理(比如采用base64编码)得到字符串,并根据原始图像对应的字符串生成在线业务请求,再将在线业务
请求依次发送给在线服务器,当在线服务器接收到云平台发送的在线业务请求之后,将在线业务请求按照接收时间的前后顺序依次加入到缓存队列中去,等待图片识别的定时任务调用。
21.其中,原始图像的base64编码可以认为是将一张图片数据编码成一串字符串,使用该字符串代替图像地址url,例如:经常使用的方法是基于base64模块来实现原始图像数据的编码处理,之后进行传输,在服务器端收到数据流后对原始数据进行解码还原。
22.在一些实施例中,根据定时任务选择一个计算组件对缓存队列中的在线业务请求进行异步处理,包括:按照预设的定时任务执行时间间隔,将定时任务执行时间间隔内添加到缓存队列中的在线业务请求发送给gpu进行批量执行,或者将在线业务请求依次发送给cpu进行循环执行。
23.具体地,对于存储在缓存队列中的在线业务请求,存在以下两种调用方式:第一种是基于定时任务的异步执行,第二种是基于触发事件的异步执行;下面结合具体实施例分别对这两种调用方式的实现过程进行详细说明。
24.进一步地,在基于定时任务的在线业务请求的异步执行过程中,首先定时任务的执行时间根据实际单位时间内的请求量来确定,定时任务的执行时间可以认为是一种时间间隔,每当定时任务达到预设的定时任务执行的时间间隔之后,就将缓存队列中的所有在线业务请求发送给gpu批量执行,或者采用cpu依次循环执行缓存队列中的所有在线业务请求。
25.在一些实施例中,根据触发事件选择一个计算组件对缓存队列中的在线业务请求进行异步处理,包括:当缓存队列中的在线业务请求对应的请求数量达到数量阈值时,将缓存队列中的在线业务请求发送给gpu进行批量执行,或者将在线业务请求依次发送给cpu进行循环执行;或者,当cpu和gpu中的任意一个计算组件处于空间状态时,将缓存队列中的在线业务请求发送给空间状态的计算组件进行执行。
26.具体地,相比基于定时任务的异步执行机制,基于触发事件的异步执行机制则是根据在线业务请求的请求数量进行异步执行,当判断缓存队列中的在线业务请求的数量达到数量阈值时,可以采用以下执行方式中的任意一种来处理在线业务请求,例如包括:(1)将缓存队列中的在线业务请求发送给gpu进行批量执行;(2)将缓存队列中的在线业务请求发送给cpu进行依次循环执行;(3)当cpu和gpu中的任意一个计算组件处于空间状态时,将缓存队列中的在线业务请求发送给空间状态的计算组件进行执行。
27.进一步地,由于一台机器的cpu和gpu性能有所差异,对于不同型号、不同性能的cpu以及gpu,在实际调用时的调用率也不同,这取决于缓存队列中的请求数量以及两种计算速度的差异,当缓存队列中的请求数量到达一个限定值时会选择特定的计算方式。当cpu或者gpu被占用计算时,优先选择空闲的计算单元进行计算。当两者都空闲时,可以依据本技术实施例提出的权重计算方法,进行选择计算。
28.在一些实施例中,当cpu和gpu均处于空间状态时,采用以下公式对每个所述计算组件对应的权重进行计算:
其中,表示cpu对应的权重,表示gpu对应的权重,表示缓存队列中的在线业务请求,表示当前gpu并行计算的任务能力,表示cpu在过去时间段内平均执行一次在线业务请求的计算耗时,表示gpu在过去时间段内平均执行一次在线业务请求的计算耗时。
29.在实际应用中,可以将当前缓存队列中的请求记作request,当前缓存队列中包含了k个请求,分别记为。上述过去时间段可以选用过去一个小时来计算cpu和gpu的平均耗时。
30.具体地,根据缓存队列中在线业务请求的数量,当前gpu并行计算的任务能力,过去时间段内cpu平均执行一次在线业务请求的计算耗时,以及过去时间段内gpu平均执行一次在线业务请求的计算耗时,分别对每个计算组件的权重进行计算,由于以上影响权重计算的因素是实时变化的,因此计算组件对应的权重也是动态的权重,依据权重计算结果选择合适的计算组件来执行在线业务请求。
31.在一些实施例中,依据每个计算组件对应的权重,动态调用cpu或者gpu执行在线业务请求,包括:当在线业务请求的请求数量低于预设阈值时,选择调用平均计算耗时低的计算组件执行在线业务请求;当在线业务请求的请求数量高于当前gpu并行计算的任务能力时,选择调用gpu执行在线业务请求;当cpu的平均计算耗时低于gpu的平均计算耗时,缓存队列中的在线业务请求的请求数量低于预设阈值,且cpu当前处于空闲状态时,选择调用cpu执行在线业务请求;当缓存队列中的在线业务请求使用cpu进行循环执行时的预计耗时大于使用gpu进行批量执行时的预计耗时,选择调用gpu执行在线业务请求。
32.具体地,在一个可选示例中,当缓存队列中在线业务请求的数量较低时,比如设定数量阈值为10,当在线业务请求的数量低于10个时,优先选择平均计算耗时低的计算组件来执行缓存队列中在线业务请求,当在线业务请求的数量高于10个时,优先选择gpu组件来并行执行缓存队列中在线业务请求,达到高吞吐的目的。也就是说对于gpu性能比较高的机器,每次任务执行,优先走gpu计算,当gpu被占用时,使用cpu执行单个请求,并在下一次请求时检查gpu的占用状态。
33.进一步地,对于cpu性能较高,gpu性能较差的机器,当请求队列(即缓存队列)中有较少的请求且cpu当前处于空闲状态时,优先考虑使用cpu循环计算,当请求队列中所有请求使用cpu循环执行结束后的时间》 gpu执行时间时,采用gpu执行。
34.在一些实施例中,将在线业务请求对应的业务结果存储到业务结果集合中,包括:当在线业务请求执行完成之后,将在线业务请求对应的标识信息以及业务结果信息缓存到业务结果集合中,当接收到具有相同标识信息的在线业务请求之后,将业务结果集合中预
先缓存的标识信息对应的业务结果信息发送给在线服务器。
35.具体地,将每个在线业务请求对应的识别结果存储到业务结果集合中,并等待查询结果任务查询返回,需要说明的是,每个在线业务请求具有唯一的标识信息,以便对应每个在线业务请求的业务结果信息;将每个在线业务请求的标识信息以及识别结果(业务结果信息)缓存起来,以便当在线服务器接收相同物品图像的在线业务请求是,能够通过查询业务结果集合迅速获取对应的业务结果信息发送给在线服务器。
36.进一步地,本技术实施例还提供了异步调用结果存储服务,以便将在线业务请求信息以及识别结果(业务结果信息)存储到数据库中,数据库采用分表存储,存储信息包括但不限于以下信息:在线业务请求信息、业务结果信息、服务器信息、cpu执行信息和gpu执行信息,通过存储上述信息,方便后续统计各个服务器以及cpu和gpu的执行效率。
37.根据本技术实施例提供的技术方案,本技术实施例提供了基于cpu和gpu混合调用算法的可持续服务流程,本技术为了能够对诸如图片识别算法等需要cpu和gpu混合计算的算法提供一个可持续的服务,由中间层做并发控制,请求队列存储,cpu和gpu调度等工作,极大提高计算效率以及硬件资源利用率。本技术开发涉及后台服务来接收所有请求,使用队列进行请求缓存和分发,定时任务进行cpu/gpu混合调用,以及查询结果,收到识别结果后,异步请求存储服务存储请求信息以及识别结果,并返回结果。
38.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
39.图3是本技术实施例提供的基于cpu和gpu混合计算的在线服务装置的结构示意图。如图3所示,该基于cpu和gpu混合计算的在线服务装置包括:接收模块301,被配置为接收在线业务请求,将在线业务请求添加到缓存队列中;处理模块302,被配置为根据预设的定时任务或者触发事件,选择一个计算组件对缓存队列中的在线业务请求进行异步处理,其中,计算组件包括cpu和gpu;计算模块303,被配置为在调用计算组件对在线业务请求进行异步处理过程中,依据缓存队列中的在线业务请求的数量以及计算组件的平均计算耗时,确定每个计算组件对应的权重;调用模块304,被配置为依据每个计算组件对应的权重,动态调用cpu或者gpu执行在线业务请求,并将在线业务请求对应的业务结果存储到业务结果集合中,其中,业务结果集合中包含在线业务请求的标识信息以及与标识信息对应的业务结果信息。
40.在一些实施例中,图3的接收模块301接收云平台发送的原始图片数据对应的字符串,根据字符串生成在线业务请求,并将在线业务请求按照时间顺序加入到缓存队列中去;其中,字符串为机器人根据机器人舱内接收到的物品生成原始图片数据,并将原始图片数据发送至云平台,以使云平台对原始图片数据进行编码处理得到的字符串。
41.在一些实施例中,图3的处理模块302按照预设的定时任务执行时间间隔,将定时任务执行时间间隔内添加到缓存队列中的在线业务请求发送给gpu进行批量执行,或者将在线业务请求依次发送给cpu进行循环执行。
42.在一些实施例中,图3的处理模块302当缓存队列中的在线业务请求对应的请求数量达到数量阈值时,将缓存队列中的在线业务请求发送给gpu进行批量执行,或者将在线业务请求依次发送给cpu进行循环执行;或者,当cpu和gpu中的任意一个计算组件处于空间状
态时,将缓存队列中的在线业务请求发送给空间状态的计算组件进行执行。
43.在一些实施例中,图3的调用模块304当在线业务请求的请求数量低于预设阈值时,选择调用平均计算耗时低的计算组件执行在线业务请求;当在线业务请求的请求数量高于当前gpu并行计算的任务能力时,选择调用gpu执行在线业务请求;当cpu的平均计算耗时低于gpu的平均计算耗时,缓存队列中的在线业务请求的请求数量低于预设阈值,且cpu当前处于空闲状态时,选择调用cpu执行在线业务请求;当缓存队列中的在线业务请求使用cpu进行循环执行时的预计耗时大于使用gpu进行批量执行时的预计耗时,选择调用gpu执行在线业务请求。
44.在一些实施例中,图3的调用模块304当在线业务请求执行完成之后,将在线业务请求对应的标识信息以及业务结果信息缓存到业务结果集合中,当接收到具有相同标识信息的在线业务请求之后,将业务结果集合中预先缓存的标识信息对应的业务结果信息发送给在线服务器。
45.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
46.图4是本技术实施例提供的电子设备4的结构示意图。如图4所示,该实施例的电子设备4包括:处理器401、存储器402以及存储在该存储器402中并且可以在处理器401上运行的计算机程序403。处理器401执行计算机程序403时实现上述各个方法实施例中的步骤。或者,处理器401执行计算机程序403时实现上述各装置实施例中各模块/单元的功能。
47.示例性地,计算机程序403可以被分割成一个或多个模块/单元,一个或多个模块/单元被存储在存储器402中,并由处理器401执行,以完成本技术。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序403在电子设备4中的执行过程。
48.电子设备4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备4可以包括但不仅限于处理器401和存储器402。本领域技术人员可以理解,图4仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如,电子设备还可以包括输入输出设备、网络接入设备、总线等。
49.处理器401可以是中央处理单元(central processing unit,cpu),也可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
50.存储器402可以是电子设备4的内部存储单元,例如,电子设备4的硬盘或内存。存储器402也可以是电子设备4的外部存储设备,例如,电子设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器402还可以既包括电子设备4的内部存储单元也包括外部存储设备。存储器402用于存储计算机程序以及电子设备所需的其它程序和数据。存储器402还可以用于
暂时地存储已经输出或者将要输出的数据。
51.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
52.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
53.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
54.在本技术所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
55.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
56.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
57.集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
58.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。