用于控制由计算机系统对计算机程序的执行的装置、设备、方法和计算机程序
文献发布时间:2024-04-18 19:52:40
技术领域
示例涉及用于控制由计算机系统对计算机程序的执行的装置、设备、方法和计算机程序,并且涉及相对应的计算机系统。
背景技术
今天,
附图说明
装置和/或方法的一些示例将在下文仅作为示例并参考所附附图来进行描述,在附图中
图1a和图1b示出用于控制由包括两个或更多个不同处理单元的计算机系统对计算机程序的执行的装置或设备的示例的示意图;
图1c示出用于控制由包括两个或更多个不同处理单元的计算机系统对计算机程序的执行的方法的流程图;
图2示出系统体系结构的示例的示意图;
图3示出图示XPU体系结构上潜在的计算内核生成和放置的示例;
图4示出配置流的示例的示意图;以及
图5示出操作流的示意图。
具体实施方式
现在参考附图更详细地描述一些示例。然而,其他可能的示例不限于详细描述的这些实施例的特征。其他示例可包括特征的修改以及特征的等效物和替代物。此外,本文中用于描述某些示例的术语不应限制其他可能的示例。
贯穿附图的描述,相同或类似的附图标记指代相同或类似的元素和/或特征,这些元素和/或特征可以是相同的,或者以修改形式被实现,同时提供相同或类似的功能。为了清楚起见,附图中线条、层和/或区域的厚度也可能被放大。
当两个元素A和B使用“或”来组合时,这要被理解为公开了所有可能的组合,即,仅A、仅B、以及A和B,除非在个别情况下另有明确定义。作为相同组合的替代措辞,可使用“A和B中的至少一者”或“A和/或B”。这等效地适用于两个以上元素的组合。
如果诸如“一(a/an)”和“该(the)”之类的单数形式被使用并且仅单个元素的使用既不显式也不隐式地被限定为强制性的,则进一步的示例也可使用若干个元素来实现相同的功能。如果功能在下文被描述为使用多个元素实现,则进一步的示例可使用单个元素或单个处理实体来实现相同的功能。进一步理解,当使用术语“包括”(“include”、“including”、“comprise”和/或“comprising”)时,其描述所指定的特征、整数、步骤、操作、元件、组件和/或它们的组的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组的存在或添加。
在以下描述中,阐述了具体细节,但是可以在没有这些具体细节的情况下实施本文中所描述的技术的示例。公知的电路、结构和技术未被详细示出,以避免混淆对本描述的理解。“一示例/示例(An example/example)”、“各示例/示例(various examples/examples)”、“一些示例/示例(some examples/examples)”等等可包括特征、结构或特性,但是并非每一个示例都必定包括这些特定的特征、结构或特性。
一些示例可具有针对其他示例所描述的特征中的一些或全部,或完全不具有这些特征。“第一”、“第二”、“第三”等等描述常见的元素,并且指示被引用的类似元素的不同实例。此类形容词并不暗示如此描述的元素项必须在时间上或空间上、在排名上或以任何其他方式按照给定顺序。“连接的”可指示元件彼此处于直接的物理或电接触,并且“耦合的”可指示元件彼此协作或交互,但这些元件可以处于或可以不处于直接的物理或电接触。
如本文中所使用,术语“操作”、“执行”或“运行”在其涉及与系统、设备、平台或资源有关的软件或固件时可互换地使用,并且可以指代存储在可由系统、设备、平台或资源访问的一种或多种计算机可读存储介质中的软件或固件,即使该软件或固件中所包含的指令并非正在被系统、设备、平台或资源活动地执行。
说明书可使用短语“在一示例/示例(an example/example)中”、“在各示例中”、“在一些示例/示例(some examples/examples)中”和/或“在各示例/示例(variousexamples/examples)中”,这些短语中的每一个都可指代相同或不同示例中的一个或多个示例。此外,如相对于本公开的示例所使用的术语“包含”、“包括”、“具有”等是同义的。
图1a和图1b示出用于控制由包括两个或更多个不同处理单元(XPU)102、104、106的计算机系统100对计算机程序的执行的装置10或设备10的示例的示意图。装置10包括被配置成用于提供装置10的功能的电路系统。例如,图1a的装置10包括(可选的)接口电路系统12、处理电路系统14和(可选的)存储电路系统16。例如,处理电路系统14可与接口电路系统12并与存储电路系统16耦合。例如,处理电路系统14可以被配置成用于与接口电路系统12(用于例如与计算机系统的其他组件(诸如两个或更多个XPU 102、104、106)交换信息)和存储电路系统16(用于存储信息(诸如机器可读指令))结合来提供装置的功能。同样,设备10可包括被配置成用于提供设备10的功能的装置。设备10的组件被定义为可对应于装置10的相应结构组件或由装置10的相应结构组件实现的组件装置。例如,图1a和图1b的设备10包括:用于处理的装置14,该用于处理的装置14可以对应于处理电路系统14或由处理电路系统14实现;(可选的)用于通信的装置12,该用于通信的装置12可以对应于接口电路系统12或由接口电路系统12实现;以及(可选的)用于存储信息的装置16,该用于存储信息的装置16可以对应于存储电路系统16或由存储电路系统16实现。一般而言,处理电路系统14或用于处理的装置14的功能可通过处理电路系统14或用于处理的装置14执行机器可读指令来实现。因此,归于处理电路系统14或用于处理的装置14的任何特征都可以由多个机器可读指令中的一个或多个来定义。装置10或设备10可以包括(例如,在存储电路系统16或用于存储信息的装置16内的)机器可读指令。
处理电路系统14或用于处理的装置14被配置成用于获得计算机程序。计算机程序的至少一部分基于要由两个或更多个不同的XPU 102、104、106执行的一个或多个计算内核。处理电路系统14或用于处理的装置14被配置成用于针对每个XPU确定在相应XPU上执行一个或多个计算内核的能量相关度量。处理电路系统14或用于处理的装置14被配置成用于基于相应的能量相关度量将一个或多个计算内核的执行指派给两个或更多个不同的XPU。
图1a进一步示出了包括装置10或设备10以及两个或更多个XPU 102、104、106的计算机系统100。
图1c示出了用于控制由包括两个或更多个不同的处理单元(XPU)102、104、106的计算机系统100对计算机程序的执行的相对应(计算机实现的)方法的流程图。该方法包括获得计算机程序(130)。该方法包括针对每个XPU确定在相应XPU上执行一个或多个计算内核的能量相关度量(150)。该方法包括基于相应的能量相关度量将一个或多个计算内核的执行指派给两个或更多个不同的XPU(160)。
在下文中,相对于装置10来对装置10、设备10、方法和相对应计算机程序的功能进行说明。结合装置10引入的特征也可同样被包括在相对应设备10、方法和计算机程序中。
本公开涉及控制由包括多个不同XPU的计算机系统100对计算机程序的执行的概念,并且具体涉及将计算内核指派给不同的XPU。本公开的一些方面还涉及XPU内特定计算资源和相关联的通信/存储路径的选择。例如,在考虑
一般来说,计算机程序的某部分的此类迁移可由运行时环境管理,无论XPU是否可用,这都为计算机程序提供抽象和统一的运行时环境。因此,运行时环境提供计算机程序可以在其中被执行的环境,其中运行时环境负责将计算机程序的被迁移到XPU的部分分发到正在被使用的相应一个或多个XPU。因此,提出的功能可以作为运行时环境的一部分提供。换句话说,如图1b所示,处理电路系统可被配置成用于为计算机程序的执行提供运行时环境108。因此,如图1c进一步所示,方法可包括为计算机程序的执行提供运行时环境(110)。在该上下文中,运行时环境是执行计算机程序的环境,其中运行时环境被配置成用于为计算机程序的至少一部分提供对XPU的访问。例如,运行时环境108可被配置成用于控制一个或多个计算内核到两个或更多个XPU的分发(例如,通过将计算内核和相关联数据复制到相应XPU的存储器,和/或通过从相应XPU取回计算的结果)。例如,可由处理电路系统提供的运行时环境可被配置成用于使用接口电路系统与两个或更多个XPU通信。在本例中,运行时环境可被配置成用于执行提出的功能。具体而言,能量相关度量的确定和执行的指派可以由运行时环境进行。其他任务(诸如任务图的确定、生成或重新生成;计算内核的生成或重新生成;以及计算内核到两个或更多个XPU的调度)也可以由运行时环境执行。
在初始化时,处理电路系统,并且更具体地,运行时环境可执行发现过程,以确定XPU的存在,以及存在的XPU的(以及用于与XPU通信的存储器和/或互连的)能力。换句话说,处理电路系统可被配置成用于发现计算机系统的两个或更多个XPU的能力。因此,如图1c进一步所示,方法可包括发现计算机系统的两个或更多个XPU的能力(120)。具体地,这些能力可包括相应XPU的计算能力(例如,计算单元的数量、支持的ISA、每指令或时间所需的功率等)、存储器能力(例如,存储器容量和/或存储器速度)和互连能力(例如,互连吞吐量)中的一个或多个。一般来说,提出的概念与许多不同类型的XPU兼容。例如,两个或更多个XPU可包括以下各项的群组中的两项或更多项:中央处理单元(Central Processing Unit,CPU)、图形处理单元(Graphics Processing Unit,GPU)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)和专用集成电路(Application-Specific IntegratedCircuit,ASIC)(诸如人工智能(Artificial Intelligence,AI)加速器或通信处理迁移单元)。在一些示例中,两个或更多个不同的XPU可排除计算机系统的CPU。换句话说,两个或更多个XPU可包括GPU、FPGA、AI加速器和通信处理迁移单元的群组中的两项或更多项。
处理电路系统被配置成用于获得计算机程序,其中计算机程序的至少一部分基于要由两个或更多个不同的XPU执行的一个或多个计算内核。在本公开的上下文中,一个或多个计算内核各自包含计算机程序的指令的子集(即,群组),这些指令的子集要由各XPU中的一个XPU实行(即,执行)。在一些情况下,可以例如使用同一XPU或使用不同的XPU并行地实行/执行同一计算内核的多个实例。一般来说,一个或多个计算内核用于将计算机程序的任务从计算机系统的CPU迁移到计算机系统的另一XPU。
在本公开的各示例中,计算机程序可以是可分为不同的任务的,这些任务可以由计算机系统的不同XPU执行。例如,计算机程序的一些任务可由计算机系统的CPU执行,而一些任务(并且具体而言,一些基于并行处理的任务)可由另一XPU(诸如GPU、FPGA或ASIC)执行。这些任务可以用所谓的任务图(或计算图)表示。例如,处理电路系统可被配置成用于确定计算机程序的任务图。因此,方法可包括确定计算机程序的任务图(140)。此任务图表示正在被执行的任务(即,要由XPU执行的指令的群组),其中任务由图的顶点(即,节点)表示,并且任务之间的依赖性(具体而言,数据依赖性)由图的边表示。一些任务可由上述一个或多个计算内核执行。因此,一个或多个计算内核可以是任务图的部分。一般来说,此任务图可以基于对计算机程序的静态分析(例如,通过分析代码或计算机程序的中间表示)来生成,在不太精确的情况下可以快速地生成任务图,或者可以(例如,通过执行计算机程序或其部分)动态地生成任务图,这以额外的努力为代价来提高精度。例如,处理电路系统可被配置成用于基于计算机程序的静态分析来生成(或一旦执行的指派已经被实行,则重新生成)任务图。因此,如图1c进一步所示,方法可包括基于计算机程序的静态分析来生成任务图(140)或重新生成任务图(162)。替代地或附加地,处理电路系统可被配置成用于基于根据现实世界当前数据流和/或现实世界过去数据流的计算机程序的动态分析来生成或重新生成任务图。因此,方法可包括基于根据现实世界当前数据流和/或现实世界过去数据流的计算机程序的动态分析来生成任务图(140)或重新生成任务图(162)。这种动态分析可以通过在沙盒环境中执行计算机程序(或其部分)或使用两个或更多个XPU利用适当的遥测执行计算机程序(或其部分)来执行。
提出的概念以这样的洞察为中心:相同的指令或任务当由不同的XPU执行或由相同XPU利用不同的指令执行时具有不同的能量和热影响。例如,虽然CPU是能够运行代码的不同部分的通用设备,但在运行高度并行化代码或高度专业化代码时,它们的效率通常低于其他XPU。例如,虽然GPU具有高能耗并且因此也具有高热影响,但它对于并行处理大量数据也非常高效。与此同时,尽管以有限的任务集,诸如FPGA和ASIC之类的专业化工具的效率也甚至更高。提出的概念基于能量相关度量,该能量相关度量允许为给定任务选择最功率高效或最热高效的XPU。在这种上下文中,能量相关度量可能不完全基于XPU上的功耗或热传递,而是还可基于其他硬件,诸如存储电路系统和互连电路系统或接口电路系统。换句话说,能量相关度量与系统执行XPU有关,其中执行对正在被使用的相应XPU产生影响,而且对正在被使用的存储电路系统和/或互连电路系统或接口电路系统产生影响。此外,能量相关度量可基于一个或多个计算机内核的活动状态(当一个或多个计算机内核被执行时),或一个或多个内核的活动状态和空闲状态两者(当一个或多个内核未被执行并等待数据流触发它们时)。换句话说,能量相关度量可基于一个或多个处于活动状态的计算内核,并基于一个或多个处于空闲状态的计算内核。因此,处理电路系统被配置成用于针对每个XPU确定在相应XPU上执行一个或多个计算内核的能量相关度量。这个能量相关度量可与在给定的XPU上执行相应计算内核引起的功耗(例如,额外的功耗)和/或在给定的XPU上执行相应计算内核引起的热影响(例如,必须处理多少瓦的热功率)(其也可包括存储和接口电路系统功率和热)有关,因此,能量相关度量可包括相应计算内核在相应XPU上的执行的估计的功耗和估计的热影响中的至少一个。
为了确定能量相关度量,处理电路系统可以解析任务图,以标识由XPU执行的计算内核可以执行的任务,并且然后确定这些任务(和相对应的计算内核)的能量相关度量。换句话说,处理电路系统可被配置成用于基于任务图来确定能量相关度量。因此,如图1c进一步所示,方法可包括基于任务图来确定能量相关度量(150)。此外,来自发现过程的信息(即,发现的能力)可用于此目的。具体地,处理能力(例如,支持的ISA,每指令或时间所需的功率等)、存储器能力(例如,存储器容量和/或存储器速度)和互连能力(例如,互连吞吐量)可用于(例如,通过预先选择可由哪个XPU执行哪个任务,和/或通过使用列出的能力作为确定的一部分(例如,以估计能量相关度量))确定能量相关度量。
用于确定能量相关度量的第一方法是基于估计的。例如,处理电路系统可被配置成用于通过估计能量相关度量来确定能量相关度量。因此,如图1c进一步所示,方法可包括通过估计能量相关度量(152)来确定能量相关度量(150)。这种估计可基于发现的能力。例如,通过对相应计算内核的指令的静态分析,指令的数量和传输的数据量可被估计,并用于估计能量相关度量(例如,基于支持的ISA(以估计需要多少指令)、每指令或时间所需的功率、存储器速度和/或互连吞吐量(以估计传输必要数据所需的时间和/或能量)。为了确定热影响,可以使用相应XPU的已知热特性,和/或热影响可能源自正在使用的能量。
因为许多分支条件或循环取决于正在处理的数据,因此对(静态)估计的改进可能不准确,计算机程序可以在沙盒环境中执行。换句话说,处理电路系统可以被配置成用于通过在沙盒评估环境中执行计算机程序来确定能量相关度量。因此,如图1c进一步所示,方法可包括通过在沙盒评估环境中执行计算机程序(154)来确定能量相关度量(150)。通过执行,可以比基于静态分析更精确地确定指令的数量和/或执行指令所需的时间。为此目的(以及为了在下文中介绍的实际XPU上的执行),可以使用现实世界数据(例如,其中的一部分)或合成数据。例如,处理电路系统可被配置成用于基于计算机程序中包含的或计算机程序可访问的现实世界数据来确定能量相关度量。因此,方法可包括基于计算机程序中包含或计算机程序可访问的现实世界数据来确定能量相关度量(150)。或者,可以使用合成数据。例如,处理电路系统可被配置成用于生成要由计算机程序使用的合成数据,并基于合成数据来确定能量相关度量。因此,如图1c进一步所示,方法可包括生成要由计算机程序使用的合成数据(158),以及基于合成数据来确定能量相关度量(150)。例如,合成数据可源自计算机程序中包含的或计算机程序可访问的现实世界数据,或者它可以基于计算机程序定义的数据结构来生成(例如,使用随机化的数据或使用用户指定的标准来生成合成数据)——这是可配置的策略。
第三方法基于使用相应XPU利用现实世界数据或合成数据执行计算机程序。例如,处理电路系统可被配置成用于基于对由两个或更多个XPU对计算机程序执行的监测来确定或更新能量相关度量。因此,如图1c进一步所示,方法可包括基于对由两个或更多个XPU对计算机程序的执行的监测来确定能量相关度量(150)和/或更新能量相关度量(156)。例如,处理电路系统可被配置成用于基于来自一个或多个能量相关传感器或执行器(例如,电流传感器)或热相关传感器或执行器(例如,温度传感器、风扇速度控制装置)的传感器数据来确定能量相关度量。
无论采取哪个方法来确定能量相关度量,它现在都可用于将一个或多个计算内核指派给两个或更多个XPU。具体地,处理电路系统可被配置成用于指派一个或多个计算内核的执行以使得能量相关目标被实现。例如,处理电路系统可被配置成用于指派一个或多个计算内核的执行以使得指派引起计算机程序的执行的能耗降低或最小化(与另一指派相比)。这个能量相关目标可以(例如,由计算机系统的操作员)预先定义,或者可以由计算机程序自身定义。换句话说,能量相关目标可以是预先定义的,或者能量相关目标可以通过与计算机程序的执行相关联的服务水平协议来定义。例如,服务水平协议可以指定计算机程序的执行专注于绝对性能,还是专注于每瓦特/热影响的性能,还是专注于两个标准之间的权衡。
此外,服务水平协议可限制一个或多个计算内核的执行的指派。例如,服务水平协议可以指定要使用哪些类型的XPU,或者要使用(或不使用)哪些ISA。例如,正在使用的ISA可能会对能量相关度量产生重大影响。因此,服务水平协议可能会强制特定ISA仅在特定能量级别使用。因此,服务水平协议可基于两个或更多个不同XPU的能力。实际上,执行可以基于发现的能力(例如,基于支持的ISA)来指派。在一些示例中,处理电路系统可被配置成用于基于SLA而与计算机程序协商指派,从而在SLA、两个或更多个XPU的功能、以及功率相关度量之间建立权衡。另一种类型的限制可能源于由计算机系统的运营商定义的策略。例如,将一个或多个计算内核的执行指派给两个或更多个不同的XPU受到与否决的指令或否决的指令集、禁止的指令或禁止的指令集以及带外队列管理在XPU内的代码执行中的一者或多者相关的一个或多个策略的限制。如上文所概述,此类禁止的指令或禁止的指令集可基于由具有不同能量相关度量的XPU提供的不同ISA。
执行的指派可能既对任务图又对一个或多个计算内核产生影响。根据指派,任务图可能被重新生成,并且相应的内核可能(根据需要)被生成或重新生成。例如,处理电路系统可被配置成用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成计算机程序的任务图。因此,如图1c进一步所示,方法可包括基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成计算机程序的任务图(162)。例如,可以生成或重新生成任务图,使得其包括(例如,反映)一个或多个计算内核的执行的指派。此外,一些计算内核可被拆分或被组合(相对于初始任务图),这也可能影响任务图。换句话说,指派一个或多个计算内核的执行可包括对任务图进行重新分区,使得一个或多个计算内核中的至少一个计算内核被拆分为两个或更多个计算内核,其中这两个或更多个计算内核被指派给两个或更多个XPU,或者使得两个计算内核被组合成被指派给XPU中的一个XPU的单个计算内核。
此外,处理电路系统可被配置成用于基于一个或多个计算内核的执行到两个或更多个XPU的指派(例如,基于重新生成的任务图)来生成或重新生成一个或多个计算内核。因此,方法可包括基于一个或多个计算内核的执行到两个或更多个XPU的指派(例如,基于任务图)来生成或重新生成一个或多个计算内核(164)。一般来说,一个或多个计算内核的生成或重新生成可基于计算机程序的静态分析或动态分析。具体地,处理电路系统可被配置成用于基于对计算机程序在沙盒环境中的执行的监测或对由两个或更多个XPU对计算机程序的执行的监测(例如,基于现实世界数据或合成数据)来生成或重新生成一个或多个计算内核。因此,方法可包括基于对计算机程序在沙盒环境中的执行或由两个或更多个XPU对计算机程序的执行的监测来生成或重新生成一个或多个计算内核(164)。通过这种方式,可以使用现实数据流或合成数据流例如相对于循环和分支行为(以及由此,指令的数量/执行计算内核/计算机程序所需的时间)、能量使用或热影响来更好地衡量计算机程序的行为。
一般来说,计算内核可以作为XPU特定的可执行文件或XPU不可知的可执行文件被生成。因此,可能没有必要使用不同的计算机内核,这取决于相应计算内核是否保持不变、被拆分或被组合。但是,如果计算内核是作为XPU特定的可执行文件生成的,或者如果它们被拆分或被组合,则使用不同的计算机内核可能是必需的。在一些情况下,不同的计算内核可以提前被生成,并且然后基于指派来进行选择。换句话说,一个或多个计算内核是在指派之前生成的。这增加最初的工作,但减少固定指派后所需的时间。或者,它们可以即时(Just-In-Time,JIT)生成,这可提供更多的灵活性。在这种情况下,一个或多个计算内核可以在指派后即时生成和/或重新生成。在一些情况下,可以使用混合方法,其中一些计算内核是提前生成的,而另一些计算内核是即时生成的(例如,被拆分或被组合的计算内核)。
在一些示例中,处理电路系统被进一步配置成用于执行计算机程序。例如,处理电路系统可被配置成用于在执行计算机程序期间(例如,通过接口电路系统12)将(一个或多个)计算内核和必要数据传输到相应的(一个或多个)XPU或者从相应的(一个或多个)XPU传输(一个或多个)计算内核和必要数据。
接口电路系统12或用于通信的装置12可以与用于在模块内、模块之间或不同实体的模块之间接收和/或传送信息的一个或多个输入和/或输出相对应,这些信息可以是根据指定的代码的数字(比特)值的形式的。例如,接口电路系统12或用于通信的装置12可以包括被配置成用于接收和/或传送信息的电路系统。
例如,可以使用一个或多个处理单元、一个或多个处理设备、用于处理的任何装置(诸如处理器、计算机或可与相应地适配的软件一起操作的可编程硬件组件)来实现处理电路系统14或用于处理的装置14。换言之,所描述的处理电路系统14或用于处理的装置14的功能也可采用软件来实现,该软件随后在一个或多个可编程硬件组件上执行。此类硬件组件可包括通用处理器、数字信号处理器(Digital Signal Processor,DSP)、微控制器等。
例如,存储电路系统16或用于存储信息的装置16可以包括计算机可读存储介质的群组中的至少一个元件,该计算机可读存储介质诸如磁或光存储介质,例如硬盘驱动器、闪存存储器、软盘、随机存取存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、电可擦除可编程只读存储器(lectronicallyErasable Programmable Read Only Memory,EEPROM)或网络存储装置。
例如,计算机系统100可以是工作站计算机系统(例如,用于科学计算的工作站计算机系统)或服务器计算机系统,即,用于向一个或多个客户端计算机提供功能(诸如计算机程序)的计算机系统。
一些示例基于使用机器学习模型或机器学习算法。机器学习是指计算机系统可以在不使用明确指令而是依靠模型和推断的情况下用来执行特定任务的算法和统计模型。例如,在机器学习中,可以使用从历史和/或训练数据的分析中推断的数据转换,而不是基于规则的数据转换。例如,可以使用机器学习模型或机器学习算法分析图像的内容。为了让机器学习模型分析图像的内容,可以使用训练图像作为输入以及训练内容信息作为输出来训练机器学习模型。通过使用大量训练图像和相关联的训练内容信息训练机器学习模型,机器学习模型“学习”识别图像的内容,因此可以使用机器学习模型识别未包含在训练图像中的图像内容。同样的原则也可以用于其他类型的传感器数据:通过使用训练传感器数据和期望输出训练机器学习模型,机器学习模型“学习”传感器数据与输出之间的转换,这可用于基于提供给机器学习模型的非训练传感器数据来提供输出。
机器学习模型使用训练输入数据进行训练。上面指定的示例使用一种称为“有监督学习”的训练方法。在有监督学习中,机器学习模型使用多个训练样本进行训练,其中每个样本可包括多个输入数据值和多个期望的输出值,即,每个训练样本与期望的输出值相关联。通过既指定训练样本又指定期望的输出值,机器学习模型“学习”基于与训练期间提供的样本相似的输入样本要提供的输出值。除了有监督学习外,还可以使用半监督学习。在半监督学习中,训练样本中的一些缺乏相对应的期望输出值。有监督学习可基于有监督学习算法,例如,分类算法、回归算法或相似性学习算法。当输出被限制在有限的值集时,即,输入被分类到有限的值集中的值,可以使用分类算法。当输出可具有(范围内的)任何数值时,可以使用回归算法。相似性学习算法与分类算法和回归算法两者相似,但基于使用测量两个对象的相似性或相关性的相似性函数从示例中进行的学习。
强化学习是第三机器学习算法群组。它具体地可用于训练上述参考的机器学习模型。在强化学习中,一个或多个软件活动者(称为“软件代理”)被训练用于在环境中采取行动。基于所采取的行动,计算奖励。强化学习基于训练一个或多个软件代理选择使得累积奖励增加的行动,从而使软件代理变得更擅长于它们被给予的任务(如增加的奖励所证明)。
机器学习算法通常基于机器学习模型。换句话说,术语“机器学习算法”可表示可用于创建、训练或使用机器学习模型的指令集。术语“机器学习模型”可表示代表(例如,基于机器学习算法执行的训练)所学知识的数据结构和/或规则集。在实施例中,机器学习算法的使用可意味着底层机器学习模型的(或多个底层机器学习模型的)使用。机器学习模型的使用可意味着机器学习模型和/或作为机器学习模型的数据结构/规则集是由机器学习算法训练的。
例如,机器学习模型可以是人工神经网络(artificial neural network,ANN)。ANN是受生物神经网络(诸如可以在大脑中找到)启发的系统。ANN包括多个相互连接的节点和节点之间的多个连接,即,所谓的边。通常存在三种类型的节点,即接收输入值的输入节点,(仅)连接到其他节点的隐藏节点,以及提供输出值的输出节点。每个节点可代表一人工神经元。每个边可以将信息从一个节点传送到另一节点。节点的输出可被定义为其输入之和的(非线性)函数。节点的输入可以基于边的“权重”或提供输入的节点的“权重”而在函数中使用。节点和/或边的权重可以在学习过程中进行调整。换句话说,人工神经网络的训练可包括调整人工神经网络的节点和/或边的权重,即,实现给定输入的期望的输出。至少在一些实施例中,机器学习模型可能是深度神经网络,例如,包括一个或多个隐藏节点层(即,隐藏层)(优选地,多个隐藏节点层)的神经网络。
与提出的概念或上文或下文(例如,图2至图5)所描述的一个或多个示例相结合提及计算机系统、装置、设备、方法和相对应的计算机程序的更多细节和方面。计算机系统、装置、设备、方法和相对应的计算机程序可包括与提出的概念的一个或多个方面或上文或下文所述的一个或多个示例相对应的一个或多个附加可选特征。
行业正处于可持续性/循环经济的转折点,其中云服务提供商(Cloud ServiceProvider,CSP)、通信服务提供商(Communication Service Provider,CoSP)和制造商专注于可持续数据中心。这可能需要一种新的方式来驱动用于为XPU HW生成计算内核的逻辑,除了性能外,还要关注功率/能量意识。本公开提出了可基于
下面给出了专注于作为
图2示出了系统体系结构的示例的示意图。图2示出了系统体系结构的5个层——DPC++应用210、DPC++运行时220、PI(DPC++插件接口)插件230、本机运行时和驱动程序240以及设备250。DPC++应用210包含具有设备X可执行文件和SPIR-V(Standard PortableIntermediate Representation-V,标准可移植中间表示-V)中间表示的SYCL主机/主机设备215。SYCL主机/主机设备使用DPC++运行时库222(其包含SYCL API(ApplicationProgramming Interface,应用编程接口)、PI发现和插件基础设施、调度器、存储器管理器、设备管理器、程序和内核管理器)以及主机设备运行时(runtime,RT)接口来执行计算机程序。在一些情况下,SYCL主机/主机设备可绕过大多数DPC++运行时库,并经由主机设备运行时接口和OpenMP运行时248(作为本机运行时和驱动程序240的一部分)直接连接到CPU(设备250中的一个)。DPC++运行时进一步包括DPC++运行时插件接口226,其包含PI类型和服务以及设备二进制管理。DPC++运行时插件接口可以使用包含在PI插件层230中的PI/X运行时插件232和/或PI/OpenCL插件234。本机运行时和驱动程序层240可包含设备X本机运行时242、OpenCL运行时244,该设备X本机运行时242在PI/X运行时插件232与设备X之间提供接口,该OpenCL运行时244经由其他层(诸如线程构建块(Threading Building Block,TBB)运行时246)在PI/OpenCL插件234与设备Y、设备Z、以及CPU之间提供接口。在设备250上,可以通过监测(一个或多个)内核的执行来收集功率、热和/或能量遥测。
例如,可以由结合图1a至图1c介绍的装置10、设备10、方法或计算机程序实现或可以与结合图1a至图1c介绍的装置10、设备10、方法或计算机程序相对应的提出的PTCK 224可被放置在DPC++运行时库内。例如,如图2和图5所示,提出的PTCK可涉及发现模块513,该发现模块513可用于发现XPU计算单元、存储器和互连(例如,CXL(Compute Express Link,计算快速链路)/PCIe(Peripheral Component Interface express,外围组件接口快速)/离散存储器中枢)能力。PTCCK可进一步包括(例如,用于确定能量相关度量的)功率和能量遥测模块514,其可包括以下中的一项或多项:估计器,用于利用合成或现实数据流针对现有任务图、计算内核从跨各种IP(intellectual property,知识产权)块的平台遥测估计能量;评估器,用于利用策略配置的合成数据生成器(在下面介绍)在沙盒环境中评估新任务图和计算内核以跟踪平台的激活配置文件;以及控制器,可以是运行时监测平台遥测以确保图执行和内核部署基于策略配置与平台功率管理单元(power management unit,PMU)(图中未示出)一起而被监督和监测。PTCCK可进一步包括动态图放置模块(图中没有示出),其可能是可以提供改进或最佳的图分割或放置策略推荐(例如,仅XPU、XPU的组合等)的DPC++oneAPI运行时库组件。PTCCK可进一步包括动态内核生成模块512,其可能是DPC++oneAPI运行时库组件,用于对任务图进行重新分区并生成/重新生成可以匹配功率/能量/热护栏而不是纯粹关注性能的相关联的计算内核。
图3示出图示将针对给定XPU的指定的功率和热约束以及实时的功率和热遥测考虑在内的、在XPU体系结构(CPU、GPU、FPGA、ASIC)上的潜在计算内核生成和放置的示例。这可包括动态JIT(即时)代码生成、现有JIT代码的重新生成或映射、基于XPU硬件逻辑元件的功率和热效率对任务图的重新分区、除性能之外还针对功率和热效率而进行的基于任务图的并行内核部署。在图3的左侧(图3-1),在中间示出了代码片段,其包含可以通过一个或多个计算内核计算的部分(虚线之间)。主机执行代码到该点为止,然后将内核入列到任务图,然后继续。该图与主机程序异步地被执行。内核可以由一个或多个XPU(诸如图3的右侧/图3-2示出的CPU/GPU)执行。内核的布置可考虑各方面,诸如固定功能硬件的可用性与可编程硬件的使用,以及诸如
图4示出了涉及利用Tensorflow框架410以及与嵌入DPC++运行时中的oneDNN/PTCCK 420的交互的AI(Artificial Intelligence)的配置流程的示例的示意图。在初始化时,oneDNN 420可从操作系统(operating system,OS)或硬件(hardware,HW)430请求CPU标识符(CPU_ID)。然后oneDNN 420可以通过查询平台能力(例如,检测支持的平台能力)而被初始化(421)。Tensorflow框架还可以用oneDNN初始化(411),并从应用指定或协商SLA(服务水平协议),以指定应用SLA(例如,不使用特定的ISA,诸如AVX-512)(422)。换句话说,应用可以指定PTCCK的功率/热SLA/要求,以影响目标XPU HW上的任务图调度、计算内核生成和调度。SLA规范可能是双向的,即,应用可以提供其能量QoS要求,并且“推荐器服务”可以响应平台能够支持的内容,并且协商可被执行。换句话说,服务水平协议的规范可是双向的。处理电路系统可被配置成用于基于服务水平协议的双向规范并基于两个或更多个不同XPU的能力来协商服务水平协议。例如,基于策略的配置可用于避免任何否决的ISA或能量/热禁止的ISA或带外队列管理器管理在XPU内的代码执行的使用。然后,Tensorflow框架可以加载模型(412),该模型诸如ResNet50图,并且oneDNN可以创建卷积描述符(423),并创建卷积基元描述符(424;425)。作为输入,可以使用卷积算法和输入的存储器描述符(用于源、权重、偏置、跨步、填充和SLA)(如图4所示)。然后,oneDNN可以生成被使用的相应内核(426)。
图5示出了本公开中提出的涉及控制器510和评估器520组件朝向利用适当任务图重新分区来生成功率和热感知计算内核的操作流程的示意图。例如,控制器510可包括推荐器服务511、内核生成器服务512、发现服务513、功率和能量遥测服务514以及XPU管理器515。控制器510可以给定候选XPU互依赖性流程图(例如,任务图)和SLA模型体系结构,并针对特定QoS(服务质量)改进或优化内核。例如,控制器可以基于XPU发现、能量配置文件要求和沙盒结果来为计算内核提供改进或最佳放置推荐。评估器520可包括沙盒521和运行时评估度量522(例如,功率、热、性能)。评估器520可以对内核功率/热QoS进行实时评估,以便将来改进。例如,评估器520可以使用合成数据生成器跟踪沙盒环境中的功率/热激活配置文件。控制器可以向评估器提供提出的硬件/软件实例,并且评估器可以向控制器提供奖励函数。使用任务图依赖性、应用针对热和功率指定的SLA,控制器模块510可以(例如,使用依赖性图存档530)生成适当的运行时(JIT)内核540,从而以功率和热高效的方式利用发现的XPU能力。这可以是静态的(其中会生成多个不同的内核副本/版本,其可在运行时选择),或者使用JIT(即时编译)动态的。换句话说,任务图重新生成可以利用过去的直方图与相关联的计算内核一起静态地(即,通过图解析)执行或不利用过去的直方图与相关联的计算内核一起动态地(例如,基于现实世界数据流)执行。图5示出了内核的不同组合540。矩形540内的块是计算内核,其中不同的填充表示不同的计算选项(例如,SSE(Streaming Singleinstruction multiple data Extensions,流式单指令多数据扩展)/AVX2/AVX3/AMX)。评估器模块520可以利用来自XPU的主动遥测来监测运行时内核,以为了将来而向控制器模块中的内核生成器提供反馈和洞察。这可以实现,例如,使用基于RL(ReinforcementLearning,强化学习)的AutoML框架进行扩展和实时适配。换句话说,处理电路系统可被配置成用于处理与使用机器学习模型对由两个或更多个XPU对计算机程序的执行相关的数据(即,XPU的主动遥测),该机器学习模型被训练用于基于与监测相关的数据来输出被监测的能量相关度量,并且处理电路系统被配置成用于基于机器学习模型的输出来指派一个或多个计算内核的执行和/或来生成或重新生成一个或多个计算内核。例如,如上文所概述,基于RL的AutoML框架可用于创建和/或训练机器学习模型。实际上,评估器520和控制器510模块可以利用来自XPU的主动遥测来监测运行时内核,以向内核生成器模块提供反馈和洞察,以便在有或没有机器学习(ML)支持的情况下进行未来的改进。
提出的概念可在DPC++oneAPI中引入功率、热和能量感知成本函数,该函数支持任务图重新生成(动态而不影响功能准确性——例如,AI(人工智能)或介质/图形方面的质量)和基于静态遥测(图解析)、运行时遥测(数据依赖性)和过去使用遥测的直方图的相关联计算内核。它可以提供基于(CXL)存储器、输入/输出和离散存储器控制中枢能力的图和内核分区。它可以提供硬件和应用感知,例如,以支持虚拟机迁移,以及动态调整内核以适应可用的新硬件,从而避免因为为较旧硬件生成的、可能在较新硬件中被否决的内核而无效的ISA(指令集体系结构)/执行单元。
结合所提出的概念或上文或下文(例如图1a至图1c)所述的一个或多个示例提及了PTCCK概念的更多细节和方面。PTCCK概念可包括与所提出的概念的一个或多个方面或上文或下文所述的一个或多个示例相对应的一个或多个附加可选特征。
在下文中,呈现了所提出的概念的一些示例:
示例(例如,示例1)涉及一种用于控制由计算机系统(100)对计算机程序的执行的装置(10),该计算机系统(100)包括两个或更多个不同处理单元XPU(102、104、106),该装置包括处理电路系统(14),该处理电路系统(14)被配置成用于获得计算机程序,其中计算机程序的至少部分基于要由两个或更多个不同XPU执行的一个或多个计算内核。处理电路系统被配置成用于针对每个XPU确定在相应的XPU上执行一个或多个计算内核的能量相关度量。处理电路系统被配置成用于基于相应的能量相关度量将一个或多个计算内核的执行指派给两个或更多个不同XPU。
另一示例(例如,示例2)涉及先前描述的示例(例如,示例1)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关度量包括相应计算内核在相应的XPU上的执行的估计的功耗和估计的热影响中的至少一个。
另一示例(例如,示例3)涉及先前描述的示例(例如,示例1至示例2中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于指派一个或多个计算内核的执行以使得能量相关目标被实现。
另一示例(例如,示例4)涉及先前描述的示例(例如,示例3)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关目标是预先定义的,或者其中能量相关目标时通过与计算机程序的执行相关联的服务水平协议来定义的。
另一示例(例如,示例5)涉及先前描述的示例(例如,示例4)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议基于两个或更多个不同XPU的能力。
另一示例(例如,示例6)涉及先前描述的示例(例如,示例5)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议的规范是双向的,其中处理电路系统被配置成用于基于服务水平协议的双向规范并基于两个或更多个不同XPU的能力来协商服务水平协议。
另一示例(例如,示例7)涉及先前描述的示例(例如,示例1至示例6中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于确定计算机程序的任务图,其中一个或多个计算内核作为任务图的部分,并且处理电路系统被配置成用于基于任务图来确定能量相关度量。
另一示例(例如,示例8)涉及先前描述的示例(例如,示例7)或涉及本文所描述的示例中的任一示例,进一步包括,指派一个或多个计算内核的执行包括对任务图进行重新分区,使得一个或多个计算内核中的至少一个计算内核被拆分为两个或更多个计算内核,其中该两个或更多个计算内核被指派给两个或更多个XPU。
另一示例(例如,示例9)涉及先前描述的示例(例如,示例1至示例8中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成一个或多个计算内核。
另一示例(例如,示例10)涉及先前描述的示例(例如,示例9)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于对计算机程序在沙盒环境中的执行的监测或对由两个或更多个XPU对计算机程序的执行的监测来生成或重新生成一个或多个计算内核。
另一示例(例如,示例11)涉及先前描述的示例(例如,示例9至示例10中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派之前被生成和/或被重新生成。
另一示例(例如,示例12)涉及先前描述的示例(例如,示例9至示例10中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派后即时地被生成和/或被重新生成。
另一示例(例如,示例13)涉及先前描述的示例(例如,示例9至示例12中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成计算机程序的任务图,以及用于基于任务图来生成或重新生成一个或多个计算内核。
另一示例(例如,示例14)涉及先前描述的示例(例如,示例13)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于计算机程序的静态分析来生成或重新生成任务图。
另一示例(例如,示例15)涉及先前描述的示例(例如,示例13至示例14中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于根据现实世界当前数据流和/或现实世界过去数据流的计算机程序的动态分析来生成或重新生成任务图。
另一示例(例如,示例16)涉及先前描述的示例(例如,示例1至示例15中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于通过估计能量相关度量来确定能量相关度量。
另一示例(例如,示例17)涉及先前描述的示例(例如,示例1至示例16中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于通过在沙盒评估环境中执行计算机程序来确定能量相关度量。
另一示例(例如,示例18)涉及先前描述的示例(例如,示例16至示例17中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于计算机程序中包含的或计算机程序可访问的现实世界数据来确定能量相关度量。
另一示例(例如,示例19)涉及先前描述的示例(例如,示例1至示例18中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于基于对由两个或更多个XPU对计算机程序执行的监测来更新能量相关度量。
另一示例(例如,示例20)涉及先前描述的示例(例如,示例1至示例19中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于生成要由计算机程序使用的合成数据,以及用于基于合成数据来确定能量相关度量。
另一示例(例如,示例21)涉及先前描述的示例(例如,示例1至示例20中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于处理与使用机器学习模型对由两个或更多个XPU对计算机程序的执行的监测相关的数据,该机器学习模型被训练用于基于与监测相关的数据来输出被监测的能量相关度量,并且处理电路系统被配置成用于基于机器学习模型的输出来指派一个或多个计算内核的执行和/或生成或重新生成一个或多个计算内核。
另一示例(例如,示例22)涉及先前描述的示例(例如,示例1至示例21中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于发现计算机系统的两个或更多个XPU的能力,以及用于基于发现的能力来确定能量相关度量和/或指派执行。
另一示例(例如,示例23)涉及先前描述的示例(例如,示例22)或涉及本文所描述的示例中的任一示例,进一步包括,能力包括相应的XPU的计算能力、存储器能力和互连能力中的一个或多个。
另一示例(例如,示例24)涉及先前描述的示例(例如,示例1至示例23中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,两个或更多个XPU包括以下各项的群组中的两项或更多项:中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、人工智能(AI)加速器和通信处理迁移单元。
另一示例(例如,示例25)涉及先前描述的示例(例如,示例1至示例24中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,处理电路系统被配置成用于为计算机程序的执行提供运行时环境,其中能量相关度量的确定和执行的指派通过运行时环境执行。
另一示例(例如,示例26)涉及先前描述的示例(例如,示例1至示例25中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核的执行到两个或更多个不同XPU的指派受到与否决的指令或否决的指令集、禁止的指令或禁止的指令集以及带外队列管理在XPU内的代码执行中的一者或多者相关的一个或多个策略的限制。
另一示例(例如,示例27)涉及先前描述的示例(例如,示例1至示例26中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关度量基于一个或多个处于活动状态的计算内核,并基于一个或多个处于空闲状态的计算内核。
示例(例如,示例28)涉及一种计算机系统(100),该计算机系统(100)包括根据示例1至示例27中的一个示例的装置(10)和两个或更多个XPU(102、104、106)。
示例(例如,示例29)涉及一种用于控制由计算机系统(100)对计算机程序的执行的设备(10),该计算机系统(100)包括两个或更多个不同处理单元XPU(102、104、106),该设备包括用于处理的装置(14),该用于处理的装置(14)被配置成用于获得计算机程序,其中计算机程序的至少部分基于要由两个或更多个不同XPU执行的一个或多个计算内核。用于处理的装置被配置成用于针对每个XPU确定在相应的XPU上执行一个或多个计算内核的能量相关度量。用于处理的装置被配置成用于基于相应的能量相关度量将一个或多个计算内核的执行指派给两个或更多个不同的XPU。
另一示例(例如,示例30)涉及先前描述的示例(例如,示例29)或涉及本文所描述的示例中的任一示例,进一步包括能量相关度量包括相应的计算内核在相应的XPU上的执行的估计的功耗和估计的热影响中的至少一个。
另一示例(例如,示例31)涉及先前描述的示例(例如,示例29至示例30中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于指派一个或多个计算内核的执行以使得能量相关目标被实现。
另一示例(例如,示例32)涉及先前描述的示例(例如,示例31)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关目标是预先定义的,或者其中能量相关目标时通过与计算机程序的执行相关联的服务水平协议来定义的。
另一示例(例如,示例33)涉及先前描述的示例(例如,示例32)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议基于两个或更多个不同XPU的能力。
另一示例(例如,示例34)涉及先前描述的示例(例如,示例33)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议的规范是双向的,其中用于处理的装置被配置成用于基于服务水平协议的双向规范并基于两个或更多个不同XPU的能力来协商服务水平协议。
另一示例(例如,示例35)涉及先前描述的示例(例如,示例29至示例34中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于确定计算机程序的任务图,其中一个或多个计算内核作为任务图的部分,并且用于处理的装置被配置成用于基于任务图来确定能量相关度量。
另一示例(例如,示例36)涉及先前描述的示例(例如,示例35)或涉及本文所描述的示例中的任一示例,进一步包括,指派一个或多个计算内核的执行包括对任务图进行重新分区,使得一个或多个计算内核中的至少一个计算内核被拆分为两个或更多个计算内核,其中该两个或更多个计算内核被指派给两个或更多个XPU。
另一示例(例如,示例37)涉及先前描述的示例(例如,示例29至示例36中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成一个或多个计算内核。
另一示例(例如,示例38)涉及先前描述的示例(例如,示例37)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于对计算机程序在沙盒环境中的执行的监测或对由两个或更多个XPU对计算机程序的执行的监测来生成或重新生成一个或多个计算内核。
另一示例(例如,示例39)涉及先前描述的示例(例如,示例37至示例38中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派之前被生成和/或被重新生成。
另一示例(例如,示例40)涉及先前描述的示例(例如,示例37至示例38中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派后即时地被生成和/或被重新生成。
另一示例(例如,示例41)涉及先前描述的示例(例如,示例37至示例40中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成计算机程序的任务图,以及用于基于任务图来生成或重新生成一个或多个计算内核。
另一示例(例如,示例42)涉及先前描述的示例(例如,示例41)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于计算机程序的静态分析来生成或重新生成任务图。
另一示例(例如,示例43)涉及先前描述的示例(例如,示例41至示例42中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于根据现实世界当前数据流和/或现实世界过去数据流的计算机程序的动态分析来生成或重新生成任务图。
另一示例(例如,示例44)涉及先前描述的示例(例如,示例29至示例43中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于通过估计能量相关度量来确定能量相关度量。
另一示例(例如,示例45)涉及先前描述的示例(例如,示例29至示例44中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于通过在沙盒评估环境中执行计算机程序来确定能量相关度量。
另一示例(例如,示例46)涉及先前描述的示例(例如,示例44至示例45中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于计算机程序中包含的或计算机程序可访问的现实世界数据来确定能量相关度量。
另一示例(例如,示例47)涉及先前描述的示例(例如,示例29至示例46中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于基于对由两个或更多个XPU对计算机程序执行的监测来更新能量相关度量。
另一示例(例如,示例48)涉及先前描述的示例(例如,示例45至示例47中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于生成要由计算机程序使用的合成数据,以及用于基于合成数据来确定能量相关度量。
另一示例(例如,示例49)涉及先前描述的示例(例如,示例29至示例48中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于处理与使用机器学习模型对由两个或更多个XPU对计算机程序的执行的监测相关的数据,该机器学习模型被训练用于基于与监测相关的数据来输出被监测的能量相关度量,并且用于处理的装置被配置成用于基于机器学习模型的输出来指派一个或多个计算内核的执行和/或生成或重新生成一个或多个计算内核。
另一示例(例如,示例50)涉及先前描述的示例(例如,示例29至示例49中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于发现计算机系统的两个或更多个XPU的能力,以及用于基于发现的能力来确定能量相关度量和/或指派执行。
另一示例(例如,示例51)涉及先前描述的示例(例如,示例50)或涉及本文所描述的示例中的任一示例,进一步包括,能力包括相应XPU的计算能力、存储器能力和互连能力中的一个或多个。
另一示例(例如,示例52)涉及先前描述的示例(例如,示例29至示例51中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,两个或更多个XPU包括以下各项的群组中的两项或更多项:中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、人工智能(AI)加速器和通信处理迁移单元。
另一示例(例如,示例53)涉及先前描述的示例(例如,示例29至示例52中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,用于处理的装置被配置成用于为计算机程序的执行提供运行时环境,其中能量相关度量的确定和执行的指派通过运行时环境执行。
另一示例(例如,示例54)涉及先前描述的示例(例如,示例29至示例53中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核的执行到两个或更多个不同的XPU的指派受到与否决的指令或否决的指令集、禁止的指令或禁止的指令集以及带外队列管理在XPU内的代码执行中的一者或多者相关的一个或多个策略的限制。
另一示例(例如,示例55)涉及先前描述的示例(例如,示例29至示例54中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关度量基于一个或多个处于活动状态的计算内核,并基于一个或多个处于空闲状态的计算内核。
示例(例如,示例56)涉及一种计算机系统(100),该计算机系统(100)包括根据示例29至示例55中的一个示例的设备(10)和两个或更多个XPU(102、104、106)。
示例(例如,示例57)涉及一种用于控制由计算机系统对计算机程序的执行的方法,该计算机系统包括两个或更多个不同处理单元(XPU),该方法包括获得计算机程序(130),其中计算机程序的至少部分基于要由两个或更多个不同的XPU执行的一个或多个计算内核。该方法包括针对每个XPU确定在相应的XPU上执行一个或多个计算内核的能量相关度量(150)。该方法包括基于相应的能量相关度量将一个或多个计算内核的执行指派给两个或更多个不同的XPU(160)。
另一示例(例如,示例58)涉及先前描述的示例(例如,示例57)或涉及本文所描述的示例中的任一示例,进一步包括能量相关度量包括相应的计算内核在相应的XPU上的执行的估计的功耗和估计的热影响中的至少一个。
另一示例(例如,示例59)涉及先前描述的示例(例如,示例57至示例58中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括指派一个或多个计算内核的执行以使得能量相关目标被实现。
另一示例(例如,示例60)涉及先前描述的示例(例如,示例59)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关目标是预先定义的,或者其中能量相关目标时通过与计算机程序的执行相关联的服务水平协议来定义的。
另一示例(例如,示例61)涉及先前描述的示例(例如,示例61)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议基于两个或更多个不同XPU的能力。
另一示例(例如,示例62)涉及先前描述的示例(例如,示例61)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议的规范是双向的,其中方法包括基于服务水平协议的双向规范并基于两个或更多个不同XPU的能力来协商服务水平协议。
另一示例(例如,示例63)涉及先前描述的示例(例如,示例57至示例62中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括确定计算机程序的任务图(140),其中一个或多个计算内核作为任务图的部分,并且该方法包括基于任务图来确定能量相关度量(150)。
另一示例(例如,示例64)涉及先前描述的示例(例如,示例63)或涉及本文所描述的示例中的任一示例,进一步包括,指派一个或多个计算内核的执行包括对任务图进行重新分区,使得一个或多个计算内核中的至少一个计算内核被拆分为两个或更多个计算内核,其中该两个或更多个计算内核被指派给两个或更多个XPU。
另一示例(例如,示例65)涉及先前描述的示例(例如,示例57至示例64中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成一个或多个计算内核(164)。
另一示例(例如,示例66)涉及先前描述的示例(例如,示例65)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于对计算机程序在沙盒环境中的执行的监测或对由两个或更多个XPU对计算机程序的执行的监测来生成或重新生成一个或多个计算内核(164)。
另一示例(例如,示例67)涉及先前描述的示例(例如,示例65至示例66中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派之前被生成和/或被重新生成。
另一示例(例如,示例68)涉及先前描述的示例(例如,示例65至示例66中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派后即时地被生成和/或被重新生成。
另一示例(例如,示例69)涉及先前描述的示例(例如,示例65至示例68中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于一个或多个计算内核的执行到两个或更多个XPU来生成或重新生成计算机程序的任务图(162),以及基于任务图来生成或重新生成一个或多个计算内核(164)。
另一示例(例如,示例70)涉及先前描述的示例(例如,示例69)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于计算机程序的静态分析来生成或重新生成任务图(162)。
另一示例(例如,示例71)涉及先前描述的示例(例如,示例69至示例70中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于根据现实世界当前数据流和/或现实世界过去数据流的计算机程序的动态分析来生成或重新生成任务图(162)。
另一示例(例如,示例72)涉及先前描述的示例(例如,示例57至示例71中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括通过估计能量相关度量(152)来确定能量相关度量(150)。
另一示例(例如,示例73)涉及先前描述的示例(例如,示例57至示例72中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括通过在沙盒评估环境中执行计算机程序(154)来确定能量相关度量(150)。
另一示例(例如,示例74)涉及先前描述的示例(例如,示例72至示例73中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于计算机程序中包含的或计算机程序可访问的现实世界数据来确定能量相关度量(150)。
另一示例(例如,示例75)涉及先前描述的示例(例如,示例57至示例74中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括基于对由两个或更多个XPU对计算机程序的执行的监测来更新能量相关度量(156)。
另一示例(例如,示例76)涉及先前描述的示例(例如,示例57至示例74中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括生成要由计算机程序使用的合成数据(158),以及用于基于合成数据来确定能量相关度量(150)。
另一示例(例如,示例77)涉及先前描述的示例(例如,示例57至示例76中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括处理与使用机器学习模型对由两个或更多个XPU对计算机程序的执行的监测相关的数据,该机器学习模型被训练用于基于与监测相关的数据来输出被监测的能量相关度量,一个或多个计算内核的执行的指派和/或一个或多个计算内核生成或重新生成基于机器学习模型的输出。
另一示例(例如,示例78)涉及先前描述的示例(例如,示例57至示例77中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括发现计算机系统的两个或更多个XPU的能力(120),以及用于基于发现的能力来确定能量相关度量和/或指派执行。
另一示例(例如,示例79)涉及先前描述的示例(例如,示例78)或涉及本文所描述的示例中的任一示例,进一步包括,能力包括相应XPU的计算能力、存储器能力和互连能力中的一个或多个。
另一示例(例如,示例80)涉及先前描述的示例(例如,示例57至示例79中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,两个或更多个XPU包括以下各项的群组的两个或更多个:中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、人工智能(AI)加速器和通信处理迁移单元。
另一示例(例如,示例81)涉及先前描述的示例(例如,示例57至示例80中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,方法包括为计算机程序的执行提供运行时环境(110),其中能量相关度量的确定和执行的指派通过运行时环境执行。
另一示例(例如,示例82)涉及先前描述的示例(例如,示例57至示例81中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核的执行到两个或更多个不同的XPU的指派受到与否决的指令或否决的指令集、禁止的指令或禁止的指令集以及带外队列管理在XPU内的代码执行中的一者或多者相关的一个或多个策略的限制。
另一示例(例如,示例83)涉及先前描述的示例(例如,示例57至示例82中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关度量基于一个或多个处于活动状态的计算内核,并基于一个或多个处于空闲状态的计算内核。
示例(例如,示例84)涉及包括两个或更多个XPU的计算机系统,计算机系统被配置成用于执行示例57至83中的一个示例的方法。
示例(例如,示例85)涉及一种用于控制由计算机系统(100)对计算机程序的执行的装置(10),该计算机系统(100)包括两个或更多个不同处理单元XPU(102、104、106),该装置(10)包括接口电路系统(12)、机器可读指令和处理电路系统(14),该处理电路系统(14)用于执行该机器可读指令以获得计算机程序,其中计算机程序的至少部分基于要由两个或更多个不同XPU执行的一个或多个计算内核。机器可读指令包括用于针对每个XPU确定在相应XPU上执行一个或多个计算内核的能量相关度量的指令。机器可读指令包括用于基于相应的能量相关度量将一个或多个计算内核的执行指派给两个或更多个不同XPU的指令。
另一个示例(例如,示例86)涉及先前描述的示例(例如,示例85)或涉及本文所描述的示例中的任一示例,进一步包括能量相关度量包括相应的计算内核在相应的XPU上的执行的估计的功耗和估计的热影响中的至少一个。
另一示例(例如,示例87)涉及先前描述的示例(例如,示例85至示例86中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于指派一个或多个计算内核的执行以使得能量相关目标被实现的指令。
另一示例(例如,示例88)涉及先前描述的示例(例如,示例87)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关目标是预先定义的,或者其中能量相关目标时通过与计算机程序的执行相关联的服务水平协议来定义的。
另一示例(例如,示例89)涉及先前描述的示例(例如,示例88)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议基于两个或更多个不同XPU的能力。
另一示例(例如,示例90)涉及先前描述的示例(例如,示例89)或涉及本文所描述的示例中的任一示例,进一步包括,服务水平协议的规范是双向的,其中机器可读指令包括用于基于服务水平协议的双向规范并基于两个或更多个不同XPU的能力来协商服务水平协议的指令。
另一示例(例如,示例91)涉及先前描述的示例(例如,示例85至示例90中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于确定计算机程序的任务图的指令,其中一个或多个计算内核作为任务图的部分,并且包括用于基于任务图来确定能量相关度量的指令。
另一示例(例如,示例92)涉及先前描述的示例(例如,示例91)或涉及本文所描述的示例中的任一示例,进一步包括,指派一个或多个计算内核的执行包括对任务图进行重新分区,使得一个或多个计算内核中的至少一个计算内核被拆分为两个或更多个计算内核,其中该两个或更多个计算内核被指派给两个或更多个XPU。
另一示例(例如,示例93)涉及先前描述的示例(例如,示例85至示例92中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成一个或多个计算内核的指令。
另一示例(例如,示例94)涉及先前描述的示例(例如,示例93)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于对计算机程序在沙盒环境中的执行的监测或对由两个或更多个XPU对计算机程序的执行的监测来生成或重新生成一个或多个计算内核的指令。
另一示例(例如,示例95)涉及先前描述的示例(例如,示例93至示例94中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派之前被生成和/或被重新生成。
另一示例(例如,示例96)涉及先前描述的示例(例如,示例93至示例94中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核在指派后即时地被生成和/或被重新生成。
另一示例(例如,示例97)涉及先前描述的示例(例如,示例93至示例96中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于一个或多个计算内核的执行到两个或更多个XPU的指派来生成或重新生成计算机程序的任务图的指令,以及用于基于任务图来生成或重新生成一个或多个计算内核的指令。
另一示例(例如,示例98)涉及先前描述的示例(例如,示例97)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于计算机程序的静态分析来生成或重新生成任务图的指令。
另一示例(例如,示例99)涉及先前描述的示例(例如,示例97至示例98中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于根据现实世界当前数据流和/或现实世界过去数据流的计算机程序的动态分析来生成或重新生成任务图的指令。
另一示例(例如,示例100)涉及先前描述的示例(例如,示例85至示例99中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于通过估计能量相关度量来确定能量相关度量的指令。
另一示例(例如,示例101)涉及先前描述的示例(例如,示例85至示例100中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于通过在沙盒评估环境中执行计算机程序来确定能量相关度量的指令。
另一示例(例如,示例102)涉及先前描述的示例(例如,示例100至示例101中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于计算机程序中包含的或计算机程序可访问的现实世界数据来确定能量相关度量的指令。
另一示例(例如,示例103)涉及先前描述的示例(例如,示例85至示例102中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于基于对由两个或更多个XPU对计算机程序执行的监测来更新能量相关度量的指令。
另一示例(例如,示例104)涉及先前描述的示例(例如,示例85至示例103中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于生成由计算机程序使用的合成数据的指令,以及用于基于合成数据来确定能量相关度量的指令。
另一示例(例如,示例105)涉及先前描述的示例(例如,示例85至示例104中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于处理与使用机器学习模型对由两个或更多个XPU对计算机程序的执行的监测相关的数据的指令,该机器学习模型被配置用于基于与监测相关的数据来输出被监测的能量相关度量,并且机器可读指令包括用于基于机器学习模型的输出来指派一个或多个计算内核的执行和/或生成或重新生成一个或多个计算内核的指令。
另一示例(例如,示例106)涉及先前描述的示例(例如,示例85至示例105中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于发现计算机系统的两个或更多个XPU的能力的指令,以及用于基于发现的能力来确定能量相关度量和/或指派执行的指令。
另一示例(例如,示例107)涉及先前描述的示例(例如,示例106)或涉及本文所描述的示例中的任一示例,进一步包括,能力包括相应XPU的计算能力、存储器能力和互连能力中的一个或多个。
另一示例(例如,示例108)涉及先前描述的示例(例如,示例85至示例107中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,两个或更多个XPU包括以下各项的群组中的两项或更多项:中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、人工智能(AI)加速器和通信处理迁移单元。
另一示例(例如,示例109)涉及先前描述的示例(例如,示例85至示例108中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,机器可读指令包括用于为计算机程序的执行提供运行时环境的指令,其中能量相关度量的确定和执行的指派通过运行时环境执行。
另一示例(例如,示例110)涉及先前描述的示例(例如,示例85至示例109中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,一个或多个计算内核的执行到两个或更多个不同的XPU的指派受到与否决的指令或否决的指令集、禁止的指令或禁止的指令集以及带外队列管理在XPU内的代码执行中的一者或多者相关的一个或多个策略的限制。
另一示例(例如,示例111)涉及先前描述的示例(例如,示例85至示例110中的一个示例)或涉及本文所描述的示例中的任一示例,进一步包括,能量相关度量基于一个或多个处于活动状态的计算内核,并基于一个或多个处于空闲状态的计算内核。
示例(例如,示例112)涉及一种计算机系统(100),该计算机系统(100)包括根据示例85至示例111中的一个示例的装置(10)和两个或更多个XPU(102、104、106)。
示例(例如,示例113)涉及一种非暂态机器可读存储介质,该非暂态机器可读存储介质包括程序代码,该程序代码在被执行时,使机器执行示例57至83中的一个示例的方法。
示例(例如,示例114)涉及一种计算机程序,具有程序代码,该程序代码用于当计算机程序在计算机、处理器、或可编程硬件组件上被执行时执行示例57至83中的一个示例的方法。
示例(例如,示例115)涉及一种机器可读存储装置,该机器可读存储装置包括机器可读指令,该机器可读指令在被执行时,实施方法,或实现如在所附权利要求书中所要求的或在任何示例中示出的装置。
与前述示例中的一个特定示例相关地描述的方面和特征可与其他示例中的一个或多个相组合,以代替该其他示例的相同或类似特征或者将这些特征附加地引入到其他示例中。
示例可进一步是或涉及(计算机)程序,包括用于在该程序在计算机、处理器或其他可编程硬件组件上执行时执行以上方法中的一个或多个方法的程序代码。由此,上文所描述的方法中的不同方法的步骤、操作或过程也可以由经编程的计算机、处理器或其他可编程硬件组件执行。示例还可涵盖程序存储设备,诸如数字数据存储介质,其为机器可读、处理器可读或计算机可读的并且编码和/或包含机器可执行、处理器可执行或计算机可执行的程序和指令。例如,程序存储设备可包括或可以是数字存储设备、磁存储介质(诸如磁盘和磁带)、硬盘驱动器或光学可读数字数据存储介质。其他示例还可包括被编程为用于执行上文所描述的方法的步骤的计算机、处理器、控制单元、(现场)可编程逻辑阵列((field)programmable logic array,(F)PLA)、(现场)可编程门阵列((field)programmable gatearray,(F)PGA)、图形处理器单元(graphics processor unit,GPU)、专用集成电路(application-specific integrated circuit,ASIC)、集成电路(integrated circuit,IC)、或片上系统(system-on-a-chip,SoC)系统。
还理解,在说明书或权利要求书中公开的若干步骤、过程、操作或功能的公开不应被解释为暗指这些操作必须根据所描述的次序,除非在单独的用例中明确陈述或出于技术原因而必要。因此,先前的描述并非将若干步骤或功能的执行限于某个次序。此外,在其他示例中,单个步骤、功能、过程或操作可包括和/或被分解为子步骤、子功能、子过程或子操作。
如果一些方面已结合设备或系统进行了描述,但这些方面也应当被理解为对相对应方法的描述。例如,块、设备、或者设备或系统的功能性方面可与相对应方法的特征(诸如方法步骤)相对应。相对应地,结合方法描述的方面也应当被理解为对相对应块、相对应元件、相对应设备或相对应系统的属性或功能性特征的描述。
所附的权利要求由此被包括在具体实施方式中,其中,每一项权利要求本身可作为单独的示例。应当注意,虽然在权利要求书中从属权利要求指代与一项或多项其他权利要求的特定组合,但是其他示例也可包括该从属权利要求与任何其他从属或独立权利要求的主题的组合。在此明确提出此类组合,除非在个别情况下声明特定组合并非预期的。此外,即使权利要求并未直接被限定为引用任何另一独立权利要求,但该权利要求的特征也应针对该任何另一独立权利要求而被包括。
如本文所使用,术语“模块”是指可采用硬件组件或设备、在处理单元上运行的软件或固件、或其组合来实现的用于执行符合本公开的一个或多个操作的逻辑。软件和固件可以被具体化为存储在非暂态计算机可读存储介质上的指令和/或数据。如本文所使用,术语“电路系统”可以单独地或以任何组合包括非可编程(硬连线)电路系统、可编程电路系统(诸如处理单元)、状态机电路系统和/或存储可由可编程电路系统执行的指令的固件。本文中所描述的模块可共同地或单独地被具体化为形成计算系统的部分的电路系统。由此,模块中的任一者可以被实现为电路系统。被称为被编程为用于执行方法的计算系统可以被编程为经由软件、硬件、固件或其组合来执行该方法。
任何所公开的方法(或其部分)均可以被实现为计算机可执行指令或计算机程序产品。此类指令可以使得能够执行计算机可执行指令的计算系统或一个或多个处理单元来执行所公开的方法中的任一者。如本文所使用,术语“计算机”是指本文所描述或提及的任何计算系统或设备。由此,术语“计算机可执行指令”是指可由本文中所描述或提及的任何计算系统或设备执行的指令。
计算机可执行指令可以是例如计算系统的操作系统、存储在计算系统本地的应用、或对于计算系统可访问的远程应用(例如,经由网页浏览器)的部分。本文所述的方法中的任何方法均可以通过计算机可执行指令来执行,这些指令由单个计算系统或由在网络环境中操作的一个或多个联网的计算系统执行。计算机可执行指令和对计算机可执行指令的更新可以从远程服务器下载到计算系统。
进一步地,应理解,所公开的技术的实现不限于任何特定的计算机语言或程序。例如,所公开的技术可以由以C++、C#、Java、Perl、Python、JavaScript、Adobe Flash、C#、汇编语言、或任何其他编程语言编写的软件来实现。同样,所公开的技术不限于任何特定的计算机系统或任何特定类型的硬件。
此外,任何基于软件的示例(包括例如用于使计算机执行所公开的方法中的任一者的计算机可执行指令)可以通过合适的通信手段被上传、下载或远程访问。此类合适的通信手段包括例如,因特网、万维网、内联网、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波、超声和红外通信)、电子通信或其他此类通信手段。
不应将所公开的方法、设备和系统解释为以任何方式进行限制。替代地,本公开内容单独地以及以与彼此的各种组合和子组合针对各个公开的示例的所有新颖的且非显而易见的特征和方面。所公开的方法、设备和系统既不限于任何特定方面或特征或其组合,所公开的示例也不要求存在任何一个或多个特定优点或解决任何一个或多个特定的问题。
参考本公开的设备或方法在此提出的操作理论、科学原理或其他理论描述是出于更好地理解的目的而提供的,并且不旨在限制范围。所附权利要求中的设备和方法不限于以由此类操作理论描述的方式起作用的那些设备和方法。
- 一种基于等值线云图的土石坝防渗土料评价方法
- 一种高土石坝防渗土料掺配施工方法