用于管理资源的方法、计算设备和计算机可读存储介质
技术领域
本公开的实施例总体上涉及信息处理领域,更具体地涉及一种用于管理资源的方法、计算设备和计算机可读存储介质。
背景技术
多设备***(例如而不限于是多图形处理器***)广泛地应用于机器学习和大数据处理领域。传统的针对多设备***的资源管理方法例如包括:针对***所包括的多个设备中的每一个设备需要进行显式操作,例如包括:针对具体物理设备分别配置计算任务、进行数据切分、进行跨设备的数据访问与搬移以及多设备的同步操作等等。这些操作不但使得多设备***的整体控制和资源管理过程较为繁琐,而且极易引入不正确的逻辑,进而不利于提高多设备***的软件开发与维护效率。
再者,在传统的针对多设备***的资源管理方法中,因为代码是针对已有的多设备***而开发的,因此代码中一般会配置有与某个给定***强相关的特定设备操作逻辑。因此,当把这类代码迁移至另外的目标多设备***时,如果目标多设备***和原有的多设备***在配置方面存在差异,原有的多设备***的代码必须进行适配性的更改并经由重新验证方可适应目标多设备***,这些都会影响代码迁移的速度和质量。
综上,传统的多设备***的资源管理方法存在不利于提高软件开发与维护效率,以及提升代码迁移的速度和质量。
发明内容
本公开提供了一种用于管理资源的方法、计算设备和计算机可读存储介质,能够提高多设备***的软件开发与维护效率,以及提升代码迁移的速度和质量。
根据本公开的第一方面,提供了一种用于管理资源的方法。该方法包括:获取计算节点处所包括的多个物理设备的设备信息,以便确认支持预定硬件资源管理方式的物理设备;将支持预定硬件资源管理方式的物理设备中的至少一个物理设备初始化为一个统一设备视图设备,被初始化的至少一个物理设备为参与统一设备视图的物理设备;分配统一设备视图设备的虚拟存储地址,虚拟存储地址与参与统一设备视图的物理设备的物理存储地址相映射;传输数据至统一设备视图设备的虚拟存储地址;以及经由任务队列向统一设备视图设备下发计算任务,以用于利用参与统一设备视图的物理设备执行计算任务。
根据本发明的第二方面,还提供了一种计算设备,该设备包括:至少一个处理单元;至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令,指令当由至少一个处理单元执行时,使得设备执行本公开的第一方面的方法。
根据本公开的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本公开的第一方面的方法。
在一些实施例中,经由任务队列向统一设备视图设备下发计算任务包括:计算参与统一设备视图的每一个物理设备的计算能力之和,以便确定参与统一设备视图的物理设备的总计算能力;计算参与统一设备视图的当前物理设备的计算能力,以便统一设备视图设备驱动模块基于当前物理设备的计算能力和总计算能力,确定下发至当前物理设备的计算任务的任务量。
在一些实施例中,计算参与统一设备视图的当前物理设备的计算能力包括:基于当前物理设备所配置的处理器数量、每一个处理器所具备的计算单元数量、处理单元运行频率和当前物理设备的计算效率,来确定参与统一设备视图的当前物理设备的计算能力。
在一些实施例中,信息处理的方法还包括:在初始化统一设备视图设备之前,建立会话所需的上下文,会话用于统一设备视图设备;以及在初始化统一设备视图设备之后,配置至少一个任务队列,以用于接收针对统一设备视图设备的操作;以及同步参与统一设备视图的物理设备。
在一些实施例中,信息处理的方法还包括:响应于确定计算任务被执行完毕,从统一设备视图设备读取关于计算任务的结果数据。
在一些实施例中,信息处理的方法还包括:响应于确定接收到用于关闭统一设备视图设备的指令,确定任务队列是否已被清空;响应于确定任务队列已被清空,同步参与统一设备视图的物理设备,以便参与统一设备视图的每一个物理设备的计算任务已被完成;释放任务队列;释放参与统一设备视图的物理设备,以便经释放后的每一个物理设备满足以下至少一项条件:适于参与用于另一个统一设备视图设备的会话;以及适于作为单独物理设备被使用;以及释放上下文。
在一些实施例中,向统一设备视图设备下发计算任务包括:经由任务队列向统一设备视图设备下发计算任务包括:经由应用程序接口,将经编译的代码和相关参数发送至任务队列;以及统一设备视图设备驱动模块确定用于完成计算任务的物理设备,以用于将计算任务下发至所确定的物理设备。
在一些实施例中,统一设备视图设备驱动模块确定用于完成计算任务的物理设备包括:统一设备视图设备驱动模块在参与统一设备视图的物理设备中选择一个或者多个设备用于完成计算任务;或者统一设备视图设备驱动模块将计算任务平均下发至参与统一设备视图的物理设备中的每一个物理设备。
在一些实施例中,信息处理的方法还包括:响应于确定用于完成计算任务的物理设备需要访问参与统一设备视图的物理设备中的其他计算设备,统一设备视图设备驱动模块协同参与统一设备视图的物理设备的***内存管理单元。
在一些实施例中,信息处理的方法还包括:计算节点处所包括的多个物理设备包括中央处理器和图形处理器,计算任务与机器学习相关联。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。
图1示意性示出了本公开的多个实施例能够在其中实现的示例***的示意图。
图2示出了根据本公开的实施例的用于管理资源的方法的流程图。
图3示出了根据本公开的实施例的用于向统一设备视图设备下发计算任务的方法的流程图。
图4示出了根据本公开的实施例的用于关闭统一设备视图设备的方法的流程图。
图5示出了能够实施本公开的多个实施例的计算设备的示意性框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文,传统的针对多设备***的资源管理方法例如包括:针对***所包括的多个设备中的每一个设备需要进行显式操作,不利于提高多设备***的软件开发与维护效率。例如,如果软件处理逻辑超过单个物理设备所能够提供的资源(例如而不限于是,需要读入的数据超过了单个设备上的存贮资源),则需要构造额外的软件逻辑(例如,任务或者数据切割、以及设备同步等等),以便解决此类设备资源受限的问题。再者,在传统的针对多设备***的资源管理方法中,代码中一般会配置有与某个给定***强相关的特定设备操作逻辑,例如,所使用的物理设备个数、每个物理设备的硬件资源信息、以及固化的设备间的通信与同步操作等等。当把这类代码迁移至另外的目标多设备***时,如果目标多设备***和原有的多设备***在配置方面存在差异(例如,配备的设备个数不同、设备硬件资源数量不同),原有的多设备***的代码必须进行适配性的更改并经由重新验证方可适应目标多设备***,这些都会影响代码迁移的速度和质量。
针对上述提及的现有方案中存在的各种问题,本公开的实施方式提供了一种用于管理资源的方案,旨在至少部分地解决上述问题。下面将结合图1至图5来具体描述本公开的实施方式。
图1示出了本公开的多个实施例能够在其中实现的***100的示意图。如图1所示,***100包括一个或多个计算节点110、服务器130。计算节点110和服务器130例如可以经由网络140进行数据交互。
计算节点110可以是一个独立的计算设备,例如是完全独立的计算机***(standalone system)、一个台式机、服务器;计算设备也可以是一个计算机集群(cluster/data center)的一个计算节点。计算节点110例如包括多个物理设备和网络接口。经由该网络接口,计算节点110可以与其他网络设备(例如服务器130)连接。计算节点110所包括的多个物理设备例如为图1所示例的第一物理设备112至第N个物理设备116。计算节点110所包括的多个物理设备可以是同构的,例如第一物理设备112至第N个物理设备116均具有相同的配置,诸如,均为相同配置的GPU。计算节点110所包括的多个物理设备也可以是异构的,例如,第一物理设备112至第N个物理设备116具有不同的物理特性,诸如,第一物理设备112是GPU,第N个物理设备116是FPGA。
关于计算节点110,其用于将单个计算节点110上的多个物理设备所提供的硬件资源(例如第一物理设备112的硬件资源114、第N个物理设备116的硬件资源118)池化,并且将经由池化的硬件资源抽象成单个设备的形态,即统一设备视图设备120,并使得该统一设备视图设备120拥有多个物理设备所提供的计算资源、存储资源、通信资源和其它相关硬件资源,进而使得针对单个统一设备视图设备120的操作,可以通过单个计算节点110上的多个物理设备所执行,而无需用户显式地分别操作多个物理设备,例如,无需进行设备间的内存搬移、设备间同步等等,只需针对单个统一设备视图设备120进行编程,就能够使用计算节点处所包括的多个同构或者异构物理设备所提供的硬件资源。
图2示出了根据本公开的实施例的用于管理资源的方法200的流程图。应当理解,方法200例如可以在图5所描述的电子设备500处执行。也可以在图1所描述的计算节点处的计算设备上执行。应当理解,方法200还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
在步骤202处,计算设备获取计算节点处所包括的多个物理设备的设备信息,以便确认支持预定硬件资源管理方式的物理设备。例如,计算设备经由调用用于统一设备视图(Unified Device View,例如简称为“UDV”)的应用程序接口(API)来查询计算节点处所包括的多个物理设备中支持预定硬件资源管理方式(例如支持以UDV模式管理硬件资源)的物理设备信息。
关于预定硬件资源管理方式,其例如为统一设备视图模式。在该模式下,用户或软件开发人员只需要对计算节点处的抽象的“单个”统一设备视图设备进行操作,便可以控制计算节点处实际包括的多个物理设备,并利用这些物理设备所提供的硬件资源完成计算任务。换言之,通过统一设备视图设备这个抽象层,用户或软件开发人员不再需要关注计算节点处各单个物理设备的具体情况(该具体情况例如包括设备数目、空闲与否等),也不需要对这些物理设备进行单独的,显式地操作。
确定计算节点处支持UDV模式的物理设备的方式例如包括:计算设备经由应用程序接口(API)来查询计算节点处所包括的多个物理设备的设备信息。例如,用户在代码中调用关于支持UDV模式的物理设备信息;针对该调用所返回的设备信息例如而不限于包括:计算节点处支持UDV模式的物理设备的数目、支持UDV模式的物理设备的硬件资源信息,以及支持UDV模式的物理设备当前是否可用等等。
确定支持UDV模式的物理设备的时机可以是在***配置时(单次)静态完成,也可以是在***配置时(单次)动态完成,还可以是每次UDV会话前完成,或是以其它方式完成。
在步骤204处,计算设备将支持预定硬件资源管理方式的物理设备中的至少一个物理设备初始化为一个统一设备视图设备,被初始化的至少一个物理设备为参与统一设备视图的物理设备。例如,在步骤202处,计算设备确定计算节点处的支持UDV模式的物理设备的数目为N(N例如而不限于为8)个并且均为可用的,则可将支持UDV模式的物理设备中的全部或者部分初始化为一个统一设备视图设备。
关于统一设备视图设备,其例如经由将单个计算节点上的多个物理设备所提供的硬件资源池化,并且将经池化的硬件资源抽象成单个设备的形态而生成。该统一设备视图设备可以以软件应用程序接口(API)的形式提供给用户或者程序开发人员使用。
统一设备视图设备的启动方式例如是:用户或者软件开发人员可以通过代码,经由预定应用程序接口(例如UDV API)调用来启动UDV模式。具体而言,计算设备可以首先建立UDV会话所需的上下文;然后在支持预定硬件资源管理方式(例如UDV模式)的物理设备中选择至少一个物理设备作为参与UDV模式的物理设备;之后,将所选择的至少一个物理设备初始化为一个统一设备视图设备;配置至少一个任务队列,以用于接收针对统一设备视图设备的操作;以及同步参与统一设备视图的物理设备。由此,本公开可以便捷地创建并启动计算节点处的UDV模式。
关于参与UDV模式的物理设备的选择,可以允许选择单个计算节点上的支持UDV模式的所有物理设备参与UDV模式,也可以选择支持UDV模式的物理设备中的一个或多个物理设备参与UDV模式。任何支持UDV模式的物理设备均可以参与到所建立的单次UDV会话,而不需要考虑具体物理设备在计算或者存贮能力方面的差异。
在一些实施例中,初始化统一设备视图设备的方式例如包括:查询所选择的参与UDV模式的至少一个物理设备是否可用。
关于上文提及的任务队列(下文或称为“UDV任务队列”),其主要用于将针对统一设备视图设备的计算任务或者待处理的数据下发至对应的物理设备。所创建的UDV任务队列可以是多个,也可以是一个。多个UDV任务队列可以具有不同的优先级,例如,在多个UDV任务队列中配置一个UDV任务队列具有最高优先级,以用于接收并下发具有高优先级的计算任务。UDV任务队列的优先级可以由编程人员经由软件预先设定。UDV任务队列的实现方式可以是通过纯软件的方式经由硬件驱动模块加以实现,也可以利用硬件方式实现,或者是软件与硬件结合的方法。
在一些实施例中,当参与UDV模式的为多个物理设备时,一些时段,各物理设备例如自主地运行被下发至对应物理设备的计算任务。不需要其中的一个物理设备主导其他的物理设备。一些时段,参与UDV模式的多个物理设备需要彼此进行等待,例如,需等待多个物理设备都完成计算,才能获得正确的计算结果。关于同步参与统一设备视图的物理设备的方式,可以通过软件或者硬件接口的方式来判断对应物理设备是否完成计算或者是否为空闲。
在步骤206处,计算设备分配统一设备视图设备的虚拟存储地址,虚拟存储地址与参与统一设备视图的物理设备的物理存储地址相映射。
分配统一设备视图设备上的虚拟存储地址,主要用于分配程序所需的内存。例如通过用户或者开发人员调用API进入到UDV任务队列,并且由统一设备视图设备驱动模块基于预定算法确定如何利用池化的硬件资源来完成在参与UDV的物理设备上分配程序所需内存。由此,不需要用户指定内存分配所在的实际物理设备。
关于统一设备视图设备驱动模块(或称“UDV 驱动模块”),其用于维护具体的内存映射关系,即维护具体的程序所使用的虚拟地址与参与UDV模式的物理设备上的物理地址的映射关系,并确保参与UDV的每个物理设备上的***内存管理单元(SMMU)上的地址映射关系是一致的。
分配统一设备视图设备的虚拟存储地址的方式例如包括:将程序所需的内存分配由单个物理设备负责,将程序所需的内存平均分配由多个物理设备负责,将程序所需的内存以非平均的方式分配由多个物理设备负责。在一些实施例中,计算设备配置默认的内存分配方式。在一些实施例中,可以基于应用的特点确定内容分配的方式。
在分配统一设备视图设备的虚拟存储地址结束之前,统一设备视图设备的驱动模块还需要进行一个隐式(开发人员不可见)的多物理设备的同步。
在步骤208处,计算设备传输数据至统一设备视图设备的虚拟存储地址。例如,将数据(该数据可以是来源于主机内存、硬盘、或其它数据来源的外部数据)传输到步骤206处所分配的统一设备视图设备的虚拟存储地址中。该数据传输操作例如是经由应用程序接口进入到UDV任务队列,驱动模块例如而不限于是将数据按照线性方式传输至对应的统一设备视图设备的虚拟存储地址。
在步骤210处,计算设备经由任务队列向统一设备视图设备下发计算任务,以用于利用参与统一设备视图的物理设备执行计算任务。例如,编译完成的代码和相关参数可以首先通过API下发至UDV任务队列;然后UDV驱动模块根据预定算法,来确定如何利用池化的硬件资源来完成任务下发。
用于确定下发计算任务的预定算法可以基于多种因素而确定。在一些实施例中,用于确定下发计算任务的方法例如包括:计算参与UDV的每一个物理设备的计算能力之和,以便确定参与UDV的物理设备的总计算能力;确定参与UDV的当前物理设备的计算能力,以便统一设备视图设备驱动模块基于当前物理设备的计算能力和总计算能力,确定下发至当前物理设备的计算任务的任务量。通过采用上述手段,本公开能够使得下发至参与UDV的物理设备的计算任务的任务量与各物理设备的当前处理能力相适应,进而利于充分调动参与UDV的物理设备的资源来高效率地完成任务队列中的计算任务。
关于用于确定参与UDV的某个(例如当前)物理设备的计算能力的方式,其例如包括:基于当前物理设备所配置的处理器数量、每一个处理器所具备的计算单元数量、计算单元运行频率和当前物理设备的计算效率,来确定参与统一设备视图的当前物理设备的计算能力。其中,当前物理设备的计算效率为该物理设备的能够提供的实际计算效率。通过采用上述技术手段,本公开能够准确确定参与UDV的各物理设备的当前任务处理能力。
例如,对于Intel Core I7这一物理设备,其所配置的处理器数量例如为1、每个处理器具备的计算单元数量例如为12、计算单元运行频率例如为5.0 GHz,物理设备的计算效率例如为85%。再例如,对于Nvidia V100这一物理设备,其所配置的处理器数量例如为80、每个处理器具备的计算单元数量例如为64、计算单元运行频率例如为1.5GHz,物理设备的计算效率例如为70%。
下文将结合公式(1)和(2)具体说明用于确定下发至参与UDV第i个(例如当前)物理设备的计算任务的任务量的方法。
在上述公式(1)中,
代表第i个物理设备上具备的处理器数量。
代表第i个物理设备上每个处理器具备的计算单元数量。
代表第i个物理设备上计算单元运行频率。
代表第i个物理设备的计算效率。
代表UDV驱动模块对第i个物理设备下发的计算任务的任务量。N代表参与UDV的物理设备数量。
在上述公式(2)中,
W代表下发至参与UDV的所有物理设备的计算任务的任务量的总和。
代表UDV驱动模块下发至参与UDV模式的第i个物理设备的计算任务的任务量。N代表参与UDV的物理设备数。
计算效率关于任务下发方法,其例如包括:UDV驱动模块可以在参与统一设备视图的物理设备中选择一个或者多个设备用于完成计算任务。例如,将计算任务下发至单个物理设备,或者以非平均的方式下发至多个物理。UDV驱动模块还可以将计算任务平均下发至参与UDV模式的至少一个物理设备中的每一个物理设备。
在任务计算过程中,如果确定用于完成计算任务的物理设备需要访问参与统一设备视图的物理设备中的其他计算设备;UDV驱动模块可以协同参与统一设备视图的物理设备的***内存管理单元。
在上述方案中,通过将单个计算节点上的多个物理设备所提供的硬件资源(例如包括计算资源、存储资源、通信资源以及其它硬件资源)池化,以便把经由池化的硬件资源抽象成单个设备的形态,即,统一设备视图设备,并通过任务队列将针对统一设备视图设备的操作和计算任务下发至对应的参与UDV模式的物理设备执行,本公开能够提高多设备***的软件开发与维护效率,以及提升代码迁移的速度和质量。
另外,本公开允许支持UDV模式的物理设备均参与到UDV模式计算,因此可以支持异构物理设备参与计算。而传统的例如虚拟化手段通常在硬件或主机操作***之上虚拟化多个虚拟机。上述虚拟化方式不仅需要被虚拟化的硬件具有相同的配置;而且需要复杂的虚拟化技术和流程,例如针对高特权操作(比如I/O操作)的侦听和模拟。而本公开的资源管理方法不仅可以支持异构的物理设备参与计算,而且可以显著提高配置有多设备的单计算节点在面临海量计算(例如大网络训练)时的效率。
在一些实施例中,方法200还包括:确定计算任务是否被执行完毕,如果确定计算任务被执行完毕,从统一设备视图设备读取关于计算任务的结果数据。例如,将统一设备视图设备中(处理完的)数据读取到统一设备视图设备外部,例如读取至主机内存、硬盘、网络设备、或其它存储部件。
关于数据读取操作的方式,其例如包括:通过API进入到UDV任务队列;同步参与UDV模式的多个物理设备,以便确定待读取的数据为计算完成后的结果数据。
图3示出了根据本公开的实施例的用于向统一设备视图设备下发计算任务的方法300的流程图。应当理解,方法300例如可以在图5所描述的电子设备500处执行。也可以在图1所描述的计算节点处的计算设备执行。应当理解,方法300还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
在步骤302中,计算设备经由应用程序接口,将经编译的代码和相关参数发送至任务队列。
在步骤304中,统一设备视图设备驱动模块确定用于完成计算任务的物理设备,以用于将计算任务下发至所确定的物理设备。
关于确定用于完成计算任务的物理设备的方式,其例如包括:统一设备视图设备驱动模块在参与统一设备视图的物理设备中选择一个或者多个设备用于完成计算任务;或者统一设备视图设备驱动模块将计算任务平均下发至参与统一设备视图的物理设备中的每一个物理设备。
在步骤306中,确定用于完成计算任务的物理设备是否需要访问参与统一设备视图的物理设备中的其他计算设备。
在步骤308中,如果计算设备确定用于完成计算任务的物理设备是否需要访问参与统一设备视图的物理设备中的其他计算设备,统一设备视图设备驱动模块协同参与统一设备视图的物理设备的***内存管理单元。
通过采用上述技术手段,本公开能够将针对统一设备视图设备的计算任务下发至对应的计算设备来执行。
图4示出了根据本公开的实施例的用于关闭统一设备视图设备的方法400的流程图。应当理解,方法400例如可以在图5所描述的电子设备500处执行。也可以在图1所描述的计算节点处的计算设备执行。应当理解,方法400还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
在步骤402中,计算设备确定是否接收到关于关闭统一设备视图设备的指令。如果计算设备确定未接收关于关闭统一设备视图设备的指令,则继续等待。
在步骤404中,如果计算设备确定接收到关于关闭统一设备视图设备的指令,确定任务队列是否已被清空。
在步骤406中,如果计算设备确定任务队列已被清空,同步参与统一设备视图的物理设备,以便参与统一设备视图的物理设备中的每一个物理设备的计算任务已被完成。
在步骤408中,计算设备释放任务队列。
在步骤410中,计算设备释放参与统一设备视图的物理设备,以便经释放后的参与统一设备视图的物理设备中的每一个物理设备符合以下至少一项条件:适于参与用于另一个统一设备视图设备的会话;以及适于作为单独物理设备被使用。
在步骤412中,计算设备释放上下文。
通过采用上述手段,本公开能够方便地使得多设备***在各物理设备被分立使用或者被池化为统一设备视图设备模式使用之间进行转换。
图5示出了能够实施本公开的多个实施例的计算设备500的示意性框图。
如图所示,计算设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机存取存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM中,还可存储计算设备500操作所需的各种程序和数据。CPU、ROM以及RAM通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
计算设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许计算设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200、300和400,可由中央处理单元501执行。例如,在一些实施例中,方法200、300和400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元509而被载入和/或安装到计算设备500上。当计算机程序被加载到RAM并由CPU执行时,可以执行上文描述的方法2200、300和400的一个或多个动作。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如C语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的中央处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的中央处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。