CN115039072A - 用于跨服务器阵列分布的功能即服务实现方式的编译 - Google Patents

用于跨服务器阵列分布的功能即服务实现方式的编译 Download PDF

Info

Publication number
CN115039072A
CN115039072A CN202080095349.1A CN202080095349A CN115039072A CN 115039072 A CN115039072 A CN 115039072A CN 202080095349 A CN202080095349 A CN 202080095349A CN 115039072 A CN115039072 A CN 115039072A
Authority
CN
China
Prior art keywords
function
computing device
code
performance metric
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080095349.1A
Other languages
English (en)
Inventor
杨斌
包佳
M·哈格海特
李飞
李智伟
M·孙
许涛
周振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN115039072A publication Critical patent/CN115039072A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

系统、装置和方法可与第一计算设备相关联并提供用于对性能度量进行标识。性能度量与第一功能在至少一个第二计算设备上的执行相关联。系统、装置和方法对性能度量进行聚合以生成经聚合的性能度量,确定经聚合的性能度量满足阈值,并响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。

Description

用于跨服务器阵列分布的功能即服务实现方式的编译
技术领域
实施例总体上涉及软件部署。更具体地,实施例涉及分布式计算系统中的增强的编译操作。
背景技术
功能即服务(FaaS)是可提供这样的平台的计算模型:该平台允许客户开发、运行和管理各种应用功能,而不具有建立和维护典型地与开发和启动应用相关联的基础设施的复杂性。遵循FaaS模型来建立应用可实现“无服务器”架构。软件开发人员可利用FaaS来部署单独的“功能”、动作或逻辑部分。FaaS功能可能是短时的和短暂的。
附图说明
通过阅读以下说明书和所附权利要求书并通过参考以下附图,实施例的各种优势对本领域技术人员将变得显而易见,在附图中:
图1是根据实施例的功能部署、分析和编译过程的示例的过程流图;
图2是根据实施例的、与第一计算设备相关联并基于来自服务器阵列的性能度量的增强的代码编译的方法的示例的流程图;
图3是根据实施例的计算架构的示例的框图;
图4是根据实施例的、跟踪和上传概况分析数据的示例的过程流图;
图5是根据实施例的、实现功能代码服务的方法的示例的流程图;
图6是根据实施例的、上传概况分析数据并对功能进行编译的方法的示例的流程图;
图7是根据实施例的、生成用于一个或多个计算架构的经编译的代码的方法的示例的流程图;
图8是根据实施例的对经编译的代码进行反编译的方法的示例的流程图;
图9是根据实施例的使计数器归一化的方法的示例的流程图;
图10是根据实施例的性能增强的计算系统的示例的框图;
图11是根据实施例的半导体设备的示例的图示;
图12是根据实施例的处理器的示例的框图;以及
图13是根据实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
现在转向图1,图示出功能部署、分析和编译过程100。在过程100中,可实现动态总体(ensemble)编译(例如,即时(JIT)编译)来编译FaaS工作负荷。FaaS功能的每次调用可能是短暂的并且潜在地与其他调用功能无关。过程100可通过对来自跨基于云的系统的不同FaaS运行时实例的不同概况分析数据进行聚合来分析短暂FaaS功能,以标识“热点”并相应地对这些“热点”进行编译。
相比之下,常规设计(例如,编译器、数据共享过程、概况分析器等)可能由于功能的短时性质而无法完全领会每个功能的完整范围。例如,功能可跨宽服务器(例如,计算设备)阵列执行多次。换言之,在FaaS场景中,每个隔离的运行时可仅针对单个调用执行或执行有限数量的服务。短的生命周期阻碍了用于引导优化的有效简档的有意义生成。因此,一些常规设计可能无法标识包括“热点”(例如,高比例的所执行指令在其中发生的计算机程序的区域)的功能。由此,常规设计可能无法标识将最多地受益于编译和更广泛的分析的FaaS功能以进行增强,并且由此无法高效地编译FaaS功能。
过程100可通过标识包括热点的功能、选择性地标识这些包括热点的功能、并且跨多个服务器共享经编译的代码来增强执行。冷功能可以不被编译,以规避相关联的开销。在这样做时,由于热功能可具有相比于相同功能的其他实现方式(例如,经解释的代码)更高效地操作的经编译的代码,因此性能可被增强。冷功能可能不需要被编译和/或激进式地分析以进行优化。
换言之,相对于解释代码,编译代码可能招致更多的开销(例如,增加的等待时间和计算资源)。由于每个功能执行将更高效地(例如,等待时间和计算资源减少)执行,因此只要功能执行若干次,那么此类开销就可能是可接受的。由此,通过数次迭代,功能的增强且高效的执行将超过来自编译的增加的开销(例如,编译的成本小于针对若干次调用执行功能的成本的降低)。如果功能是冷的(例如,不频繁地执行),则由于开销可能是从未被证明合理性的(例如,编译的成本大于针对若干次调用执行该功能的成本的降低),因此该功能可能不被编译。由此,由于功能基于这些功能是热的还是冷的并基于可根据以上而设置的阈值来选择性地被编译,因此过程100可减少所利用的资源量。由此,即使两个功能可形成同一程序的部分,也仅这些功能中的一个功能可被编译而另一功能可能不被编译。
将会理解,可基于功能在一时间段内执行了多少次的测量来进一步应用不同的编译水平。换言之,开销较高的编译(可激进地分析并优化代码)可应用于频繁发生的功能,而开销较低的编译(可能不会对代码优化和分析到开销较高的编译对代码优化的那样)可应用于较不频繁发生的功能。由此,一些实施例可响应于功能(例如,先前被编译的功能)执行若干次以分析该功能而重新编译该功能的代码,以供进一步的效率增强。
在图1中,总体编译过程100对来自每个FaaS工作负荷的信息片段进行概况分析和收集,并聚合这些信息片段以确定有意义的编译决策。总体编译可将目标方法编译为特定架构所要求的本机代码(例如,用于微架构(μarch或uarch)、加速架构和/或特定处理器中实现给定指令集架构(ISA)的方式),以同时支持异构硬件。经典的预加载机制可被设计成用于总体JIT服务与用于执行JIT操作的真实工作负荷之间的查询交互。总体编译可被设计成用于快速且高效地适应于数据集改变和热点改变。例如,不仅热点被标识和编译,而且冷功能可能被反编译。由此,总体编译可能是高效且自适应的。
图1图示出一种分布式架构,该分布式架构包括与第一执行服务器106和第二执行服务器114连接的简档服务器102。简档服务器102、第一执行服务器106和第二执行服务器114是同一云计算环境的部分,并且通过合适的介质(例如,有线和/或无线连接)彼此连接。此外,简档服务器102、第一执行服务器106和第二执行服务器114各自可以是计算设备。
第一执行服务器106和第二执行服务器114可执行第一功能、第二功能和第三功能(例如,实例)。例如,第一执行服务器106可能正在执行第一功能实例108(各自对应于第一功能的实现方式)和第二功能实例110(各自对应于第二功能的实现方式),而第二执行服务器114可能正在执行第二功能实例116(各自对应于第二功能的实现方式)和第三功能实例118(各自对应于第三功能的实现方式)。
第一执行服务器106和第二执行服务器114可跟踪第一功能实例108、第二功能实例110、第二功能实例116和第三功能实例118的执行期间的性能度量(例如,功能的调用)。简档服务器102可基于第一、第二和第三功能的调用次数来确定是否要编译第一、第二和第三功能。
例如,第一执行服务器106和第二执行服务器114可包括概况分析器112、120,以对第一功能实例108、第二功能实例110、第二功能实例116和第三功能实例118的执行以及第一执行服务器106和第二执行服务器114的架构(例如,硬件特征、处理器的指令集架构、存储器尺寸、高速缓存尺寸、时钟速度、处理器速度、处理器类型等)进行概况分析。
概况分析器112、120可各自对相应的第一执行服务器106和第二执行服务器114上的本地服务和功能服务进行概况分析,以生成性能度量。详细地,概况分析器112可负责收集来自第一功能实例108和第二功能实例110的功能服务运行时的概况分析数据(例如,性能度量)。概况分析器112可进一步查询第一执行服务器106的底层硬件的架构信息,并将该架构信息与第一执行服务器106的标识符(例如,IP地址)相关联地存储。概况分析器112可将第一功能实例108的性能度量存储为第一功能简档112a。概况分析器112可将第二功能实例110的性能度量存储为第二功能简档112b。概况分析器112可将第一执行服务器106的硬件特定数据(例如,架构)存储为第一硬件简档112c。
由此,概况分析器112可测量第一和第二功能在第一执行服务器106上的执行特性,以生成性能度量。例如,概况分析器112可具有用于同一服务功能的计数器。计数器的值可各自为不同的性能度量。例如,计数器可包括方法调用计数器、循环后沿计数器、分支采用和不采用计数器等。由此,性能度量一般可指示功能被调用了多少次、以及功能的各部分被调用了多少次。
而且,计数器可被归一化。例如,为了对在具有架构差异(例如,CPU核数差异、核时钟差异、功率差异、存储器差异等)的不同物理平台上执行的聚合,可实现经归一化的计数器并将其报告给简档服务器102。换言之,可存储计数器的经归一化的值作为第一功能简档112a和第二功能简档112b的性能度量。经归一化的计数器可等于所报告的计数器除以计数器在其间进行计数的所报告的持续时间。等式1可以是经归一化的计数器的一种实现方式:
经归一化的计数器=所报告的计数器/所报告的持续时间。
等式1
类似地,第二执行服务器114可包括概况分析器120,该概况分析器120以与概况分析器112类似的方式执行。概况分析器120可负责收集来自第二功能实例116和第三功能实例118的功能服务运行时的概况分析数据。概况分析器120可进一步查询第二执行服务器114的底层硬件的架构信息,并将该架构信息与第二执行服务器114的标识符(例如,IP地址)相关联地存储。概况分析器120可将第二功能实例116的性能度量(例如,计数器的经归一化的值)存储为第二功能简档120a。概况分析器112可将第三功能实例118的性能度量存储为第三功能简档120b。概况分析器120可将第二执行服务器114的硬件特定数据存储为第二硬件简档120c。概况分析器120的性能度量可以以与上文相对于概况分析器112所描述的类似的方式来标识和确定。
第一执行服务器106和第二执行服务器114可与简档服务器102通信。第一执行服务器106和第二执行服务器114可将简档和架构数据发送至简档服务器102(即,步骤122、124)。换言之,第一功能简档112a、第二功能简档112b、第一硬件简档112c、第二功能简档120a、第三功能简档120b、和第二硬件简档120c可被传送至简档服务器102。在一些实施例中,第一执行服务器106和第二执行服务器114可以以周期性间隔发送简档和架构数据(即,步骤122、124),以持续地更新简档服务器102。
简档服务器102可包括分别对第一、第二和第三功能的简档数据进行聚合的第一功能代码服务126、第二功能代码服务128和第三功能代码服务130。如所图示,第一功能代码服务126可对第一功能简档112a的数据进行聚合以生成经聚合的简档数据126a。在该特定示例中,经聚合的简档数据126a可聚合例如包括对第一功能简档112a的若干更新的某个时间段内的第一功能简档112a的数据。在该示例中,经聚合的简档数据126a的性能度量(例如,计数器和/或经归一化的计数器的值)不满足阈值(例如,被确定为不是热点和/或第一功能的调用次数低于阈值),并且由此第一功能代码服务126不编译第一功能代码126b。
在如本文中所描述的一些实施例中,阈值可以针对每个功能动态地设置,并且可基于超过编译成本所需要的调用次数。例如,用于第一功能的阈值可基于编译第一功能代码126b的成本(例如,等待时间和/或计算资源)的估计和/或与经编译的代码的执行相关联的成本节省。例如,可确定与第一功能代码126b相关联的预测成本节省(例如,等待时间和/或计算资源的减少)。成本节省可以是在不进行编译的情况下执行功能代码126b的成本与执行功能代码126b的成本之间的差。如果在某个次数的调用上成本节省大于编译成本,则第一功能可被编译。由此,阈值可以是该次数的调用的成本节省大于编译成本所在的点的调用的次数。可类似地设置用于第二和第三功能的另一阈值。
第二功能代码服务128可对来自第一执行服务器106的第二功能简档112b和第二执行服务器114的第二功能简档120a进行聚合,以生成经聚合的简档数据128a。例如,第二功能代码服务128可将计数器和/或经归一化的计数器的值相加。
例如,假设概况分析器112包括用于对循环后沿在第二功能在第一执行服务器106上执行期间被采用了多少次进行计数的第一循环后沿计数器。进一步假设概况分析器120包括用于对同一循环后沿在第二功能在第二执行服务器114上执行期间被采用了多少次进行计数的第二循环后沿计数器。简档服务器102可对第一和第二循环后沿计数器的值进行聚合(例如,求和),并基于这些值与第二功能的同一部分(或功能上相同的部分)被执行了多少次相关联(例如,这些值是对第二功能的同一部分(或功能上相同的部分)被执行了多少次的测量和/或计数)的标识。例如,这些值可从第二功能简档112b和第二功能简档120a提取,这些值被传送至简档服务器102并被加在一起。由此,第二功能代码服务128可对与第二功能跨服务器阵列(多个服务器)的执行相关联的值进行聚合,并将经聚合的值存储为经聚合的简档数据128a。
第二功能代码服务128可对与第二功能相关联的计数进行聚合,并确定经聚合的计数中的至少一个满足阈值(例如,是热点和/或第二功能的调用次数高于阈值)。阈值可如上文所描述的相对于第一功能来设置。响应于经聚合的计数中的至少一个满足阈值,第二功能代码128d可被编译,以编译第二功能136。
第二功能代码128d可针对特定的目标架构而被编译。例如,第二功能代码服务128可标识来自第一执行服务器106和第二执行服务器114的传送的第一硬件简档112c和第二硬件简档120c,并且标识第一硬件简档112c和第二硬件简档120c彼此不同。由此,第二功能代码服务128可编译第二功能代码128d,以使得第二功能代码128d针对两种不同的架构被编译。
在该特定示例中,第二功能代码服务128基于第一硬件简档112c来编译第二功能136以生成第一架构功能代码128b。第一架构功能代码128b可针对第一执行官服务器106并且被设计成用于在第一执行服务器106的特定硬件(例如,处理器和/或加速器)上执行。
此外,第二功能代码服务128基于第二硬件简档120c来编译第二功能136以生成第二架构功能代码128c。第二架构功能代码128c可针对第二执行服务器114,并且可不同于第一架构功能代码128b。第二架构功能代码130b可被设计成用于在第二执行服务器114的特定硬件上执行。
由此,即使第一架构功能代码128b和第二架构功能代码128c可在功能上等同于第二功能,但第一架构功能代码128b和第二架构功能代码128c可基于不同的底层目标硬件而被编译成不同的。由此,简档服务器102可针对不同的目标架构以不同的方式来编译代码。
第二功能代码服务128和简档服务器102的存储器布局可不同于第一执行服务器106和第二执行服务器114(即使它们使用相同的第二功能镜像)。由此,简档服务器102的一些实施例在将第一架构功能代码128b和第二架构功能代码128c发送至第一执行服务器106和第二执行服务器114之前移除该第一架构功能代码128b和第二架构功能代码128c中依赖于过程的信息。
类似地,第三功能代码服务130可对一时间段内的第三功能简档120b的数据进行聚合,以生成经聚合的简档数据130a。经聚合的简档数据130a的性能度量可指示第三功能满足阈值(例如,是热点和/或第三功能的调用次数高于阈值)并且因此应当被编译。阈值可如上文所描述的相对于第一功能来设置。由此,简档服务器102可编译第三功能138。换言之,第三功能代码服务130可基于第二硬件简档120c来编译第三功能代码130c。简档服务器102可生成与第三功能相对应(例如,实现第三功能)的第二架构功能代码130b。依赖于过程的信息可从第二架构功能代码130b被移除。
简档服务器102可将与第二功能相对应的第一架构功能代码128b发送(例如,传播)至第一执行服务器106(即,步骤132)。第一执行服务器106可实现第一架构功能代码128b,以在第一架构功能代码被接收(即,步骤132)之后执行第二功能,由此减少等待时间和计算资源。简档服务器102可从第一硬件简档112c标识第一执行服务器106的标识符(例如,IP地址),并基于该标识符与第一执行服务器106通信。在一些实施例中,概况分析器112可存储并维护第一架构功能代码128b。
简档服务器102还可将第二架构功能代码128c、130b发送至第二执行服务器114(即,步骤134)。第二执行服务器114随后可实现与第二功能相对应的第二架构功能代码128c,以执行第二功能。第二执行服务器114可进一步实现与第三功能相对应的第二架构功能代码130b,以执行第三功能。由此,第二和第三功能的执行可以是性能增强的,并且资源使用可被减少。简档服务器102可从第二硬件简档120c标识第二执行服务器114的标识符(例如,IP地址),并将通信寻址到该标识符。在一些实施例中,概况分析器120可存储并维护第二架构功能代码128c、130b。
在一些实施例中,如果对应的功能是冷的,则简档服务器102可对经编译的代码进行反编译。例如,假设简档服务器102标识经聚合的简档数据130a的计数器已经下降为低于与同存储和/或维护第二架构功能代码130b相关联的成本相对应的另一阈值。第三功能代码服务130可对第二架构功能代码130b进行反编译,以减少计算资源(例如,存储器)。
由此,第一执行服务器106和第二执行服务器114可与简档服务器102通信,并且具体地与第一功能代码服务126、第二功能代码服务128和第三功能代码服务130通信,以发送第一功能简档112a、第二功能简档112b、第二功能简档120a、第三功能简档120b、第一硬件简档112c和第二硬件简档120c。在一些实施例中,概况分析器112、120可周期性地将第一功能简档112a、第二功能简档112b、第二功能简档120a、第三功能简档120b、第一硬件简档112c和第二硬件简档120c发送至第一功能代码服务126、第二功能代码服务128和第三功能代码服务130。在一些实施例中,第一执行服务器106和第二执行服务器114可各自包括仅一个概况分析器112、120(例如,“简档本地服务”)。
在一些实施例中,可实现功能服务。功能服务可以是被调动以运行服务功能的运行时,该服务功能诸如第一功能实例108、第二功能实例110、第二功能实例116和第三功能实例118。功能服务还可响应于用户请求。功能服务可以作为FaaS系统中的运行时来起作用。取决于服务请求并发性,概况分析器112、120可各自与在第一执行服务器106和第二执行服务器114中运行的多个功能服务实例通信。
简档服务器102可实现作为用于跨服务器阵列接收并聚合简档度量的专用代码服务的代码服务,在该示例中,服务器阵列包括第一执行服务器106和第二执行服务器114。当相应功能的性能度量达到阈值时,简档服务器102可编译相应的功能代码并将经编译的代码提供至服务器阵列。简档服务器102可以是服务器阵列内专用于聚合性能度量、标识性能何时满足阈值、编译功能代码并传送功能代码的专用服务器。
在一些实施例中,每个功能仅具有简档服务器102上的、对功能的性能度量进行聚合、编译功能的代码并传送经编译的代码的一个对应的代码服务。例如,第一功能可仅对应于第一功能代码服务126,第二功能可仅对应于第二功能代码服务128,并且第三功能可仅对应于第三功能代码服务130。在一些实施例中,除了执行第一功能代码服务126、第二功能代码服务128和第三功能代码服务130之外,简档服务器102还可执行功能(例如,第一、第二和/或第三功能)。在一些实施例中,第一功能代码服务126、第二功能代码服务128和第三功能代码服务130中的每一者实现相应的第一功能代码126b、第二功能代码128d和第三功能代码130c的JIT编译。
由此,一些实施例可采用JIT编译、动态变换和/或运行时编译来在程序的执行期间在运行时而不是在执行之前执行涉及编译的计算机代码。最通常的是,此类编译可包括源代码和/或字节码到机器代码的变换,该机器代码可直接被执行。实现JIT编译器的系统可持续地分析正在被执行的代码,并且标识其中从编译或重新编译获得的加速将超过编译该代码的开销的代码的部分。
在一些示例中,在功能第一次被调用时,该功能可能不被编译。例如,并且针对每个功能,虚拟机可维护调用计数,该调用计数开始于预定义的编译阈值并在每当方法被调用时被递减。当调用计数达到零时,针对该方法的即时编译被触发。因此,经常使用的方法在虚拟机已经启动之后立即被编译,并且较少使用的方法晚得多地被编译,或者根本不被编译。一些实施例可利用此类度量来确定哪些功能要编译以及哪些功能不应当被编译。由此,一些实施例可减少功能的操作时间,同时减少资源使用。值得注意的时,任何数量的计算设备可提供性能度量并从简档服务器102接收经编译的代码。
图2示出与第一计算设备相关联并基于来自服务器阵列的性能度量的增强的代码编译的方法300。方法300一般可在诸如例如已讨论的第一执行服务器106、第二执行服务器114和/或简档服务器102(图1)之类的服务器中实现。更具体地,方法300可采用一组逻辑指令而被实现为一个或多个模块,这些逻辑指令被存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等之类的机器或计算机可读存储介质中,存储在诸如例如可编程逻辑阵列(PLA)、FPGA、复杂可编程逻辑器件(CPLD)之类的可配置逻辑中,存储在使用诸如例如专用集成电路(ASIC)、互补式金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术之类的电路技术的固定功能硬件逻辑中,或存储在上述各项的任何组合中。
例如,可以用一种或多种编程语言的任何组合来编写用于实施在方法300中所示的操作的计算机程序代码,这些编程语言包括诸如JAVA、SMALLTALK、C++等的面向对象的编程语言,诸如JAVASCRIPT或PYTHON之类的动态类型语言,以及诸如“C”编程语言或类似编程语言的常规的过程编程语言。另外,逻辑指令可包括汇编程序指令、ISA指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/CPU、微控制器等)而言是原生的电子电路和/或其他结构部件个性化的状态信息。
图示的处理框302对性能度量进行聚合,这些性能度量与第一功能在至少一个第二计算设备上的执行相关联。图示的处理框304确定经聚合的性能度量满足阈值。图示的处理框306响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。
图3图示计算架构400,该计算架构400包括简档服务器402和包括第一至第三执行服务器410、412、414的服务器阵列。计算架构400可与过程100结合使用。例如,概况分析器服务器402可以是图1的简档服务器102,并且第一至第三执行服务器410、412、414可以是图1的服务器阵列的部分。
在该特定示例中,用于功能A 404的编译服务(其可与JIT功能代码服务相对应)可基于经聚合的概况分析数据404a而不对功能A进行编译。相比之下,用于功能B 406服务的编译服务(其可与JIT功能代码服务相对应)可对功能B的性能度量进行聚合,并基于经聚合的概况分析数据406a来确定功能B应当被编译。由此,用于功能B 406的编译服务基于第一和第二架构来编译功能B。
第一执行服务器410具有第一架构,第二执行服务器412具有第一架构,并且第三执行服务器414具有第二架构。由此,第一执行服务器410和第二执行服务器412具有同一类型的架构(第一架构),而第三执行服务器414具有不同架构(第二架构)。经编译的代码可被存储在功能B经编译代码406b(例如,数据结构)中,并且与经编译的代码在其上执行的对应架构相结合。由此,功能B经编译代码406b的第一代码可被设计用于第一架构,而功能B经编译代码406b的第二代码可被设计用于第二架构。
类似地,用于功能C 408服务的编译服务(其可与JIT编译器功能代码服务相对应)可基于经聚合的概况分析数据408a来确定功能C要被编译。由此,功能C经编译代码408b可包括第三代码和第四代码。换言之,经编译的代码可被存储在功能C经编译代码408b(例如,数据结构)中,并且与经编译的代码在其上执行的对应架构相结合。由此,功能C经编译代码408b的第三代码可被设计用于第一架构,而功能C经编译代码408b的第二代码可被设计用于第二架构。
在该示例中,第一执行服务器410、第二执行服务器412和第三执行服务器414中的每个相应服务器可接收被设计用于该相应执行服务器的特定架构的代码。由此,由于第一执行服务器410具有第一架构,因此第一执行服务器可接收第一代码来执行功能B。由于第二执行服务器412具有与第一执行服务器410相同的第一架构,因此第二执行服务器412可类似地接收第一功能代码。另外,第二执行服务器412可接收第三代码来执行功能C。第三执行服务器414可接收第三和第四代码来执行功能B和功能C。
在一些实施例中,简档服务器402可基于第一至第三执行服务器410、412、414的特定底层架构来确定传输目标。例如,第一执行服务器410可仅接收与该第一执行服务器将执行的功能有关并且具体地针对第一架构的相关经编译的代码。例如,简档服务器402可将第一代码而不是第二、第三和第四代码传送至第一执行服务器。
在一些实施例中,用于功能A 404的编译服务、用于功能B 406的编译服务器和用于功能C 408的编译服务中的每个编译服务可恰在功能A、功能B和功能C的对应功能服务镜像被部署之后、并在任何请求(例如,对经编译的代码的请求)被接收之前开始。在用于功能A 404的编译服务、用于功能B 406的编译服务器和用于功能C 408的编译服务的启动期间,来自功能A、功能B和功能C的镜像的所有文件(例如,类文件或JAR文件)被加载。
在一些实施例中,第一执行服务器410、第二执行服务器412、第三执行服务器414中的每一者具有对功能A、功能B或功能C进行概况分析的概况分析器。概况分析器可最初进入空闲状态,同时监听来自本地服务的、对概况分析数据上传的请求,以及来自简档服务器402的、对下载所高速缓存的经编译的代码的请求。概况分析器可向简档服务器402提供经聚合的数据。经聚合的数据可与经聚合的概况分析数据404a、406a、406c相对应。
图4图示出跟踪和上传概况分析数据的过程450。图1和图3的元件可与本文中所描述的元件中的任何元件结合使用和/或代替本文中所描述的元件中的任何元件来使用。例如,概况分析器服务器452可以是图1的简档服务器102,并且第一执行服务器454和第二执行服务器462可以是图1的服务器阵列的部分。
详细地,第一执行服务器454包括简档本地服务454a。简档本地服务454a可具有功能服务A和B。功能服务A可包括功能A的概况分析数据。功能A可以不包括经编译的代码。功能服务B可包括功能B的概况分析数据B和第一经编译的代码。简档服务器452可能已经生成第一经编译的代码并将第一经编译的代码提供至第一执行服务器454。简档服务器452可能已经基于来自简档本地服务454a、462a的聚合概况分析数据确定功能B要被编译以运行JIT任务。功能B的第一经编译的代码随后可由简档本地服务454a存储。简档本地服务454a可确定、存储和传送第一执行服务器454的硬件简档。
每当功能服务B调用功能B时,功能B的每个实例可实现第一经编译的代码。例如,简档本地服务454a可将第一经编译的代码提供至功能服务B 454c。功能服务B 454c可维护计数器并跟踪功能B的实例的执行以生成概况分析数据B,并以预定的间隔和/或响应于功能B的实例的完成而将概况分析数据B上传至简档本地服务454a(即,步骤456)。
当功能服务A 454b调用功能A时,功能A可被解释或被编译。值得注意的是,由于功能A并非像功能B一样频繁地执行,因此功能A可能并非被完全优化。由此,与可相比于功能A更进一步被增强的功能B相对,可利用较少的资源来生成功能A的经编译的或经解释的代码。功能服务A 454b可维护计数器并跟踪功能A的实例的执行以生成概况分析数据A,并以预定的间隔和/或响应于功能A的实例的完成而将概况分析数据A上传至简档本地服务454a(即,步骤460)。简档本地服务454a可将概况分析数据A和B上传至简档服务器452(即,步骤458)。
第二执行服务器462可类似地包括简档本地服务462a。简档本地服务462a可具有针对功能C的第二经编译的代码。简档服务器452可能已经生成第二经编译的代码并将第二经编译的代码传送至第二执行服务器462。因此,功能服务C 462c可基于第二经编译的代码来实现功能C的每个实例。功能服务C可将概况分析数据C上传至简档本地服务462a(即,步骤464)。功能A可以不具有经编译的代码。由此,当功能服务A 462b调用功能A时,功能A可被解释或被编译。值得注意的是,由于功能A并非像功能C一样频繁地执行,因此功能A可能并非被完全优化。由此,与可相比于功能A更进一步被增强的功能C相对,可利用较少的资源来生成功能A的经编译的代码。
功能服务A 462c和功能服务C 462b可维护计数器并跟踪功能A和C的实例的执行,以生成概况分析数据A和概况分析数据C。功能服务A 462c和功能服务C 462b可以以预定的间隔和/或响应于功能A和/或功能C的实例的完成而将概况分析数据A和C上传至简档本地服务462a(即,步骤466、464)。简档本地服务462a可将概况分析数据A和C上传至简档服务器(即,步骤468)。简档本地服务462a可确定、存储和传送第二执行服务器462的硬件简档。
简档本地服务454a、462a可周期性地(例如,每隔一分钟)将简档本地服务454a、462a的概况分析数据、以及第一执行服务器454和第二执行服务器462的架构信息传送至简档服务器452。简档服务器452可对概况分析数据进行聚合以确定是否要编译功能A、B、C的代码,并传播经编译的代码。
图5示出实现功能代码服务的方法500。方法500一般可在诸如例如简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)之类的服务器中实现,和/或与诸如已经讨论的过程100(图1)、方法300(图2)和过程450(图4)之类的过程和方法中的任一者一起实现。更具体地,方法500可以采用一组逻辑指令而被实现为一个或多个模块,这些逻辑指令被存储在诸如RAM、ROM、PROM、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,被存储在使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或被存储在以上各项的任何组合中。
图示的处理框502将功能镜像加载到功能代码服务中。在图示的处理框504中,镜像的文件(例如,类文件或JAR文件)被加载。在一些实施例中,功能代码服务可进入空闲状态,同时监听来自简档本地服务的对概况分析数据上传的请求和对下载所高速缓存的经编译的代码的请求。图示的处理框506监听概况分析数据并上传概况分析数据。图示的处理框508响应于来自执行服务器的下载请求而提供经编译的代码。
图6示出上传概况分析数据和对功能进行编译的方法520。方法520一般可在诸如例如简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)之类的服务器中实现,和/或与诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)和方法500(图5)之类的过程和方法中的任一者一起实现。更具体地,方法520可以采用一组逻辑指令而被实现为一个或多个模块,这些逻辑指令被存储在诸如RAM、ROM、PROM、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,被存储在使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或被存储在以上各项的任何组合中。
图示的处理框522发起简档本地服务。图示的处理框524进入空闲模式,同时监听来自本地简档服务的请求。图示的处理框526上传来自功能服务运行时的概况分析数据。图示的处理框528基于概况分析数据来递增计数器。图示的处理框530基于计数器来确定编译标准(例如,与功能相对应)是否被满足。如果是,图示的处理框532确定针对功能的经编译的代码是否已经在执行中。如果已经在执行中,则方法520可以结束。否则,图示的处理框534可针对执行功能的架构开始编译操作。在一些实施例中,如果编译标准未被满足,则处理框530可返回至处理框524以迭代通过方法520。在一些实施例中,如果经编译的代码在执行中,则处理框532可返回至处理框524以迭代通过方法520。在一些实施例中,处理框534可返回至处理框524以迭代通过方法520。
图7示出针对一个或多个计算架构生成经编译的代码的方法550。方法550一般可在诸如例如简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)之类的服务器中实现,和/或与诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)和方法520(图6)之类的过程和方法中的任一者一起实现。更具体地,方法550可以采用一组逻辑指令而被实现为一个或多个模块,这些逻辑指令被存储在诸如RAM、ROM、PROM、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,被存储在使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或被存储在以上各项的任何组合中。
图示的处理框552检取执行用于被编译的功能的所有计算设备(例如,服务器)的架构。图示的处理框554确定这些架构是否为不同的。如果是,则图示的处理框560针对不同的架构生成不同的经编译的代码。图示的处理框562将这些不同的经编译的代码传播至计算设备。
如果处理框554确定架构是相同的,则图示的处理框556针对这些架构生成一种经编译的代码。图示的处理框558将这一种经编译的代码传播至计算设备。
图8示出对经编译的代码进行反编译的方法650。方法650一般可在诸如例如简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)之类的服务器中实现,和/或与诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)、方法520(图6)和方法550(图7)之类的过程和方法中的任一者一起实现。更具体地,方法650可以采用一组逻辑指令而被实现为一个或多个模块,这些逻辑指令被存储在诸如RAM、ROM、PROM、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,被存储在使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或被存储在以上各项的任何组合中。
图示的处理框652进入空闲模式。图示的处理框654上传来自功能的功能服务运行时的概况分析数据。图示的处理框656递增对应的功能的计数器。图示的处理框658确定是否有计数器中的任一者与经编译的功能相对应。如果是,则图示的处理框660基于计数器来确定反编译标准是否被满足(例如,功能已经变为“冷的”和或计数器的值已经下降为低于阈值)。如果是,则图示的处理框662对已经满足反编译标准的经编译的功能进行反编译,以重新分配计算资源。在一些实施例中,方法650可从处理框652开始并在处理框652、660、658中的一者或多者执行之后进行重复。
图9图示出对计数器进行归一化的方法570。方法570一般可在诸如例如简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)之类的服务器中实现,和/或与诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)、方法520(图6)、方法550(图7)和方法650(图8)之类的过程和方法中的任一者一起实现。更具体地,方法570可以采用一组逻辑指令而被实现为一个或多个模块,这些逻辑指令被存储在诸如RAM、ROM、PROM、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,被存储在使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或被存储在以上各项的任何组合中。
图示的处理框572接收性能度量。图示的处理框574标识计数器。图示的处理框576对计数器进行归一化(例如,将计数器的值除以计数器已经执行的时间段)。图示的处理框578基于经归一化的计数器来确定是否要对功能进行编译和反编译。图示的处理框580基于确定来对功能进行编译和反编译。
现在转向图10,示出了性能增强的计算系统150。系统150一般可在诸如例如简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)之类的服务器中实现,和/或执行本文中所描述的过程和方法中的任一种过程和方法,诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)、方法520(图6)、方法550(图7)、方法650(图8)和方法570(图9)。系统150一般可以是具有计算功能的电子设备/系统(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可转换平板、服务器)、具有通信功能的电子设备/系统(例如,智能电话)、具有成像功能的电子设备/系统(例如,相机、便携式摄像机)、具有媒体播放功能的电子设备/系统(例如,智能电视/TV)、具有可穿戴功能的电子设备/系统(例如,手表、眼部穿戴物、头戴物、脚部穿戴物、首饰)、具有车载功能的电子设备/系统(例如,汽车、卡车、摩托车)、具有机器人功能的电子设备/系统(例如,自主机器人)等或其任何组合的部分。在所图示的示例中,系统150包括具有耦合到系统存储器156的集成存储器控制器(IMC)154的主机处理器152(例如,CPU)。
所图示的系统150还包括输入输出(IO)模块158,该IO模块158与主机处理器152和图形处理器160(例如,GPU)一起在半导体管芯162上被实现为芯片上系统(SoC)。所图示的IO模块158与例如显示器164(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、网络控制器166(例如,有线和/或无线)、以及大容量存储168(例如,硬盘驱动器/HDD、光盘、固态驱动器/SSD、闪存)进行通信。
主机处理器152、图形处理器160和/或IO模块158可执行检取自系统存储器156和/或大容量存储168的指令170。在实施例中,计算系统150可从至少一个第二计算设备(例如,其他服务器)并经由网络控制器166接收性能度量。计算系统150可对性能度量进行聚合以生成经聚合的性能度量,确定经聚合的性能度量满足阈值,并响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。经编译的代码可通过网络控制器166被传播至至少一个第二计算设备。至少一个第二计算设备可执行经编译的代码以实现第一功能。
在一些实施例中,经编译的代码可基于至少一个第二计算设备的计算架构。例如,系统150可标识至少一个第二计算设备的硬件简档,并基于该硬件简档来编译与第一功能相关联的代码以生成经编译的代码。
系统150可标识至少一个第一性能度量,其中,该至少一个第一性能度量与第一功能在至少一个第二计算设备中的一个计算设备上的执行相关联。系统150可标识至少一个第二性能度量,其中,该至少一个第二性能度量与第一功能在至少一个第二计算设备中的另一计算设备上的执行相关联。系统150可对至少一个第一性能度量和至少一个第二性能度量进行聚合,以生成经聚合的性能度量。
在一些实施例中,系统150可基于经聚合的性能度量来确定与第一功能的执行相关联的调用次数,并且响应于调用次数被确定为满足阈值而编译与第一功能相关联的代码,以生成经编译的代码。
由此,系统150可通过短时功能的趋势并相应地编译代码来增强性能。执行热功能的等待时间可被减少,同时计算资源可通过避免冷功能的编译而被节省。由此,系统150高效地利用计算资源,同时还减少整体执行等待时间。
图11示出可作为第一计算设备的部分的半导体设备172(例如,芯片、管芯、封装)。所图示的设备172包括一个或多个衬底174(例如,硅、蓝宝石、砷化镓)和耦合至(多个)衬底174的逻辑176(例如,晶体管阵列和其他集成电路/IC组件)。在实施例中,设备172被操作以编译逻辑,并且逻辑176执行简档服务器102(图1)、简档服务器402(图3)、简档服务器452(图4)的一个或多个方面,和/或执行本文中所描述的过程和方法中的任一种过程和方法,诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)、方法520(图6)、方法550(图7)、方法650(图8)和方法570(图9)。逻辑176可标识性能度量。性能度量可与第一功能在至少一个第二计算设备上的执行相关联。逻辑176可对性能度量进行聚合以生成经聚合的性能度量。逻辑176可确定经聚合的性能度量用于满足阈值。逻辑176可响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。逻辑176可将经编译的代码传播至至少一个第二计算设备。
因此,至少在所图示的设备172使得编译输出能够自动地利用跨宽泛的服务器阵列分布的FaaS功能的性能度量以确定是否编译这些功能的意义上并在这些功能应当被增强以供执行的程度上,所图示的设备172被认为是性能增强的。
逻辑176可至少部分地实现在可配置逻辑或固定功能硬件逻辑中。在一个示例中,逻辑176包括被定位(例如,嵌入)在(多个)衬底174内的晶体管沟道区。因此,逻辑176与(多个)衬底174之间的界面可以不是突变结。逻辑176还可被认为包括在(多个)衬底174的初始晶圆上生长的外延层。
图12图示出根据一个实施例的处理器核200。处理器核200可以是用于任何类型的处理器的核,该处理器诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、或用于执行代码的其他设备。虽然图12中仅图示了一个处理器核200,但处理元件可替代地包括多于一个的图12中所图示的处理器核200。处理器核200可以是单线程核,或对于至少一个实施例,处理器核200可以是多线程的,因为其每个核可包括多于一个的硬件线程上下文(或“逻辑处理器”)。
图12还图示出耦合至处理器核200的存储器270。存储器270可以是本领域技术人员已知的或以其他方式对本领域技术人员可用的各种各样的存储器(包括存储器层级结构的各个层)中的任何一种。存储器270可包括用于由处理器核200执行的一条或多条代码213指令,其中,代码213可实现本文中所描述的过程和方法中的任一种过程和方法,诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)、方法520(图6)、方法550(图7)、方法650(图8)和方法570(图9)处理器核200遵循由代码213指示的指令的程序序列。每条指令可进入前端部分210并由一个或多个解码器220处理。解码器220可生成微操作(诸如采用预定义格式的固定宽度的微操作)作为其输出,或者可生成反映原始代码指令的其他指令、微指令或控制信号。所图示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,该调度逻辑230一般分配资源并将与转换指令相对应的操作进行排队以供执行。
处理器核200被示出为包括具有一组执行单元255-1至255-N的执行逻辑250。一些实施例可包括专用于特定功能或功能集合的数个执行单元。其他实施例可包括仅一个执行单元或可以执行特定功能的一个执行单元。所图示的执行逻辑250执行由代码指令指定的操作。
在完成对由代码指令指定的操作的执行之后,后端逻辑260对代码213的指令进行引退。在一个实施例中,处理器核200允许乱序执行但是要求指令的有序引退。引退逻辑265可采取如本领域技术人员已知的各种形式(例如,重排序缓冲器等等)。以此方式,至少在由解码器生成的输出、由寄存器重命名逻辑225利用的硬件寄存器和表、以及由执行逻辑250修改的任何寄存器(未示出)方面,处理器核200在代码213的执行期间被变换。
虽然未在图12中图示,但处理元件可包括与处理器核200一起处于芯片上的其他元件。例如,处理元件可包括连同处理器核200一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑一起被集成的I/O控制逻辑。处理元件还可包括一个或多个高速缓存。
现在参考图13,所示出的是根据实施例的计算系统1000实施例的框图。图13中所示出的是多处理器系统1000,其包括第一处理元件1070和第二处理元件1080。尽管示出了两个处理元件1070和1080,但是要理解,系统1000的实施例还可包括仅一个此类处理元件。
系统1000被图示为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应当理解,图13中所图示的互连中的任何或全部互连可被实现为多分支总线而不是点对点互连。
如图13中所示,处理元件1070和1080中的每一者可以是包括第一处理器核和第二处理器核(即,处理器核1074a和1074b、以及处理器核1084a和1084b)的多核处理器。此类核1074a、1074b、1084a、1084b可被配置成用于以与上文结合图12所讨论的方式类似的方式来执行指令代码。
每个处理元件1070、1080可包括至少一个共享高速缓存1896a、1896b。共享高速缓存1896a、1896b可存储分别由处理器的一个或多个组件(诸如核1074a、1074b,以及1084a、1084b)利用的数据(例如,指令)。例如,共享高速缓存1896a、1896b可本地地对存储器1032、1034中所存储的数据进行高速缓存以供处理器的组件进行更快速的访问。在一个或多个实施例中,共享高速缓存1896a、1896b可包括一个或多个中间级别高速缓存(诸如第2级(L2)、第3级(L3)、第4级(L4)、或其他级别的高速缓存)、末级高速缓存(LLC)和/或其组合。
虽然被示出为具有仅两个处理元件1070、1080,但要理解,实施例的范围不限于此。在其他实施例中,在给定的处理器中可存在一个或多个附加处理元件。替代地,处理元件1070、1080中的一者或多者可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。例如,(多个)附加处理元件可包括与第一处理器1070相同的(多个)附加处理器、与第一处理器1070异构或不对称的(多个)附加处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理元件。在包括架构、微架构、热、功耗特性等等一系列品质度量方面,处理元件1070、1080之间可以存在各种差异。这些差异自身可有效地表现为处理元件1070、1080之中的不对称性和异构性。对于至少一个实施例,各处理元件1070、1080可驻留在同一管芯封装中。
第一处理元件1070可进一步包括存储器控制器逻辑(MC)1072以及点对点(P-P)接口1076和1078。类似地,第二处理元件1080可包括MC 1082以及P-P接口1086和1088。如图13中所示,MC 1072和1082将处理器耦合至相应的存储器,即存储器1032和存储器1034,这些存储器可以是本地附连到相应处理器的主存储器的部分。尽管MC 1072和MC 1082被图示为被集成到处理元件1070、1080中,但对于替代实施例,MC逻辑可以是处理元件1070、1080外部的分立逻辑,而不是被集成于其中。
第一处理元件1070和第二处理元件1080可分别经由P-P互连1076、1086耦合至I/O子系统1090。如图13中所示,I/O子系统1090包括P-P接口1094和1098。此外,I/O子系统1090包括将I/O子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,可使用总线1049将图形引擎1038耦合至I/O子系统1090。替代地,点对点互连可耦合这些组件。
进而,I/O子系统1090可经由接口1096耦合至第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线,或者可以是诸如PCI快捷(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是实施例的范围不限于此。
如图13中所示,各种I/O设备1014(例如,生物计量扫描仪、扬声器、相机、传感器)可连同总线桥1018一起耦合至第一总线1016,该总线桥1018可将第一总线1016耦合至第二总线1020。在一个实施例中,第二总线1020可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1020,这些设备包括例如键盘/鼠标1012、(多个)通信设备1026、以及可包括代码1030的数据存储单元1019(诸如盘驱动器或其他大容量存储设备)。所图示的代码1030可实现本文中所描述的过程和方法中的任一种过程和方法,诸如已经讨论的过程100(图1)、方法300(图2)、过程450(图4)、方法500(图5)、方法520(图6)、方法550(图7)、方法650(图8)和方法570(图9)此外,音频I/O 1024可耦合至第二总线1020,并且电池1010可向计算系统1000提供功率。
注意,构想了其他实施例。例如,代替于图13的点对点架构,系统可实现多分支总线或者另一此类通信拓扑。而且,可替代地使用比图13中所示的更多或更少的集成芯片来对图13的元件进行分区。
附加注解和示例:
示例1包括一种第一计算设备,该第一计算设备包括:网络控制器,该网络控制器用于从至少一个第二计算设备接收性能度量,该性能度量用于与第一功能在至少一个第二计算设备上的执行相关联;图形处理器;中央处理单元;以及存储器,该存储器包括一组指令,这些指令在由图形处理器或中央处理单元中的一者或多者执行时使得第一计算设备用于:对性能度量进行聚合,确定经聚合的性能度量满足阈值,以及响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。
示例2包括如示例1所述的第一计算设备,其中,指令当被执行时使第一计算设备:标识至少一个第一性能度量,其中,该至少一个第一性能度量是至少一个第二计算设备中的一个计算设备上第一功能的第一调用次数;标识至少一个第二性能度量,其中,该至少一个第二性能度量是至少一个第二计算设备中的另一计算设备上第一功能的第二调用次数;以及对至少一个第一性能度量和至少一个第二性能度量进行聚合,以生成用于与第一调用次数和第二调用次数相对应的经聚合的性能度量。
示例3包括如示例1所述的第一计算设备,其中,指令当被执行时使第一计算设备用于:基于编译第一功能的成本来确定阈值;基于经聚合的性能度量来确定与第一功能的执行相关联的调用次数;以及响应于该调用次数被确定为满足阈值,编译与第一功能相关联的代码以生成经编译的代码。
示例4包括如示例1所述的第一计算设备,其中,指令当被执行时使第一计算设备将经编译的代码传播至至少一个第二计算设备。
示例5包括如示例4所述的第一计算设备,其中,至少一个第二计算设备用于执行经编译的代码。
示例6包括如示例1-5中任一项所述的第一计算设备,其中,指令当被执行时使第一计算设备用于:标识至少一个第二计算设备的硬件简档;以及基于该硬件简档来编译与第一功能相关联的代码,以生成经编译的代码。
示例7包括一种第一计算设备的半导体设备,该半导体设备包括:一个或多个衬底;以及逻辑,该逻辑耦合至一个或多个衬底,其中,该逻辑采用可配置逻辑或固定功能硬件逻辑中的一者或多者来实现,耦合至一个或多个衬底的逻辑用于:对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合;确定经聚合的性能度量用于满足阈值;以及响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。
示例8包括如示例7所述的半导体设备,其中,逻辑用于:标识至少一个第一性能度量,其中,该至少一个第一性能度量是至少一个第二计算设备中的一个计算设备上第一功能的第一调用次数;标识至少一个第二性能度量,其中,该至少一个第二性能度量是至少一个第二计算设备中的另一计算设备上第一功能的第二调用次数;以及对至少一个第一性能度量和至少一个第二性能度量进行聚合,以生成用于与第一调用次数和第二调用次数相对应的经聚合的性能度量。
示例9包括如示例7所述的半导体设备,其中,逻辑用于:基于编译第一功能的成本来确定阈值;基于经聚合的性能度量来确定与第一功能的执行相关联的调用次数;以及响应于该调用次数被确定为满足阈值,编译与第一功能相关联的代码以生成经编译的代码。
示例10包括如示例7所述的半导体设备,其中,逻辑用于:将经编译的代码传播至至少一个第二计算设备。
示例11包括如示例7所述的半导体设备,其中,至少一个第二计算设备用于执行经编译的代码。
示例12包括7-11中任一项所述的半导体设备,其中,逻辑用于:标识至少一个第二计算设备的硬件简档;以及基于该硬件简档来编译与第一功能相关联的代码,以生成经编译的代码。
示例13包括如示例7-11中任一项所述的半导体设备,其中耦合至一个或多个衬底的逻辑包括位于该一个或多个衬底内的晶体管沟道区。
示例14包括至少一种非瞬态计算机可读存储介质,包括一组指令,这些指令在由第一计算设备执行时使该第一计算设备用于:对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合;确定经聚合的性能度量用于满足阈值;以及响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。
示例15包括如示例14所述的至少一种非瞬态计算机可读存储介质,其中,指令当被执行时使第一计算设备用于:标识至少一个第一性能度量,其中,该至少一个第一性能度量是至少一个第二计算设备中的一个计算设备上第一功能的第一调用次数;标识至少一个第二性能度量,其中,该至少一个第二性能度量是至少一个第二计算设备中的另一计算设备上第一功能的第二调用次数;以及对至少一个第一性能度量和至少一个第二性能度量进行聚合,以生成用于与第一调用次数和第二调用次数相对应的经聚合的性能度量。
示例16包括如示例14所述的至少一种非瞬态计算机可读存储介质,其中,指令当被执行时使第一计算设备用于:基于编译第一功能的成本来确定阈值;基于经聚合的性能度量来确定与第一功能的执行相关联的调用次数;以及响应于该调用次数被确定为满足阈值,编译与第一功能相关联的代码以生成经编译的代码。
示例17包括如示例14所述的至少一种非瞬态计算机可读存储介质,其中,指令当被执行时使第一计算设备将经编译的代码传播至至少一个第二计算设备。
示例18包括如示例14所述的至少一种非瞬态计算机可读存储介质,其中,至少一个第二计算设备用于执行经编译的代码。
示例19包括如示例14-18中任一项所述的至少一种非瞬态计算机可读存储介质,其中,指令当被执行时使第一计算设备用于:标识至少一个第二计算设备的硬件简档;以及基于该硬件简档来编译与第一功能相关联的代码,以生成经编译的代码。
示例20包括一种与第一计算设备相关联的方法,该方法包括:对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合;确定经聚合的性能度量满足阈值;以及响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码。
示例21包括如示例20所述的方法,进一步包括:标识至少一个第一性能度量,其中,该至少一个第一性能度量是至少一个第二计算设备中的一个计算设备上第一功能的第一调用次数;标识至少一个第二性能度量,其中,该至少一个第二性能度量是至少一个第二计算设备中的另一计算设备上第一功能的第二调用次数;以及对至少一个第一性能度量和至少一个第二性能度量进行聚合,以生成用于与第一调用次数和第二调用次数相对应的经聚合的性能度量。
示例22包括如示例20所述的方法,进一步包括:基于编译第一功能的成本来确定阈值;基于经聚合的性能度量来确定与第一功能的执行相关联的调用次数;以及响应于调用次数被确定为满足阈值,编译与第一功能相关联的代码以生成经编译的代码。
示例23包括如示例20所述的方法,进一步包括:将经编译的代码传播至至少一个第二计算设备。
示例24包括如示例20所述的方法,其中,至少一个第二计算设备用于执行经编译的代码。
示例25包括20-24中任一项所述的方法,进一步包括:标识至少一个第二计算设备的硬件简档;以及基于该硬件简档来编译与第一功能相关联的代码,以生成经编译的代码。
示例26包括一种第一计算设备的半导体设备,该半导体设备包括:用于对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合的装置;用于确定经聚合的性能度量满足阈值的装置;以及用于响应于经聚合的性能度量被确定为满足阈值而编译与第一功能相关联的代码的装置。
示例27包括如示例26所述的半导体设备,进一步包括:用于标识至少一个第一性能度量的装置,其中,该至少一个第一性能度量是至少一个第二计算设备中的一个计算设备上第一功能的第一调用次数;用于标识至少一个第二性能度量的装置,其中,该至少一个第二性能度量是至少一个第二计算设备中的另一计算设备上第一功能的第二调用次数;以及用于对至少一个第一性能度量和至少一个第二性能度量进行聚合以生成用于与第一调用次数和第二调用次数相对应的经聚合的性能度量的装置。
示例28包括如示例26所述的半导体设备,进一步包括:用于基于编译第一功能的成本来确定阈值的装置;用于基于经聚合的性能度量来确定与第一功能的执行相关联的调用次数的装置;以及用于响应于调用次数被确定为满足阈值而编译与第一功能相关联的代码以生成经编译的代码的装置。
示例29包括如示例26所述的半导体设备,进一步包括:用于将经编译的代码传播至至少一个第二计算设备的装置。
示例30包括如示例26所述的半导体设备,其中,至少一个第二计算设备用于执行经编译的代码。
示例31包括26-30中任一项所述的半导体设备,进一步包括:用于标识至少一个第二计算设备的硬件简档的装置;以及用于基于该硬件简档来编译与第一功能相关联的代码以生成经编译的代码的装置。
由此,本文中所描述的技术可提供针对FaaS架构和设计的增强的编译系统。本文中所描述的实施例可减少执行功能的等待时间并且还减少计算机资源使用,同时还实现用于跟踪FaaS功能和性能度量以供进行准确分析的增强的系统。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组部件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、芯片上系统(SoC)、SSD/NAND控制器ASIC等等。另外,在一些附图中,信号导线用线表示。一些线可以是不同的以指示更具构成性的信号路径,可具有数字标号以指示构成性信号路径的数目,和/或可在一端或多端具有箭头以指示主要信息流向。然而,这不应以限制性方式来解释。相反,此类添加的细节可与一个或多个示例性实施例结合使用以促进更容易地理解电路。任何所表示的信号线,不管是否具有附加信息,实际上都可包括一个或多个信号,该一个或多个信号可在多个方向上行进,并且可用任何适合类型的信号方案来实现,例如利用差分对来实现的数字或模拟线路、光纤线路、和/或单端线路。
示例尺寸/模型/值/范围可能已经被给出,但是实施例不限于此。随着制造技术(例如,光刻法)随时间变得成熟,预计能制造出更小尺寸的设备。另外,为了说明和讨论的简单起见并且为了避免使实施例的某些方面模糊,到IC芯片和其他部件的公知的功率/接地连接可在附图内示出也可不示出。此外,为了避免使各实施例变得模糊,并且还鉴于相对于此类框图布置的实现方式的细节高度依赖于实施例要在其内实现的平台(即此类具体细节应当落在本领域内技术人员的见识范围内)这一事实,布置可以以框图形式示出。在阐述具体细节(例如电路)以便描述示例实施例的情情况下,应当对本领域技术人员显而易见的是,实施例可以在不具有这些具体细节或对这些具体细节作出变化的情况下实现。描述因此被视为是说明性的而不是限制性的。
术语“耦合的”在本文中可被用于表示所讨论的部件之间的任何类型的直接或间接的关系,且可应用于电气的、机械的、流体的、光学的、电磁的、机电的或其他连接。另外,术语“第一”、“第二”等在本文中可仅用于便于讨论,并且不带有特定时间的或按时间顺序的意义,除非另有陈述。
如在本申请和权利要求书中所使用的,由术语“……中的一个或多个”联接的项列表可意指所列项的任何组合。例如,短语“A、B或C中的一个或多个”可意指A;B;C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员从前面的描述将领会,实施例的广泛技术能以各种形式来实现。因此,尽管已结合其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为在研究附图、说明书和所附权利要求书之后,其他修改对于本领域技术人员将变得显而易见。

Claims (25)

1.一种第一计算设备,包括:
网络控制器,所述网络控制器用于从至少一个第二计算设备接收性能度量,所述性能度量用于与第一功能在所述至少一个第二计算设备上的执行相关联;
图形处理器;
中央处理单元;以及
存储器,所述存储器包括一组指令,所述指令在由所述图形处理器或所述中央处理单元中的一者或多者执行时使得所述第一计算设备用于:
对所述性能度量进行聚合,
确定经聚合的性能度量满足阈值,以及
响应于所述经聚合的性能度量被确定为满足所述阈值而编译与所述第一功能相关联的代码。
2.如权利要求1所述的第一计算设备,其中,所述指令当被执行时使所述第一计算设备用于:
标识至少一个第一性能度量,其中,所述至少一个第一性能度量是所述至少一个第二计算设备中的一个计算设备上所述第一功能的第一调用次数;
标识至少一个第二性能度量,其中,所述至少一个第二性能度量是所述至少一个第二计算设备中的另一计算设备上所述第一功能的第二调用次数;以及
对所述至少一个第一性能度量和所述至少一个第二性能度量进行聚合,以生成用于与所述第一调用次数和所述第二调用次数相对应的经聚合的性能度量。
3.如权利要求1所述的第一计算设备,其中,所述指令当被执行时使所述第一计算设备用于:
基于编译所述第一功能的成本来确定所述阈值;
基于所述经聚合的性能度量来确定与所述第一功能的执行相关联的调用次数;以及
响应于所述调用次数被确定为满足所述阈值,编译与所述第一功能相关联的所述代码以生成经编译的代码。
4.如权利要求1所述的第一计算设备,其中,所述指令当被执行时使所述第一计算设备用于:
将经编译的代码传播至所述至少一个第二计算设备。
5.如权利要求4所述的第一计算设备,其中,所述至少一个第二计算设备用于执行所述经编译的代码。
6.如权利要求1-5中任一项所述的第一计算设备,其中,所述指令当被执行时使所述第一计算设备用于:
标识所述至少一个第二计算设备的硬件简档;以及
基于所述硬件简档来编译与所述第一功能相关联的所述代码,以生成经编译的代码。
7.一种第一计算设备的半导体设备,包括:
一个或多个衬底;以及
逻辑,所述逻辑耦合至所述一个或多个衬底,其中,所述逻辑采用可配置逻辑或固定功能硬件逻辑中的一者或多者来实现,耦合至所述一个或多个衬底的所述逻辑用于:
对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合;
确定经聚合的性能度量用于满足阈值;以及
响应于所述经聚合的性能度量被确定为满足所述阈值而编译与所述第一功能相关联的代码。
8.如权利要求7所述的半导体设备,其中,所述逻辑用于:
标识至少一个第一性能度量,其中,所述至少一个第一性能度量是所述至少一个第二计算设备中的一个计算设备上所述第一功能的第一调用次数;
标识至少一个第二性能度量,其中,所述至少一个第二性能度量是所述至少一个第二计算设备中的另一计算设备上所述第一功能的第二调用次数;以及
对所述至少一个第一性能度量和所述至少一个第二性能度量进行聚合,以生成用于与所述第一调用次数和所述第二调用次数相对应的经聚合的性能度量。
9.如权利要求7所述的半导体设备,其中,所述逻辑用于:
基于编译所述第一功能的成本来确定所述阈值;
基于所述经聚合的性能度量来确定与所述第一功能的执行相关联的调用次数;以及
响应于所述调用次数被确定为满足所述阈值,编译与所述第一功能相关联的所述代码以生成经编译的代码。
10.如权利要求7所述的半导体设备,其中,所述逻辑用于:将经编译的代码传播至所述至少一个第二计算设备。
11.如权利要求7所述的半导体设备,其中,所述至少一个第二计算设备用于执行经编译的代码。
12.如权利要求7-11中任一项所述的半导体设备,其中,所述逻辑用于:
标识所述至少一个第二计算设备的硬件简档;以及
基于所述硬件简档来编译与所述第一功能相关联的所述代码,以生成经编译的代码。
13.如权利要求7-11中任一项所述的半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑包括位于所述一个或多个衬底内的晶体管沟道区。
14.至少一种非瞬态计算机可读存储介质,包括一组指令,所述指令在由第一计算设备执行时使所述第一计算设备用于:
对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合;
确定经聚合的性能度量用于满足阈值;以及
响应于所述经聚合的性能度量被确定为满足所述阈值而编译与所述第一功能相关联的代码。
15.如权利要求14所述的至少一种非瞬态计算机可读存储介质,其中,所述指令当被执行时使所述第一计算设备用于:
标识至少一个第一性能度量,其中,所述至少一个第一性能度量是所述至少一个第二计算设备中的一个计算设备上所述第一功能的第一调用次数;
标识至少一个第二性能度量,其中,所述至少一个第二性能度量是所述至少一个第二计算设备中的另一计算设备上所述第一功能的第二调用次数;以及
对所述至少一个第一性能度量和所述至少一个第二性能度量进行聚合,以生成用于与所述第一调用次数和所述第二调用次数相对应的所述经聚合的性能度量。
16.如权利要求14所述的至少一种非瞬态计算机可读存储介质,其中,所述指令当被执行时使所述第一计算设备用于:
基于编译所述第一功能的成本来确定所述阈值;
基于所述经聚合的性能度量来确定与所述第一功能的执行相关联的调用次数;以及
响应于所述调用次数被确定为满足所述阈值,编译与所述第一功能相关联的所述代码以生成经编译的代码。
17.如权利要求14所述的至少一种非瞬态计算机可读存储介质,其中,所述指令当被执行时使所述第一计算设备:
将经编译的代码传播至所述至少一个第二计算设备。
18.如权利要求14所述的至少一种非瞬态计算机可读存储介质,其中,所述至少一个第二计算设备用于执行经编译的代码。
19.如权利要求14-18中任一项所述的至少一种非瞬态计算机可读存储介质,其中,所述指令当被执行时使所述第一计算设备用于:
标识所述至少一个第二计算设备的硬件简档;以及
基于所述硬件简档来编译与所述第一功能相关联的所述代码,以生成经编译的代码。
20.一种与第一计算设备相关联的方法,包括:
对与第一功能在至少一个第二计算设备上的执行相关联的性能度量进行聚合;
确定经聚合的性能度量满足阈值;以及
响应于所述经聚合的性能度量被确定为满足所述阈值而编译与所述第一功能相关联的代码。
21.如权利要求20所述的方法,进一步包括:
标识至少一个第一性能度量,其中,所述至少一个第一性能度量是所述至少一个第二计算设备中的一个计算设备上所述第一功能的第一调用次数;
标识至少一个第二性能度量,其中,所述至少一个第二性能度量是所述至少一个第二计算设备中的另一计算设备上所述第一功能的第二调用次数;以及
对所述至少一个第一性能度量和所述至少一个第二性能度量进行聚合,以生成用于与所述第一调用次数和所述第二调用次数相对应的所述经聚合的性能度量。
22.如权利要求20所述的方法,进一步包括:
基于编译所述第一功能的成本来确定所述阈值;
基于所述经聚合的性能度量来确定与所述第一功能的执行相关联的调用次数;以及
响应于所述调用次数被确定为满足所述阈值,编译与所述第一功能相关联的所述代码以生成经编译的代码。
23.如权利要求20所述的方法,进一步包括:
将经编译的代码传播至所述至少一个第二计算设备。
24.如权利要求20所述的方法,其中,所述至少一个第二计算设备用于执行经编译的代码。
25.如权利要求20-24中任一项所述的方法,进一步包括:
标识所述至少一个第二计算设备的硬件简档;以及
基于所述硬件简档来编译与所述第一功能相关联的所述代码,以生成经编译的代码。
CN202080095349.1A 2020-04-30 2020-04-30 用于跨服务器阵列分布的功能即服务实现方式的编译 Pending CN115039072A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/088268 WO2021217578A1 (en) 2020-04-30 2020-04-30 Compilation for function as service implementations distributed across server arrays

Publications (1)

Publication Number Publication Date
CN115039072A true CN115039072A (zh) 2022-09-09

Family

ID=78331637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080095349.1A Pending CN115039072A (zh) 2020-04-30 2020-04-30 用于跨服务器阵列分布的功能即服务实现方式的编译

Country Status (3)

Country Link
US (1) US20230112996A1 (zh)
CN (1) CN115039072A (zh)
WO (1) WO2021217578A1 (zh)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009158280A1 (en) * 2008-06-25 2009-12-30 Veloxum Llc Systems and methods for tuning an operating system, application, or network component
US8850172B2 (en) * 2010-11-15 2014-09-30 Microsoft Corporation Analyzing performance of computing devices in usage scenarios
EP2776920A4 (en) * 2011-11-10 2015-09-02 Intel Corp PERFORMANCE MANAGEMENT OF A COMPUTER SYSTEM WITH CONTROL SIZES, PERFORMANCE MEASUREMENTS AND / OR DESIRABLE FEATURES
JP6588544B2 (ja) * 2014-10-30 2019-10-09 アマゾン・テクノロジーズ・インコーポレーテッド プロバイダネットワークにおけるルールベースのアクショントリガリングのためのシステム及びコンピュータ可読記憶媒体並びに方法
US10387295B1 (en) * 2015-05-05 2019-08-20 Amazon Technologies, Inc. Application testing using multiple context-aware threads
US9727317B2 (en) * 2015-11-04 2017-08-08 International Business Machines Corporation Optimized compilation using an auto-tuned compiler as a service
US10114636B2 (en) * 2016-04-20 2018-10-30 Microsoft Technology Licensing, Llc Production telemetry insights inline to developer experience
US20190068466A1 (en) * 2017-08-30 2019-02-28 Intel Corporation Technologies for auto-discovery of fault domains
US10671360B1 (en) * 2017-11-03 2020-06-02 EMC IP Holding Company LLC Resource-aware compiler for multi-cloud function-as-a-service environment
US10466986B2 (en) * 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
US20190042395A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Source code profiling through enhanced mapping
US11139991B2 (en) * 2019-09-28 2021-10-05 Intel Corporation Decentralized edge computing transactions with fine-grained time coordination
US20200241999A1 (en) * 2020-03-25 2020-07-30 Intel Corporation Performance monitoring for short-lived functions

Also Published As

Publication number Publication date
US20230112996A1 (en) 2023-04-13
WO2021217578A1 (en) 2021-11-04

Similar Documents

Publication Publication Date Title
US20210382754A1 (en) Serverless computing architecture for artificial intelligence workloads on edge for dynamic reconfiguration of workloads and enhanced resource utilization
JP5658365B2 (ja) ハイブリッド・コンピューティング環境における高スループット・コンピューティングの方法、システム及びプログラム
US9075610B2 (en) Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
Choi et al. Executing synchronous dataflow graphs on a SPM-based multicore architecture
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US20130232495A1 (en) Scheduling accelerator tasks on accelerators using graphs
US8166486B2 (en) Adjusting workload to accommodate speculative thread start-up cost
US20140068581A1 (en) Optimized division of work among processors in a heterogeneous processing system
US20210319298A1 (en) Compute-based subgraph partitioning of deep learning models for framework integration
JP2021099782A (ja) ファンクション・アズ・ア・サービスコンピューティングのための統一プログラミングモデル
US20060136878A1 (en) Method and apparatus for enabling compiler and run-time optimizations for data flow applications in multi-core architectures
US20210365804A1 (en) Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions
EP3979072B1 (en) Firmware boot task distribution to enable low latency boot performance
JP7322345B2 (ja) シナリオプロファイルベースのパーティショニングおよびアプリケーションコードの管理
JP2021099785A (ja) コンピュータアプリケーションを異種システムのために分配する自動学習技術
CN115039072A (zh) 用于跨服务器阵列分布的功能即服务实现方式的编译
Poss et al. Apple-CORE: harnessing general-purpose many-cores with hardware concurrency management
US11907118B2 (en) Interleaved data conversion to change data formats
US11934809B2 (en) Multi-stage automatic compilation for vector computations in applications
JP2021096829A (ja) 分散環境における深層学習トレーニングの最適化のためのランタイムにおけるサービスクラス属性の初期化及び管理
US11640326B2 (en) Ensemble based cluster tuning and framework fallback for AI accelerators using telemetry, compute, and temperature metrics
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
US20210319369A1 (en) Multi-level caching for dynamic deep learning models
US11880669B2 (en) Reducing compiler type check costs through thread speculation and hardware transactional memory
US10761586B2 (en) Computer performance and power consumption optimization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination