CN117940902A - 智能调度器 - Google Patents
智能调度器 Download PDFInfo
- Publication number
- CN117940902A CN117940902A CN202280062283.5A CN202280062283A CN117940902A CN 117940902 A CN117940902 A CN 117940902A CN 202280062283 A CN202280062283 A CN 202280062283A CN 117940902 A CN117940902 A CN 117940902A
- Authority
- CN
- China
- Prior art keywords
- tasks
- scheduler
- schedule
- computing device
- task
- 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
Links
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
公开了涉及内核任务调度的技术。在各种实施方案中,计算设备在第一调度器处接收定义要由该计算设备执行的一组任务的相互关系的计算图。在一些实施方案中,执行该组任务以向用户提供扩展现实(XR)体验。该第一调度器基于在该计算图中定义的这些相互关系来确定用于实施该组任务的调度表,并发出用于使得该计算设备的第二调度器根据所确定的调度表来调度该组任务的执行的指令。
Description
背景技术
技术领域
本公开整体涉及计算设备,并且更具体地涉及在计算设备上执行的调度任务。
相关技术描述
现代操作系统通常支持多任务处理,多任务处理的概念是可在给定时间段内发生多个任务的并发执行。为了有利于多任务处理,操作系统内核可包括在任务之间动态地分配资源的调度器。例如,两个线程可竞争在中央处理单元(CPU)流水线中执行。为了共享此资源,内核调度器可最初将第一时间块分配给用于执行的第一线程,接着执行上下文切换以在第二时间块期间发起第二线程的执行。这种切换可周期性地发生,使得两个线程均可充分使用该资源。由于并非所有任务都被均等地创建,因此内核调度器可支持多个执行优先级,其中执行重要(且潜在地时间敏感的)任务的线程被指派更高执行优先级以便获得优先调度。
附图说明
图1是示出被配置为使用智能调度器调度用于执行的任务的计算设备的示例的框图。
图2是示出包括智能调度器的程序堆栈的示例的框图。
图3是示出与智能调度器相关联的系统健康状况监视器的示例的框图。
图4A至图4D是示出与智能调度器相关联的计算图分析器的示例的框图。
图5A和图5B是示出与智能调度器相关联的执行器的示例的框图。
图6A至图6E是示出用于智能地调度任务的方法的示例的流程图。
图7是示出可包括在计算设备中的组件的示例的框图。
本公开包括对“一个实施方案”或“实施方案”的标引。出现短语“在一个实施方案中”或“在实施方案中”并不一定是指同一个实施方案。特定特征、结构或特性可以与本公开一致的任何合适的方式被组合。
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物,诸如电子电路)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。“被配置为实施神经网络的神经网络引擎”旨在涵盖例如在操作期间执行该功能的电路,即使所讨论的电路当前并非正被使用(例如,该电路未连接到电源)。因此,被描述或表述成“被配置为”执行某个任务的实体是指用于实施该任务的物理的事物,诸如设备、电路、存储有可执行程序指令的存储器等等。该短语在本文中不被用于指代无形的事物。因此,“被配置为”结构在本文中不被用于指代软件实体,诸如应用编程接口(API)。
术语“被配置为”并不旨在意指“可配置为”。例如,未经编程的FPGA不会被认为是“被配置为”执行某个特定功能,虽然其可能“能被配置为”执行该功能并且在编程之后可以“被配置为”执行该功能。
所附权利要求书中的表述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。于是,所提交的本申请中没有任何权利要求旨在要被解释为具有装置-加-功能要素。如果申请人在申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
如本文所用,术语“第一”、“第二”等充当其之后的名词的标签,并且不暗指任何类型的排序(例如,空间的、时间的、逻辑的等),除非有明确指出。例如,在具有八个处理核心的处理器中,术语“第一”处理核心和“第二”处理核心可用于指该八个处理核心中的任意两个处理核心。换句话讲,“第一”处理核心和“第二”处理核心不限于例如处理核心0和处理核心1。
如本文所用,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。该短语还旨在涵盖A仅基于B来确定的实施方案。如本文所用,短语“基于”因此与短语“至少部分地基于”是同义的。
物理环境是指人们在没有电子系统帮助的情况下能够感测和/或交互的物理世界。物理环境可包括物理特征,诸如物理表面或物理对象。例如,物理环境可对应于包括物理树木、物理建筑物和物理人的物理公园。人们能够诸如通过视觉、触觉、听觉、味觉和嗅觉来直接感测物理环境和/或与物理环境交互。
相反,扩展现实(XR)环境(或者计算机生成现实(CGR)环境)是指人们经由电子系统感知和/或交互的完全或部分模拟的环境。例如,XR环境可包括增强现实(AR)内容、混合现实(MR)内容、虚拟现实(VR)内容等。在XR系统的情况下,跟踪人的物理运动的一个子集或其表示,并且作为响应,以符合至少一个物理定律的方式调节在XR环境中模拟的一个或多个虚拟对象的一个或多个特征。例如,XR系统可检测人的头部移动,并且作为响应,以类似于此类视图和声音在物理环境中将如何改变的方式调节呈现给人的图形内容和声场。如另一示例,XR系统可以检测呈现XR环境的电子设备(例如,移动电话、平板计算机、膝上型计算机等)的移动,并且作为响应,以类似于此类视图和声音在物理环境中将如何改变的方式调节呈现给人的图形内容和声场。在一些情况下(例如,出于可达性原因),XR系统可响应于物理运动的表示(例如,声音命令)来调节XR环境中图形内容的特征。
人可使用姿态或包括视觉、听觉和触觉的其感觉中的任一者来感测XR对象和/或与XR对象交互。例如,人可以感测音频对象和/或与音频对象交互,该音频对象创建3D或空间音频环境,该3D或空间音频环境提供3D空间中点音频源的感知。又如,音频对象可以使能音频透明度,该音频透明度在有或者没有计算机生成的音频的情况下选择性地引入来自物理环境的环境声音。在某些XR环境中,人可以感测和/或只与音频对象交互。
XR的示例包括虚拟现实和混合现实。
虚拟现实(VR)环境是指被设计成对于一个或多个感觉完全基于计算机生成的感官输入的模拟环境。VR环境包括人可以感测和/或交互的多个虚拟对象。例如,树木、建筑物和代表人的化身的计算机生成的图像是虚拟对象的示例。人可以通过在计算机生成的环境内人的存在的模拟和/或通过在计算机生成的环境内人的物理移动的一个子组的模拟来感测和/或与VR环境中的虚拟对象交互。
混合现实(MR)环境是指被设计成除了包括计算机生成的感官输入(例如,虚拟对象)之外还结合来自物理环境的感官输入或其表示的模拟环境。在虚拟连续体上,混合现实环境是完全物理环境作为一端和虚拟现实环境作为另一端之间的任何状况,但不包括这两端。
在一些MR环境中,计算机生成的感官输入可以对来自物理环境的感官输入的变化进行响应。另外,用于呈现MR环境的一些电子系统可以跟踪相对于物理环境的位置和/或取向,以使虚拟对象能够与真实对象(即,来自物理环境的物理物品或其表示)交互。例如,系统可以导致移动使得虚拟树木相对于物理地面看起来是静止的。
混合现实的示例包括增强现实和增强虚拟。
增强现实(AR)环境是指其中一个或多个虚拟对象叠加在物理环境或其表示之上的模拟环境。例如,用于呈现AR环境的电子系统可具有透明或半透明显示器,人可以透过该显示器直接查看物理环境。该系统可以被配置为在透明或半透明显示器上呈现虚拟对象,使得人利用该系统感知叠加在物理环境之上的虚拟对象。另选地,系统可以具有不透明显示器和一个或多个成像传感器,该成像传感器捕获物理环境的图像或视频,这些图像或视频是物理环境的表示。系统将图像或视频与虚拟对象组合,并在不透明显示器上呈现组合物。人利用系统经由物理环境的图像或视频而间接地查看物理环境,并且感知叠加在物理环境之上的虚拟对象。如本文所用,在不透明显示器上显示的物理环境的视频被称为“透传视频”,意味着系统使用一个或多个图像传感器捕获物理环境的图像,并且在不透明显示器上呈现AR环境时使用那些图像。进一步另选地,系统可以具有投影系统,该投影系统将虚拟对象投射到物理环境中,例如作为全息图或者在物理表面上,使得人利用该系统感知叠加在物理环境之上的虚拟对象。
增强现实环境也是指其中物理环境的表示被计算机生成的感官信息进行转换的模拟环境。例如,在提供透传视频中,系统可以对一个或多个传感器图像进行转换以施加与成像传感器所捕获的视角不同的选择视角(例如,视点)。又如,物理环境的表示可以通过图形地修改(例如,放大)其部分而进行转换,使得经修改部分可以是原始捕获图像的代表性的但不是真实的版本。再如,物理环境的表示可以通过以图形方式消除其部分或将其部分进行模糊处理而进行转换。
增强虚拟(AV)环境是指虚拟或计算机生成环境结合了来自实体环境的一项或多项感官输入的模拟环境。感官输入可以是物理环境的一个或多个特性的表示。例如,AV公园可以具有虚拟树木和虚拟建筑物,但人的脸部是从对物理人拍摄的图像逼真再现的。又如,虚拟对象可以采用一个或多个成像传感器所成像的物理物品的形状或颜色。再如,虚拟对象可以采用符合太阳在物理环境中的定位的阴影。
有许多不同类型的电子系统使人能够感测和/或与各种XR环境交互。示例包括头戴式系统、基于投影的系统、平视显示器(HUD)、集成有显示能力的车辆挡风玻璃、集成有显示能力的窗户、被形成为设计用于放置在人的眼睛上的透镜的显示器(例如,类似于隐形眼镜)、耳机/听筒、扬声器阵列、输入系统(例如,具有或不具有触觉反馈的可穿戴或手持式控制器)、智能电话、平板计算机,以及台式/膝上型计算机。头戴式系统可具有集成不透明显示器和一个或多个扬声器。另选地,头戴式系统可被配置为接受外部不透明显示器(例如,智能电话)。头戴式系统可结合用于捕获物理环境的图像或视频的一个或多个成像传感器以及/或者用于捕获物理环境的音频的一个或多个麦克风。头戴式系统可具有透明或半透明显示器,而不是不透明显示器。透明或半透明显示器可以具有媒介,代表图像的光通过该媒介被引导到人的眼睛。显示器可以利用数字光投影、OLED、LED、uLED、硅基液晶、激光扫描光源或这些技术的任意组合。媒介可以是光学波导、全息图媒介、光学组合器、光学反射器、或它们的任意组合。在一些具体实施中,透明或半透明显示器可被配置为选择性地变得不透明。基于投影的系统可以采用将图形图像投影到人的视网膜上的视网膜投影技术。投影系统也可以被配置为将虚拟对象投影到物理环境中,例如作为全息图或在物理表面上。
具体实施方式
内核调度器对于正被执行的任务的基本性质是相对不可知的。例如,虽然可告知调度器调度处于特定执行优先级的线程,但内核调度器可能不了解一个经调度线程依赖于另一线程的输出。内核调度器也不会知道线程正在执行的特定任务具有特定时间约束,并且如果该约束未被满足,则可能对用户体验造成不利影响。内核调度器也不了解计算设备的潜在健康状况,诸如不知道设备的处理器由于繁重的执行负载而将要达到其热极限。这种不充分的理解可因此导致内核调度器实施较低效的调度。
当用户例如正尝试经由头戴式显示器(HMD)观看内容(诸如扩展现实(XR)内容)时,这种较低效的调度可能特别成问题。生成沉浸式XR体验可能消耗大量的功率和计算,并且可能经常促使计算设备达到其极限。当不能满足一些任务的严格定时约束时可能发生的少量延迟和抖动可能彻底破坏用户的体验,并且在一些情况下,甚至导致头晕和恶心。幸运的是,这种性质的任务可具有大量的确定性,这可允许进行更智能的任务调度。
本公开描述了其中计算设备使用结合内核调度器进行工作的另一调度器来更智能地调度任务的实施方案。如下文将更详细地描述,在计算设备的应用层处执行的第一调度器可从尝试执行那些任务的各种进程接收任务。第一调度器可分析定义这些任务的相互关系的计算图以及与这些任务相关的各种其他信息。第一调度器可接着基于该分析确定用于实施任务的调度表,并且发出用于使得在计算设备的内核层处执行的第二内核调度器根据所确定的调度表来调度任务的执行的指令。在一些实施方案中,第一调度器还可充当全局调度器,该全局调度器可有利于用与其他资源(例如,与图形处理单元、神经引擎等相关联的那些资源)相关联的附加调度器进行调度。在各种实施方案中,第一调度器还监视各种健康状况信息,并且可基于该信息来动态地调整调度表。在一些实施方案中,当健康问题出现时,第一调度器还可通知提供任务的进程并且允许这些进程确定应当如何处理任务。在一些情况下,可采取预防措施来避免达到计算设备的热极限和功率极限,这可能经常导致突然的系统回撤,从而可能导致例如当正在呈现XR内容时出现延迟和抖动。能够以这种方式更智能地调度任务可导致对于计算上特别密集但具有一定程度的确定性的活动的用户体验得以改善。
现在转向图1,描绘了被配置为实施智能调度的计算设备10的框图。计算设备10可对应于(或被包括在)各种计算设备中的任一种,诸如电话、平板计算机、膝上型计算机、台式计算机、手表、物联网(IoT)设备等。在下文讨论的一些实施方案中,计算设备10可以是头戴式显示器,诸如头戴式耳机、头盔、护目镜、眼镜、插入外壳中的电话等。在例示的实施方案中,计算设备10包括应用110、资源120、内核130和智能调度器140。如图所示,内核130还包括内核调度器132。在一些实施方案中,计算设备10可以与所示不同的方式来实施。例如,如将结合图2所描述的,一个或多个附加软件组件可驻留在应用110与调度器140之间。在一些实施方案中,调度器140可不位于应用层102中,等等。下文将相对于图7讨论可被包括在计算设备10中的其他硬件组件的各种示例。
在各种实施方案中,应用110是具有使用各种共享资源120的各种任务112的程序。在一些实施方案中,执行这些任务112来实施扩展现实XR体验,该扩展现实XR体验可利用AR、MR或VR生成的内容。作为一个示例,应用110可提供共同在场体验,其中多个用户可使用其相应设备在共享XR环境中彼此交互。作为另一示例,应用110可支持各种内容(诸如电影、实况体育赛事、音乐会等)的流式传输。作为另一示例,应用110可包括将用户置于XR环境中的游戏应用,在XR环境中用户能够与计算机生成的对象交互。尽管本文描述了其中可相对于XR内容的生成来执行任务112的各种实施方案,但在其他实施方案中,本文所描述的技术可适用于期望改进的调度的其他情形。如图1所示,在一些情况下,应用110可具有时间敏感任务112和非时间敏感任务114。时间敏感任务112可包括直接影响用户界面、提供实时内容等的那些任务。例如,在其中计算设备10是HMD的实施方案中,与头部跟踪相关联的任务112可以是时间敏感的,因为用户向左或向右看可直接影响在用户界面上显示什么内容,并且跟踪用户头部移动时的延迟可导致在正在显示的内容中引入抖动。相反,请求线程在后台下载用户的电子邮件的应用110可以是时间不敏感的任务114。如上所述,在一些情况下,特定任务112具有大量确定性,因为任务112可能需要周期性地重复并且具有一致的已知依赖性。继续头部跟踪示例,该操作可包括随时间消耗多个视频帧和传感器数据以确定计算设备10在物理环境中的改变的位置和取向的多个重复出现的视觉测距任务112。
在各种实施方案中,资源120是用于执行任务112的各种资源。因此,资源120可包括硬件资源,诸如中央处理单元(CPU)、图形处理单元(GPU)、神经引擎电路、安全元件、数字信号处理器(DSP)、专用集成电路(ASIC)、图像信号处理器(ISP)、显示器、网络接口卡(NIC)、非易失性和易失性存储器、相机、输入/输出设备、传感器等。资源120还可包括软件资源,诸如存储器缓冲器、线程、应用、操作系统服务等。资源120还可包括由任务112使用的特定数据集。在一些实施方案中,资源120还可位于除计算设备10之外的设备上。
在各种实施方案中,内核130是计算设备10的操作系统的组件,并且能够被执行以管理包括资源120中的一个或多个资源的计算设备的各方面。如图1所示,内核130与内核调度器132一起驻留在内核层104/内核空间104中,这与驻留在应用层102/应用空间102中的应用110和智能调度器140相反。如本文所使用的,术语“应用层”(或用户层)是指以具有受限特权的模式执行的一类程序。例如,在x86处理器中,该模式被称为环3。在这种模式下,可禁止程序执行特定指令集架构(ISA)定义的指令。处理器还可阻止对特定硬件的直接访问和/或限制程序访问“应用空间”,“应用空间”是指分配给在应用模式下执行的程序的存储器的区域。在应用模式下执行的示例性程序可包括例如文字处理应用、web浏览器、邮件客户端或其他用户应用。出于安全原因,大多数应用通常驻留在应用层102中。相反,术语“内核层”(或系统层)是指以处理器执行具有不受限特权的程序的模式执行的一类程序。例如,在x86处理器中,该模式被称为环0。内核层通常用于负责系统管理的程序,诸如操作系统内核、引导加载程序、驱动程序、超级管理程序等。术语“内核空间”是指仅可由在内核层中执行的程序访问的存储器的受限区域—在一些实施方案中,内核层应用也可被限制访问存储器的应用空间区域。为了有利于资源120的管理,内核130可包括一个或多个内核调度器132。
在各种实施方案中,内核调度器132是在内核层处执行的调度器,该调度器基于进程的相应执行优先级来处理进程的调度。如本文所使用的,术语“进程”将根据在本领域中所理解到的其含义来解释,并且包括正在执行的计算机程序的实例。因此,术语“进程”可指具有多个线程或单个执行线程的应用。在各种实施方案中,内核130可向每一进程指派单独进程标识符(PID),PID可辅助调度器132区分正被调度的进程。如本文所使用的,术语“执行优先级”将根据在本领域中所理解到的其含义来解释,并且包括指派给进程的值,该值控制进程/线程被调度用于执行的频率和/或时长。例如,基于UnixTM的系统中的执行优先级可对应于优先级值(PR)和/或友善度(niceness)值(NI)。尽管被描绘为单个调度器,但在一些实施方案中,调度器132可以是多个调度器132中的一个调度器,如将参考图2所讨论的。例如,内核调度器132可处理用于在设备10的CPU上执行的调度进程,而单独的调度器132可处理相对于设备10的GPU的调度。如上所述,内核调度器132对于由其正调度的进程正执行的任务112可能是相对不可知的。调度器132可知道进程的执行优先级,并且将进程放置到适当的调度队列中以用于执行;然而,调度器132可能不知道最初调度的进程将等待稍后调度的进程的输出—该稍后调度的进程可能被进一步放置到更低执行优先级队列中。
在各种实施方案中,智能调度器140是能够被执行以确定用于任务112的执行的更有见解的调度表144的应用层调度器。如图所示,调度器140可接收时间敏感任务112,并且分析标识要执行的任务112的相互关系的关系计算图142。对于给定的所请求任务112,这种计算图142可包括指定以下两者的图节点:1)提供要在执行给定任务112时使用的输入的任务112,以及2)一旦给定任务完成就应该接收该给定任务的输出的任务112。如将讨论的,计算图142还可包括附加的有用信息,诸如执行任务112所需的资源120、任务112的定时约束等。在各种实施方案中,请求执行任务112的进程可向调度器140标识任务112的相互关系,并且在一些实施方案中,向调度器140提供计算图142的部分。基于该经分析的信息,调度器140可确定指示应当如何实施任务112以便改进性能和资源使用的调度表144。在各种实施方案中,调度器140可专注于标识执行一组任务112的关键路径,并且尝试以确保可充分满足这些任务112的定时约束的方式沿着该路径调度任务112。为了减少正由调度器140考虑的任务112的数量,较不时间敏感的任务114可独立于调度器140进行处理,因此可由内核调度器132以传统方式来处理。
由于功率和计算可用性可随时间而变化,因此在各种实施方案中,调度器140还接收如图1所示的系统健康状况信息146。如下文将关于图3所讨论的,该信息146可包括可由调度器140用于确定哪些资源120可用于执行任务112以及这些资源的可用性可如何随时间而改变的各种性能、功率和热统计信息。因此,调度器140可在最初确定调度表144时使用该健康状况信息146。稍后,响应于健康状况信息146指示计算设备10的健康已改变,调度器140可修改调度表144。如下文将关于图4D所讨论的,如果调度器140根据健康状况信息146确定其在不久的将来可能不再满足特定定时约束,则调度器140可联系请求执行任务112的进程并且允许这些进程在计算设备10达到某一有问题阈值之前决定如何处理该计算设备的健康状况变差的问题,这可能需要这些进程修改其正请求调度器140处理的一组任务112。在这样做时,调度器140可实现比等待例如CPU响应于达到其热极限而决定突然降低其时钟频率更不苛刻的回撤。相反,调度器140可在这种回撤发生之前提前通知进程。
为了使任务112能够接收优先化调度,在各种实施方案中,调度器140发出用于使得内核调度器132根据所确定的调度表144来调度任务112的执行的优先化调度指令148。在一些实施方案中,调度器140向内核130发出用于根据所确定的调度表144来请求具有特定执行优先级的线程的指令148。在其中内核130实施与便携式操作系统接口(POSIX)兼容的应用编程接口(API)的一个实施方案中,指令148可包括请求创建线程的pthread系统调用。作为响应,内核130可将所请求的一个或多个线程分派给应用层102,其中调度器140可根据所确定的调度表向所分派的线程提供任务112。然后,内核调度器132可调度所分派的线程来以所请求的执行优先级执行任务112。在一些实施方案中,当任务112正被执行时,调度器140跟踪任务112的执行,并且当基于该跟踪确定任务112准备好执行时,该调度器将任务112排入一个或多个就绪队列中。然后,所分派的线程可使任务112从就绪队列出队,以执行出队的任务112。在各种实施方案中,调度器140可被给予允许其请求处于其他进程(诸如请求执行任务112的那些进程)不能请求的执行优先级的线程的权利。因此,如果此类进程想要以调度器140可访问的更高优先级执行任务,则这些进程可能需要与智能调度器140连接。如图1所示,进程(诸如应用110)可仍能够独立于调度器140从内核130请求线程,然而,那些线程可能够仅以可用于那些请求进程的更低执行优先级来执行那些任务114。
虽然任务112在图1中被示为由应用110提供,但任务112可源自位于应用110与调度器140之间的一个或多个中间层。现在将讨论包括这些附加层的程序堆栈。
现在转向图2,该图描绘了包括调度器140的程序堆栈200的框图。在例示的实施方案中,程序堆栈200包括第四层L4处的应用110、第三层L3处的系统框架210、第二层L2处的现实算法220、第一层L1处的调度器140,以及第零层L0处的驱动程序/固件240。如图所示,与作为内核层104的层L0相反,层L1-L4是应用层102。在一些实施方案中,程序堆栈200可以与所示不同的方式来实施。例如,层L2可包括除了现实算法220之外的组件,应用110可直接与调度器140连接,等等。
在各种实施方案中,系统框架210提供可由应用110经由一个或多个应用编程接口(API)请求的各种功能,而应用110不必直接并入用于那些功能的程序指令。例如,想要对由计算设备10记录的视频帧使用对象分类的应用110可使用对应的系统架构210来实施该功能,而应用110的开发者不必编写例如创建神经网络分类器等的程序指令。作为与接下来讨论的算法220相关联的另一示例,提供两个用户之间的共同在场会话的应用110可能想要跟踪给定用户的头部移动、眼睛移动和手部移动,以便使对应化身模仿用户在共同在场体验中的移动。
在各种实施方案中,现实算法220是实施支持由系统框架210提供的功能的底层算法的程序指令。作为图2所示的几个示例,现实算法220包括视觉惯性测距(VIO)算法220、注视跟踪算法220和手部跟踪算法220。VIO算法220可尝试使用相机传感器和惯性测量单元(IMU)传感器(其可为资源120)来确定计算设备10的取向。在其中计算设备10为HMD的实施方案中,该取向可对应于用户的头部/姿势的取向。注视算法220可通过使用一个或多个眼睛跟踪传感器(例如,具有IR照明源的IR相机,其可以是资源120)来跟踪用户的眼睛的位置和移动。在一些实施方案中,注视算法220还可跟踪用户面部的其他组成部分,诸如用户的口部/颌部、眉头等。手部算法220可通过使用一个或多个手部传感器(例如,具有IR照明的IR相机)来跟踪用户的手部、手指和/或手臂的位置、移动和姿态。实施这些算法220中的各种算法可能需要执行各种重复的确定性任务112,这些任务可在计算图142中表达。在一些实施方案中,算法220不仅可将任务112提供给调度器140,而且可将计算图142的部分提供给调度器140。
在各种实施方案中,驱动程序/固件240是内核层104中管理资源120的各种组件。如图所示,这些组件240可包括用于显示器的驱动程序、用于图形操作的GPU驱动程序、用于执行机器学习操作的神经引擎驱动程序、内核130、网络接口驱动程序,以及诸如用于下文相对于图7所讨论的传感器的传感器驱动程序。在例示的实施方案中,同样重要的是,需注意,除了内核调度器132A之外,组件240中的一个或多个组件还可包括它们自己的相应调度器132,诸如用于神经引擎的调度器132B和用于GPU的调度器132C。如上所述,尽管在图1中描绘了单个内核层调度器,但在一些实施方案中,调度器140可发出用于使得多个调度器132A-C根据所确定的调度表144来调度资源120对任务112的执行的指令148。因此,在一些实施方案中,调度器140可被描述为用于其他特定于资源的调度器132的全局调度器。
如图2所示并且将在下文更详细地描述的,调度器140可包括系统健康状况监视器231、图分析器232和执行器233。然而,在其他实施方案中,调度器140可包括其他组件。如将结合图3所描述的,系统健康状况监视器231可监视计算设备10的正在进行的功率和性能能力的变化以主动地确定系统健康状况,该系统健康状况可由调度器140在调度任务112时使用。如将结合图4A至图4D所描述的,计算图分析器232可通过分析健康状况信息、计算图142和其他元数据来对正被请求的任务112进行整体查看,以便生成任务112的调度表144。如将结合图5A和图5B所描述的,执行器233可消耗由图分析器232确定的调度表144并且有利于实施调度表144。
在各种实施方案中,数据协议236是由调度器140用于与程序堆栈200的较低层和/或较高层连接以及那些层的组件用于与调度器140连接的接口协议。
现在转向图3,该图描绘了系统健康状况监视器231的框图。如上所述,在一些实施方案中,系统健康状况监视器231可监视并报告可指示计算设备10的底层健康状况的各种统计信息。在例示的实施方案中,健康状况监视器231接收截止日期跟踪信息302、性能统计信息304、功率统计信息306和热统计信息308,并且输出健康状况遥测322。然后,健康状况监视器231可在计算可用性块310和功率可用性块320中处理该信息146。在一些实施方案中,系统健康状况监视器231可以与所示不同的方式来实施,诸如包括不同的组件和/或具有不同的输入或输出。
在各种实施方案中,截止日期跟踪信息302包括关于调度器140满足各种截止日期/定时约束的能力的各种信息。在一些实施方案中,该信息302可包括用于特定任务112的指定定时约束。例如,信息302可包括关于所监视的音频和视频截止日期的信息—例如,特定视频任务112需要在100ms内完成。如将结合图4B所讨论的,该信息302可以是从计算图142中所包括的信息获得的。在一些实施方案中,该信息302可包括关于任务112的过去执行的历史信息—例如,特定的一组任务112在传统上花费100ms才能完成。在一些实施方案中,该信息可包括指示满足(或不满足)特定定时约束的频率的计数值。
在各种实施方案中,性能统计信息304包括与计算设备10的性能有关的各种统计信息。因此,统计信息304可包括各种资源120的当前利用率信息(诸如CPU正经历60%的利用率的指示)、处理器核心的当前功率管理状态(p状态)、动态电压和频率管理(DVFM)信息等。统计信息304还可包括对非易失性存储器中可用的当前空间、页交换速率、交换空间大小等的指示。统计信息304还可标识网络接口信息,诸如网络延迟、带宽等。
在各种实施方案中,功率统计信息306包括与计算设备10的功率消耗有关的各种信息。在一些实施方案中,统计信息306标识正由资源120(或计算设备10)消耗的当前瓦数。在计算设备10正在使用电池电源的实例中,统计信息306可标识电池的当前电量水平及其总容量。在计算节点140具有插入式电源的实例中,统计信息306可标识插入情况。
在各种实施方案中,热统计信息308包括由位于计算设备中的一个或多个温度传感器收集的各种温度信息。在一些实施方案中,这些传感器可位于计算设备10的集成电路(诸如位于处理器芯片上的集成电路)内。计算设备10还可包括一个或多个温度传感器以收集计算设备10外部的温度。例如,在其中计算设备10为HMD的一个实施方案中,设备10可包括一个或多个皮肤温度传感器以检测设备10的设备10接触用户皮肤的位置的温度。
在各种实施方案中,计算可用性310是能够被执行以基于健康状况信息146来确定用于执行任务112的资源120的可用性的程序指令。在一些实施方案中,计算可用性310可不仅查看当前信息146,而且可查看信息146的先前历史,以便推断计算设备10的健康状况可如何改变并且影响在将来什么资源120是可用的。在例示的实施方案中,计算可用性310可将该信息作为健康状况遥测322传送到计算图分析器232,该计算图分析器可在确定如何调度任务112时考虑该信息。
在各种实施方案中,功率可用性320是能够被执行以基于健康状况信息146来确定用于执行任务112的功率的可用性的程序指令。类似于计算可用性310,功率可用性320可不仅查看当前信息146,而且可查看信息146的先前历史,以便推断计算设备10的功率消耗可如何改变并且影响在将来什么功率可用于任务112的执行。在例示的实施方案中,功率可用性320可在发送到计算图分析器232的健康状况遥测322中包括该信息。
现在转向图4A,该图描绘了图分析器232的框图。如上所述,图分析器232可分析任务112的计算图142,并且产生对应调度表144以供执行器233执行。在例示的实施方案中,图分析器232接收计算图142、使用案例402、系统建模404和健康状况遥测322。图分析器232还输出调度表144。在其他实施方案中,图分析器232可以与所示不同的方式来实施。
下文将相对于图4B更详细地讨论计算图142。如上所述,计算图142可定义任务112之间的相互关系,包括标识任务112的输入和输出。如下文将讨论的,计算图142可包括关于任务112的各种附加信息,诸如这些任务的时间约束、计算亲和性等。
在各种实施方案中,使用案例402标识正在执行任务112的总体上下文。在一些实施方案中,使用案例402可标识与任务112相关联的特定XR体验,诸如共同在场体验、游戏、流式传输XR内容等。在一些实施方案中,使用案例402标识请求任务112的进程,诸如包括VIO算法220、注视算法220等的PID。在一些实施方案中,使用案例402使用从执行任务112接收到的结果来标识整个应用110。
在各种实施方案中,系统建模404包括关于可用于执行任务112的基础资源120的信息。例如,系统建模404可标识计算设备10中所包括的处理器的数量、处理器的类型、电压和操作频率等。系统建模404可标识存储器的类型及其存储容量。系统建模404可标识计算设备10所支持的网络接口的类型,诸如等。在一些实施方案中,建模404标识特定硬件的存在,诸如安全元件、生物识别认证传感器、硬件安全模块(HSM)、安全处理器等。在例示的实施方案中,系统建模404由内核130提供,但在其他实施方案中,可从其他源进行确定。
如刚刚所讨论的,健康状况遥测322可包括从计算设备10中的各个源聚集的且指示计算设备10的健康状况的信息。图分析器232可评估健康状况遥测322以确定哪些资源120当前可用且可能在将来可用。如将结合图4D所讨论的,当系统健康状况恶化时,图分析器232可使用健康状况遥测322来确定何时向请求执行任务112的进程提供反馈。
基于该所接收的信息142、402、404和322,图分析器232可确定用于实施任务112的调度表144。在各种实施方案中,该确定包括确定将哪些资源120指派给任务112,这可基于计算图142中定义的计算亲和性、如从系统建模404标识的计算设备所拥有的资源120,以及根据健康状况遥测322确定的这些资源的当前可用性来评估。在各种实施方案中,确定调度表144还包括针对一些任务112确定应当何时执行那些任务112。如将结合图4C所讨论的,这可能需要基于根据计算图142确定的任务112的相互关系在与可用资源120对应的通道中布置这些任务,并且确定该布局是否能够满足与任务112相关联的定时约束。在各种实施方案中,确定调度表144还可包括确定执行特定任务112的执行优先级,这可基于任务的重要性和与计算图142内的关键定时路径的相关性。当新任务112被请求并且计算设备10的健康状况如从健康状况遥测322标识的那样改变时,图分析器232可连续地更新调度表144。
在一些情况下,在需要执行任务112之前,并且在调度表144被确定时,图分析器232可能能够充分地确定如何调度特定任务112。例如,分析器232可根据随附有计算图142的信息确定特定任务需要以某一有规律间隔、紧接在负责其输入的某一其他任务112之后等执行。然而,在其他情况下,图分析器232可能不能够在更接近运行时间之前充分地确定如何调度特定任务112,因此可确定动态地调度任务112。例如,特定任务112的执行可基于某一事件(诸如特定用户输入)的不规律发生来断定。在一些实施方案中,图分析器232可产生调度表144,该调度表包括该图分析器确定要静态地调度的任务112的调度信息412,并且包括该图分析器确定稍后动态地调度的任务112的调度信息414,但是在其他实施方案中,该信息可被单独传送。下文将相对于图5A更详细地描述静态地调度的任务112的执行。下文将相对于图5B描述动态地调度的任务112的执行。
现在转向图4B,该图描绘了计算图142的框图。如上所述和所示,计算图142是具有与正被考虑用于调度的任务112对应的多个关系节点420的图数据结构。在例示的实施方案中,每个节点420可通过标识特定任务112所消耗的资源422A以及特定任务112所产生的资源422B(其可由其他任务112消耗)来标识与该节点相关联的特定任务112以及该特定任务与和其他节点420相关联的任务112的关系。
作为一个示例,应用110可经由框架210请求使用对象分类算法220来对由用户的周围环境的相机捕获的对象进行分类。对象分类算法220可请求执行初始对象检测任务112,其中在视频帧中检测对象,并且围绕对象放置边界框以用于后续分析。然后,对象分类算法220可请求执行图像裁剪任务112和对象分类任务112,在图像裁剪任务中,从帧中移除边界框外部的内容以产生经裁剪帧,在对象分类任务中,分析经裁剪帧以标识经裁剪帧中的对象的分类—例如,用户正在看一双鞋。在计算图142中,每个任务112可被指派相应节点420。就用于图像裁剪任务112的节点420而言,可将来自对象检测任务112的具有边界框的视频帧标识为输入资源422A,并且可将用于对象分类任务112的经裁剪帧标识为输出。用于对象分类任务112的节点420可接着将经裁剪帧标识为输入。基于这种关系,图分析器232可因此确定对象分类任务112应当被调度为在图像裁剪任务112之后,该图像裁剪任务继而应当被调度为在对象检测任务112之后。
如图所示,每个图节点420可包括给定任务112的其他任务元数据430,诸如类型431、时间约束432、能量配置文件433、计算亲和性434、期望的网络连接435、安全要求436和任务链424。在一些实施方案中,可为给定节点420定义更多(或更少)元数据430。另外,为一个图节点420定义的元数据可与在另一个图节点420中定义的那些元数据不同。
在各种实施方案中,类型431标识与特定节点420相关联的任务112的类型。例如,节点420A可指示其类型431为对象检测,而节点420C可指示其类型431为图像裁剪。
在各种实施方案中,时间约束432标识用于执行给定任务112的最大允许延迟。例如,节点420C中指定的约束432可指示对象分类任务112应当在200ms内完成。因此,图分析器可分析时间约束432以确定应当何时以及如何调度任务112。在分析器232确定不能满足特定时间约束432的情况下,图分析器232可通知请求进程,诸如下文将相对于图4D所讨论的。
在各种实施方案中,能量配置文件433指示用于执行给定任务112的预期能量消耗。例如,用于节点420A的配置文件433可指示对象检测是能量较不密集的任务112,而用于节点420C的配置文件433可指示对象分类是能量更加密集的任务112。因此,图分析器232可分析能量配置文件433以确定如何最佳地调度任务112从而节省功率同时满足时间约束432。
在各种实施方案中,计算亲和性434指示期望特定资源120来处理任务112。例如,节点420C可指定实施能够操作为执行对象分类任务112的神经网络分类器的硬件(或软件)。在一些情况下,亲和性434可包括更一般的规范(例如,用于实施神经网络的通用硬件),或者可包括更具体的规范(例如,专门设计用于实施用于对象分类的卷积神经网络(CNN)的专用硬件)。亲和性342的其他示例可包括标识用于执行三维渲染任务112的GPU资源120、标识用于为用户执行支付交易任务112的具有用户的支付凭证的安全元件等。因此,分析器232可对照产生调度表144的可用资源120来评估计算亲和性434。
在各种实施方案中,期望的网络连接435指示与给定任务112相关联的网络连接的期望特性。这些特性可以是网络连接的类型(例如, 等)、用于连接的期望带宽和/或用于连接的期望延迟。例如,需要高带宽的任务112(例如,将媒体内容流式传输到计算设备10)可指示对更高带宽连接的期望。因此,分析器232可尝试将期望的网络连接435中所标识的特性与基于健康状况遥测322可用的那些特性匹配。
在各种实施方案中,安全要求436指示以安全方式执行给定任务112的要求。例如,考虑到计算设备10所收集的视频帧可能包括敏感内容,节点420中的每个节点可指定任务112要以安全方式执行的要求436。因此,图分析器232可将具有这种要求的任务112分配给可确保数据的安全管理的资源120。敏感内容的其他示例可包括密钥链数据、密码、信用卡信息、生物识别数据、用户偏好、其他形式的个人信息。例如,如果正在使用密码密钥执行特定任务112,则可设置安全要求436以确保例如相对于密钥使用安全硬件,诸如安全元件、硬件安全模块(HSM)、安全处理器等。
在各种实施方案中,任务链437指示当执行两个或更多个任务112时应当将这两个或更多个任务分组在一起。例如,用于节点420A的任务链424可指示任务112应该在与和节点420B相关联的任务112相同的资源120上执行。因此,在一些实施方案中,图分析器232可被限制将链式任务112指派给资源120或不同通道,如将结合图4C所讨论的。
现在转到图4C,描绘了调度表144中所包括的静态调度信息412的框图。在图4C中描绘的特定示例中,已针对与上文结合图2所讨论的注视算法220、手部算法220和VIO算法相关联的任务112确定了调度信息412。另外,在该示例中,计算设备10具有可用于执行这些任务112的四个可用CPU核心(被示为CPU 0-3)。在例示的实施方案中,静态调度信息412包括资源指派440、定时指派450和执行优先级指派460。在其他实施方案中,信息412可包括更多(或更少)信息,信息412也可因任务112而异,等等。
在各种实施方案中,资源指派440指示当执行任务112时应该使用什么资源120。例如,在图4C中,注视算法220、手部算法220和VIO算法220的任务112分别被指派给CPU 0-2。在一些实施方案中,基于计算图142的图节点420中所包括的计算亲和性434来进行资源指派440。资源指派440还可基于提供特定定时指派450的可用性。
在各种实施方案中,定时指派450指示应当何时执行特定任务112。在一些实施方案中,定时指派450可包括指示任务112何时开始、该任务运行多长时间和/或该任务运行的频率的精确定时信息。在一些实施方案中,定时指派450可指示特定任务112将在给定间隔内接收的时钟循环的数量。在一些实施方案中,定时指派450可指示指示任务112的执行何时发生的关系。例如,针对一个任务112的指派450可指示该任务应该在产生由该一个任务112消耗的输出的另一任务112的执行之后发生。当确定定时指派450时,图分析器232可将资源指派440看作随时间而变化的可用资源的通道,并且在这些通道上布局任务112。
在各种实施方案中,执行优先级指派460指示线程执行任务112所需的执行优先级。在一些实施方案中,指派460可以是由内核调度器132理解的数值,诸如优先级值(PR)和/或友善度值(NI)。在其他实施方案中,指派460可以是与值的范围相关联的服务质量(QoS)类别。例如,内核130可支持与最低执行优先级相关联的后台QoS类别以及与最高执行优先级相关联的用户交互(UI)QoS类别。在图4C中所描绘的示例中,已将用于算法220的任务112全部指派给UIQoS类别,以确保这些任务由指派给最高执行优先级组的线程执行。
虽然在图4C中未描绘,但是动态调度信息414可包括与静态调度信息412相同的信息中的一些。例如,除了标识特定任务112之外,信息414还可指示用于该任务112的资源指派440和执行优先级指派460。如将结合图5B所讨论的,信息414还可包括从计算图142收集的相互关系信息,使得执行器233可基于任务112的依赖性知道执行这些任务的顺序。
现在转向图4D,该图描绘了实施反馈回路470的图分析器232的框图。如上文所讨论的,图分析器232可接收指示计算设备10的潜在健康状况的健康状况遥测322,以便确定调度表144并确保可满足各种定时约束。然而,在一些情况下,分析器232可确定其不能(或不再能够)满足这些约束并采用反馈回路470。
如图4D所示,反馈回路470可包括图分析器232(或更一般地,调度器140),该图分析器从请求执行任务112(诸如算法220)的进程接收初始计算图142A(或初始计算图142A的部分)。基于健康状况遥测322,图分析器232可确定是否能够确定满足该一个或多个定时约束的调度表144,或者是否可以满足该一个或多个定时约束的方式修改现有调度表144。响应于确定不能满足定时约束中的至少一个定时约束,图分析器232可通过向请求任务112的进程发送反馈通知472来通知该进程。在一些实施方案中,该通知472可指示通知的原因,诸如标识到基于计算设备的当前健康状况而不能被遵守的时间约束。通知472还可指示通知的原因,诸如指示可用CPU核的数量已由于核中的一个核达到其热极限而下降、供应电力的电池电量不足等。通知472还可指示请求者的期望功率消耗,其可被表达为模式(例如,较低功率模式或较高功率模式)、量(例如,20mW)等。
响应于接收到通知472,请求进程可确定更改其任务112并将经更改的任务提供给图分析器232。在一些实施方案中,这些任务112可以是预先确定的。例如,当设备10在低功率模式/受约束功率模式下操作时,请求进程可维持用于要执行的一组任务112的计算图142B,并且当设备10在高功率模式/不受约束功率模式下操作时,请求进程可维持用于要执行的一组任务112的另一计算图142B。在另一实施方案中,请求进程可采用机器学习算法来基于接收到的通知472动态地确定要执行的一组任务112。在一些实施方案中,接收通知472的进程可自己确定对通知472的解决方案;然而,在其他实施方案中,请求进程与向调度器140提供任务112的一个或多个其他进程协调配合以确定用于处理通知472的解决方案。这种解决方案可能需要联系其他进程来确定例如不仅被通知的进程应当改变其所请求的任务112,而且其他进程也应当改变它们的任务。例如,现实算法220可能需要联系程序堆栈200中更高的其他进程以指示其不再能够递送特定服务质量,并且请求来自那些进程的进一步输入。
基于所提供的反馈通知472,在例示的实施方案中,图分析器232接收指定已更新的一组任务112的经修改计算图142B(或经修改计算图142B的部分)。然后,图分析器232可基于在已更新的计算图中定义的相互关系(如果可确定计算图的话)来确定新的调度表144。如上所述,该反馈回路470可允许确定更智能的解决方案,以用于在计算设备10例如达到其热极限并且依靠硬件来发起突然回撤以保护设备10之前处理计算设备10的健康状况变差的问题。
现在转向图5A,该图描绘了执行静态调度500A的执行器233的框图。如上所述,执行器233可负责实施由图分析器232确定的调度表144。
在各种实施方案中,静态调度500A开始于执行器233接收到调度表144并评估所包括的静态调度信息412以确定指派了什么资源120。基于该评估,在例示的实施方案中,执行器233可发出用于请求内核130提供一个或多个高优先级工作者线程510来执行任务112的优先化调度指令148。在一些情况下,内核130可提供线程510来执行单个任务112,诸如,如图所示仅执行任务C的线程510B。在其他情况下,内核130可将线程510分派给执行器233,该线程保持可供执行器233用于执行多个任务,诸如,如图所示处理任务诸如任务A、B和D的线程510A。在这样的实施方案中,依靠所分派的线程510来执行多个单独的任务112可更高效地使用系统资源,因为线程创建和毁坏需要时间,执行上下文切换也需要时间。
虽然线程510的执行由内核调度器132调度,但执行器233可通过控制向线程510提供什么任务112以及何时提供来使得根据调度表144执行任务112。例如,执行器233可延迟向线程510提供任务112,直到调度表144中所标识的应该执行该任务112的时间帧为止。作为另一示例,如果第一任务112依赖于第二任务112的输出,则执行器233可直到第二任务112完成才向线程510提供第一任务112。为了确保根据调度表144执行任务112,执行器233可跟踪任务112的执行,使得该执行器可确定任务112何时完成。在一些实施方案中,执行器233还可跟踪各种度量以有利于确定后续调度表144,诸如跟踪特定任务112的执行传统上花费了多长时间。在例示的实施方案中,该跟踪可由执行器233的执行监视器来处理,该执行监视器可将其自己的任务112提交给工作线程510。当任务112由线程510完成时,执行器233还可收集结果并将这些结果馈送到依赖于它们作为输入的后续任务112,或者执行器233可将所收集的结果发送回请求执行任务112的进程。
现在转向图5B,该图描绘了执行动态调度500B的执行器233的框图。在例示的实施方案中,执行器233使用依赖性阵列520、等待者计数器530、共享视图池540、一个或多个就绪队列550和一个或多个线程池560。在其他实施方案中,执行器233可执行与所示不同的动态调度。
在各种实施方案中,依赖性阵列520是用于跟踪任务112依赖性的数据结构。例如,如图所示,阵列520可指示一组任务B-D依赖于任务A,因为任务A可产生任务B-D所依靠的结果。在一些实施方案中,阵列520可使用位图数据结构来实施。
在各种实施方案中,等待者计数器530是用于跟踪在准备好要执行给定任务112之前该给定任务当前正在等待的任务112的数量的数据结构。继续上述示例,当任务B-D全部都在等待一个任务完成时,它们各自被指派计数1。在一些实施方案中,等待者计数530可使用整数阵列来实施。
在各种实施方案中,共享视图池540是用于临时存储任务112所需的输入直到它们可由线程510执行的数据结构。在一些实施方案中,线程池560中的线程510可访问池540,以便检索所需的数据。当任务112完成时,它们的输出可被放置到池540中,使得这些输出可用于后续任务112或用于将结果返回到应用110。例如,如图所示,任务A的输出可用于访问;然而,任务B-D的输出可能是不可用的,因为这些任务尚未完成。在一些实施方案中,共享视图池540用于提供用于存储任务112所需的数据的中心位置,并且用于减少存储器中任务112所需的数据的未完成副本的数量。
在各种实施方案中,就绪队列550是标识准备好要执行什么任务112的队列。在一些实施方案中,队列550包括执行任务112所需的各种信息,诸如要由线程510执行的程序指令、执行优先级指派460、输入数据的位置等。在一些实施方案中,给定队列550可基于任务112排入该队列550中而与特定执行优先级相关联。
在各种实施方案中,线程池560是由内核130分派来为执行器233连续执行任务112的线程510的集合。在例示的实施方案中,执行器233可最初向内核130发出用于引起池560中的线程510的分派的优先化调度指令148。在图5B中描绘的示例中,执行器233具体地请求具有实时执行优先级的线程510的第一池560A和具有尽力而为执行优先级的线程510的第二池560B。在这种示例中,可将具有更加时间敏感的约束的任务112指派给实时线程池560A,而可将具有更不时间敏感的约束的任务112指派给尽力而为池560B。
在例示的实施方案中,动态调度500B可开始于执行器233处理来自接收到的调度表144的动态调度信息414。该处理可包括例如初始化依赖性阵列520、等待者计数530,以及共享视图池540中的条目。执行器233还可发出用于线程池560的指令148,并且将任何就绪任务112排入就绪队列550中。一旦被分派,线程510就可开始出队、执行任务112并将结果加载到共享池540中。当执行任务112时,执行器233可更新等待者计数530并将就绪任务112排入队列550中。动态调度500B可随着在调度表144被更新或新的调度表144被创建时从图分析器232接收到附加动态调度信息414而继续进行。
现在转向图6A,其示出了方法600的流程图。方法600是可由有利于进程的任务的调度的应用层调度器(诸如调度器140)执行的方法的一个实施方案。在许多情况下,执行方法600可允许更智能地调度任务。
在步骤605中,在计算设备的应用层(例如,应用层102)处执行的第一调度器(例如,调度器140)接收定义一组任务(例如,任务112)的相互关系的计算图(例如,计算图142)。在一些实施方案中,该组任务可由计算设备执行以向用户提供扩展现实(XR)体验。在一些实施方案中,第一调度器从请求执行该组任务的进程(例如,应用110、系统框架210、现实算法220等)接收标识该组任务中的一个或多个任务的一个或多个定时约束的定时约束信息(例如,时间约束432)。在这样的实施方案中,第一调度器确定是否能够确定满足该一个或多个定时约束的调度表,并且响应于确定不能满足定时约束中的至少一个定时约束而通知该进程(例如,经由反馈通知472)。在一些实施方案中,从进程接收计算图,并且响应于该通知,第一调度器接收指定已更新的一组任务的已更新的计算图(例如,计算图142B)。在一些实施方案中,计算图包括图节点(例如,图节点420),该图节点针对该组任务中的第一任务:1)将该组任务中的第二任务指定为提供要在执行第一任务时使用的输入,以及2)将该组任务中的第三任务指定为接收执行第一任务所得的输出。
在步骤610中,第一调度器基于在计算图中定义的相互关系来确定用于实施该组任务的调度表(例如,调度表144)。在各种实施方案中,第一调度器接收从计算设备中的一个或多个传感器聚集的且指示计算设备的当前健康状况的健康状况信息(例如,系统健康状况信息146)。在这样的实施方案中,第一调度器基于健康状况信息来确定调度表,并且响应于健康状况信息指示计算设备的当前健康状况改变,第一调度器基于健康状况信息来修改调度表。在一些实施方案中,健康状况信息包括指示相对于计算设备测量的一个或多个温度的热信息(例如,热统计信息308)和指示计算设备正在消耗的功率的功率消耗信息(例如,功率统计信息306)。
在步骤615中,第一调度器发出用于使得在计算设备的内核层(例如,内核层104)处执行的第二调度器(例如,调度器132)根据所确定的调度表来调度该组任务的执行的一个或多个指令(例如,指令148)。在各种实施方案中,第一调度器向计算设备的内核发出用于根据所确定的调度表来请求具有特定执行优先级的一个或多个线程(例如,线程510)的一个或多个指令(例如,指令148),并且根据所确定的调度表向该一个或多个线程提供该一组任务中的任务,该一个或多个线程的执行由第二调度器调度。在一些实施方案中,请求执行该组任务的进程不能请求具有特定执行优先级的线程。在各种实施方案中,第一调度器跟踪该组任务的执行(例如,使用元素520-550),并且当基于该跟踪确定任务准备好执行时,将该组任务中的任务排入就绪队列(例如,就绪队列550)中。在这样的实施方案中,这种提供包括:该一个或多个线程使任务从就绪队列出队以执行出队的任务。在各种实施方案中,第二调度器是在内核层处执行且与多个资源相关联的多个调度器(例如,调度器132A-C)中的一个调度器,并且第一调度器发出用于使得该多个调度器中的调度器根据所确定的调度表来调度该多个资源对任务的执行的指令。在一些实施方案中,该多个资源包括中央处理单元(CPU)和图形处理单元(GPU)。
在一些实施方案中,方法600还包括:内核从进程接收对线程以不依赖于使用第一调度器的方式执行任务(例如,任务114)的请求,并以比特定执行优先级更低的执行优先级分派所请求的线程。
现在转向图6B,该图描绘了方法620的流程图。方法620是可由与应用层调度器(诸如,应用110或现实算法220)连接的执行进程执行的方法的一个实施方案。在许多情况下,执行方法620可允许更高效地调度和执行应用的任务。
在步骤625中,该进程向在计算设备的应用层(例如,应用层102)处执行的第一调度器(例如,调度器140)提供一组任务(例如,任务112),包括向第一调度器标识该组任务的相互关系。在各种实施方案中,相互关系能够由第一调度器用来确定用于实施该组任务的调度表(例如,调度表144)。在一些实施方案中,执行该组任务以生成扩展现实(XR)内容。在一些实施方案中,该进程提供由第一调度器分析的计算图(例如,计算图142)的节点(例如,节点420),这些节点包括第一节点,该第一节点针对该组任务中的第一任务:将该组任务中的第二任务标识为提供用于第一任务的输入,以及将该组任务中的第三任务标识为接收来自第一任务的输出。在一些实施方案中,该进程提供用于执行该组任务的一个或多个时间约束(例如,时间约束432),该时间约束能够由第一调度器用来确定调度表。
在步骤630中,该进程接收根据调度表执行该组任务所得的结果,这些结果由在计算设备的内核层(例如,内核层104)处执行的第二调度器(例如,内核调度器132)调度的线程(例如,线程510)生成。在各种实施方案中,该进程从第一调度器接收指示基于计算设备的当前健康状况而不能遵守这些时间约束中的至少一个时间约束的通知(例如,反馈通知472)。响应于该通知,该进程确定更改该组任务,并向第一调度器提供经更改的一组任务(例如,经修改计算图142B)。在一些实施方案中,该确定包括:与向第一调度器提供任务以用于执行的一个或多个其他进程(例如,其他应用110、算法220等)协调配合。
现在转向图6C,该图描绘了方法640的流程图。方法640是可由与应用层调度器连接的内核(诸如,内核130)执行的方法的一个实施方案。在许多情况下,执行方法640可允许更高效地调度任务。
在步骤645中,该内核从在计算设备的应用层(例如,应用层102)处执行的第一调度器(例如,调度器140)接收用于有利于根据调度表(例如,调度表144)调度一组任务(例如,任务112)的执行的一个或多个指令(例如,指令148)。在各种实施方案中,第一调度器通过分析定义该组任务的相互关系的计算图(例如,计算图142)来确定调度表。在一些实施方案中,执行该组任务以向用户提供视觉环境。在一些实施方案中,该内核提供标识计算设备的当前健康状况的健康状况信息(例如,系统健康状况信息146),并且第一调度器基于该健康状况信息来确定调度表。在一些实施方案中,该内核向第一调度器提供关于计算设备的可用于执行任务的一个或多个硬件资源的系统信息(例如,系统建模404),并且第一调度器基于系统信息来确定调度表。
在步骤650中,在内核层(例如,内核层104)处执行的第二调度器(例如,内核调度器132)根据所确定的调度表来调度该组任务的执行。在一些实施方案中,该一个或多个指令包括请求处于特定执行优先级的一个或多个线程(例如,线程510)以有利于该组任务中的任务的执行的指令,并且方法640包括内核将该一个或多个线程分派到应用层以执行该组任务中的任务。在各种实施方案中,该调度包括第二调度器调度所分派的一个或多个线程的执行。在一些实施方案中,该内核不允许向第一调度器提供该组任务的进程请求使用特定执行优先级。
现在转向图6D,该图描绘了方法660的流程图。方法660是可由有利于进程的任务的调度的全局调度器(诸如调度器140)执行的方法的一个实施方案。在许多情况下,执行方法660可允许更智能地调度任务。
在步骤665中,计算设备的全局调度器接收要使用计算设备的异构资源(例如,资源120)来执行以向用户提供扩展现实(XR)体验的一组相关任务(例如,任务112)。在一些实施方案中,全局调度器接收定义该组相关任务的相互关系的计算图(例如,图142)。
在步骤670中,全局调度器基于该组任务中的任务之间的相互关系来确定用于实施该组任务的调度表(例如,调度表144)。在一些实施方案中,基于所接收的计算图将第一任务标识为第二任务的输出来生成调度表。在一些实施方案中,步骤670包括跟踪该组任务的执行,并且当基于该跟踪确定任务准备好执行时,将该组任务中的任务排入就绪队列(例如,就绪队列550)中。在一些实施方案中,全局调度器接收指示计算设备的当前健康状况的健康状况信息(例如,健康状况遥测322),并且响应于健康状况信息指示计算设备的当前健康状况改变,全局调度器基于健康状况信息来修改调度表。在一些实施方案中,全局调度器确定是否能够确定满足该一个或多个定时约束的调度表,并且请求(例如,经由反馈通知472)提供该组任务中的一个或多个任务的进程提供不同的一个或多个任务。
在步骤675中,全局调度器向一组特定于资源的调度器(例如,调度器132)发出用于根据所确定的调度表来调度该组任务的执行的指令(例如,指令148)。在这样的实施方案中,该组中的特定于资源的调度器能够被执行以针对异构资源中的对应异构资源调度任务。在一些实施方案中,该组特定于资源的调度器中的一个调度器包括用于图形处理单元(GPU)的调度器(例如,调度器132C)。在一些实施方案中,该组特定于资源的调度器中的一个调度器包括用于被配置为实施一个或多个神经网络的神经引擎的调度器(例如,调度器132B)。在各种实施方案中,该组特定于资源的调度器将执行优先级指派给该组任务,并且该执行优先级仅可用于由全局调度器调度的任务。
现在转向图6E,该图描绘了方法680的流程图。方法680是可由调度器(诸如,调度器140)使用健康状况遥测数据执行的方法的一个实施方案。在许多情况下,执行方法680可允许更智能地调度任务。
在步骤682中,调度器接收要由计算设备执行以向用户提供扩展现实(XR)体验的一组相关任务(例如,任务112)。在一些实施方案中,调度器接收包括一个或多个功率消耗统计信息(例如,功率统计信息306)的当前健康状况遥测数据,该一个或多个功率消耗统计信息指示计算设备的当前功率消耗。在一些实施方案中,调度器接收包括一个或多个热统计信息(例如,热统计信息308)的当前健康状况遥测数据,该一个或多个热统计信息指示由计算设备的一个或多个传感器测量的一个或多个温度。在一些实施方案中,调度器接收包括一个或多个性能统计信息(例如,性能统计信息304)的当前健康状况遥测数据,该一个或多个性能统计信息指示用于执行该组任务中的一个或多个任务的资源的当前利用率。
在步骤684中,调度器基于指示计算设备执行该组任务的能力的当前健康状况遥测数据(例如,健康状况遥测322)来生成用于实施该组任务的调度表(例如,调度器144)。在一些实施方案中,调度器接收定义该组相关任务的相互关系的计算图(例如,图142),并且基于所接收的计算图来生成调度表。
在步骤686中,在生成调度表之后,调度器基于当前健康状况遥测数据的改变来确定不再能够实施该调度表。在一些实施方案中,该确定基于该一个或多个功率消耗统计信息。在一些实施方案中,该确定基于该一个或多个热统计信息。在一些实施方案中,该确定基于该一个或多个性能统计信息。在一些实施方案中,调度器基于当前健康状况遥测数据来确定用于执行该组任务的多个资源的相应可用性,并且基于资源中的一个或多个资源的所确定的可用性来确定不再能够实施该调度表。在一些实施方案中,调度器基于当前健康状况遥测数据来确定计算设备提供功率来执行该组任务的可用性,并且基于所确定的可用性来确定不再能够实施该调度表。在一些实施方案中,计算图定义用于该组相关任务的一个或多个定时约束,并且该确定基于所定义的一个或多个定时约束。
在步骤688中,响应于该确定,调度器发送对经修改的一组任务的请求(例如,反馈通知472),从而解决当前健康状况遥测数据的改变。在各种实施方案中,响应于发送该请求,调度器从请求执行该组任务中的一个或多个任务的进程接收计算图的经修改部分。在一些实施方案中,调度器基于计算图的经修改部分来确定经修改调度表。
现在转向图7,该图描绘了计算设备10内的组件的框图。在例示的实施方案中,计算设备10被描绘为头戴式显示器(HMD)700,该HMD被配置为佩戴在头部上并且向用户显示内容,诸如XR环境的XR视图702。例如,HMD 700可以是由用户佩戴的头戴式耳机、头盔、护目镜、眼镜、插入到外壳中的电话等。然而,如上所述,计算设备10可对应于其他实施方案中的可能不呈现XR内容的其他设备。在例示的实施方案中,HMD 700包括环境传感器704、用户传感器706、显示系统710、控制器720、存储器730、安全元件740和网络接口750。在一些实施方案中,HMD 700可以与所示不同的方式来实施。例如,HMD 700可包括多个网络接口750,HMD700可不包括安全元件740等。
在各种实施方案中,世界传感器704是被配置为收集关于用户在其中佩戴HMD 700的环境的各种信息的传感器。在一些实施方案中,世界传感器704可包括捕获用户环境的视频信息的一个或多个可见光相机。该信息还可例如用于提供真实环境的XR视图702,检测环境中的对象和表面,提供真实环境中的对象和表面的深度信息,提供真实环境中的用户的位置(例如,位置和取向)和运动(例如,方向和速度)信息等。在一些实施方案中,HMD 700可包括位于HMD 700的前表面上的基本上在用户眼睛的每只眼睛的前面的位置处的左相机和右相机。在其他实施方案中,更多或更少的相机可用于HMD 700中并且可定位在其他位置处。
在一些实施方案中,世界传感器704可包括例如捕获用户环境中的对象和表面的深度信息或范围信息的一个或多个世界标测传感器(例如,具有IR照明源的红外(IR)传感器或光检测和测距(LIDAR)发射器和接收器/检测器)。该范围信息可例如与由相机捕获的帧结合使用,以检测和识别真实世界环境中的对象和表面,并且确定对象和表面相对于用户的当前位置和运动的位置、距离和速度。该范围信息还可用于将待合成为XR环境的真实世界对象的虚拟表示定位在正确的深度处。在一些实施方案中,该范围信息可用于检测与真实世界对象和表面碰撞以重定向用户步行的可能性。在一些实施方案中,世界传感器704可包括捕获用户的物理环境中的照明信息(例如,方向、颜色和强度)的一个或多个光传感器(例如,在HMD 700的前部和顶部上)。例如,该信息可用于更改HMD 700中的显示系统的亮度和/或颜色。
在各种实施方案中,用户传感器706是被配置为收集关于佩戴HMD 700的用户的各种信息的传感器。在一些实施方案中,用户传感器706可包括一个或多个头部姿势传感器(例如,IR或RGB相机),该一个或多个头部姿势传感器可捕获关于用户和/或用户的头部的位置和/或运动的信息。由头部姿势传感器收集的信息可例如用于确定如何渲染和显示XR环境的视图702和视图内的内容。例如,环境的不同视图702可至少部分地基于用户头部的位置、用户当前是否正穿行于环境中等等来渲染。又如,增强的位置和/或运动信息可用于相对于环境的背景视图将虚拟内容合成到固定位置中的场景中。在一些实施方案中,可存在位于HMD 700的前表面或顶表面上的两个头部姿势传感器;然而,在其他实施方案中,可使用更多(或更少)头部姿势传感器并且可将其定位在其他位置处。
在一些实施方案中,用户传感器706可包括可用于跟踪用户的眼睛的位置和移动的一个或多个眼睛跟踪传感器(例如,具有IR照明源的IR相机)。在一些实施方案中,由眼睛跟踪传感器收集的信息可用于调整要显示的图像的渲染,并且/或者可用于基于用户眼睛注视的方向和角度来调整通过HMD 700的显示系统进行的图像的显示。在一些实施方案中,由眼睛跟踪传感器收集的信息可用于将用户的化身的眼睛的方向与用户的眼睛的方向匹配。在一些实施方案中,可基于由眼睛跟踪传感器确定的用户瞳孔扩张来调节所显示的图像的亮度。在一些实施方案中,用户传感器706可包括跟踪用户的眉毛/前额的表情的一个或多个眉毛传感器(例如,具有IR照明的IR相机)。在一些实施方案中,用户传感器706可包括跟踪用户的口部/颌部的表情的一个或多个下颌跟踪传感器(例如,具有IR照明的IR相机)。例如,在一些实施方案中,由传感器706捕获的眉头、口部、颌部和眼睛的表情可用于模拟共同在场体验中用户的化身上的表情,并且/或者可用于至少部分地基于用户对由HMD700显示的内容的反应来选择性地渲染和合成用于查看的虚拟内容。
在一些实施方案中,用户传感器706可包括跟踪用户的手部、手指和/或手臂的位置、移动和姿态的一个或多个手部传感器(例如,具有IR照明的IR相机)。例如,在一些实施方案中,用户的手部、手指和/或臂部的检测到的位置、移动和姿态可用于模拟用户的化身的手部、手指和/或臂部在共同在场体验中的移动。作为另一示例,用户的检测到的手部和手指姿态可用于确定用户与虚拟空间中的虚拟内容的交互,包括但不限于操纵虚拟对象的姿态,与虚拟空间中显示的虚拟用户界面元素交互的姿态等。
在一些实施方案中,系统框架210和现实算法220可实现对世界传感器704和/或用户传感器706的应用。
在各种实施方案中,显示系统710被配置为向用户显示所渲染的帧。显示器710可实施各种类型的显示技术中的任一者。例如,如上文所讨论的,显示系统710可包括近眼显示器,该近眼显示器呈现左图像和右图像以产生三维视图702的效果。在一些实施方案中,近眼显示器可使用数字光处理(DLP)、液晶显示器(LCD)、硅基液晶(LCoS)或发光二极管(LED)。作为另一示例,显示系统710可包括直接视网膜投影仪,该直接视网膜投影仪经由反射表面(例如,反射眼镜镜片)将包括左图像和右图像的帧逐像素地直接扫描到用户的眼睛。为了在视图702中创建三维效果,在两个图像中的不同深度或距离处的对象作为距离的三角测量的函数向左或向右移位,其中更近的对象比更远的对象移位得多。显示系统710可支持任何介质,诸如光学波导、全息图媒介、光学组合器、光学反射器,或它们的任意组合。在一些实施方案中,显示系统710可以是透明或半透明的,并且被配置为选择性地变得不透明。
在各种实施方案中,控制器720包括被配置为有利于HMD 700的操作的电路。因此,控制器720可包括一个或多个处理器,该一个或多个处理器被配置为执行程序指令(诸如,应用110、内核130、智能调度器140等的程序指令)以使得HMD 700执行本文所描述的各种操作。这些处理器可以是被配置为实现任何合适的指令集架构的CPU,并且可被配置为执行在该指令集架构中定义的指令。例如,在各种实施方案中,控制器720可包括实施多种指令集架构(ISA)(诸如ARM、x86、PowerPC、SPARC、RISC或MIPS ISA或任何其他合适的ISA)中的任何指令集架构的通用处理器或嵌入式处理器。在多处理器系统中,每个处理器可共同实现相同的ISA,但不是必需的。控制器720可采用任何微架构,包括标量、超标量、流水线、超流水线、乱序、有序、推测性、非推测性等,或它们的组合。控制器720可包括实施微码技术的电路。控制器720可包括一个或多个级别的高速缓存,该高速缓存可采用任何大小和任何配置(集合关联、直接映射等)。
在一些实施方案中,控制器720可包括GPU,该GPU可包括任何合适的图形处理电路。通常,GPU可被配置为将待显示对象渲染到帧缓冲区中(例如,包括整个帧的像素数据的帧缓冲区)。GPU可包括一个或多个图形处理器,该图形处理器可执行图形软件以进行部分或全部的图形操作或某些图形操作的硬件加速。在一些实施方案中,控制器720可包括用于处理和渲染视频和/或图像的一个或多个其他组件,例如图像信号处理器(ISP)、编码器/解码器(编解码器)等。在一些实施方案中,控制器720可被实施作为片上系统(SOC)。
在各种实施方案中,存储器730是非暂态计算机可读介质,该非暂态计算机可读介质被配置为存储由控制器720中的处理器执行的数据和程序指令(诸如,应用110、内核130、智能调度器140等中的数据和程序指令)。存储器730可包括任何类型的易失性存储器,诸如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双数据速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM的移动版本,诸如mDDR3等,或SDRAM的低功率版本,诸如LPDDR2等)、RAMBUSDRAM(RDRAM)、静态RAM(SRAM)等。存储器730还可以是任何类型的非易失性存储器,诸如NAND闪存存储器、NOR闪存存储器、纳米RAM(NRAM)、磁阻RAM(MRAM)、相变RAM(PRAM)、赛道存储器、忆阻器存储器。在一些实施方案中,一个或多个存储器设备可耦接到电路板上以形成存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,这些设备可以芯片堆叠配置、封装堆叠配置或多芯片模块配置安装有集成电路实现系统。
在各种实施方案中,安全元件(SE)740是被配置为对HMD 700执行各种安全操作的安全电路。如本文所用,术语“安全电路”是指保护经隔离的内部资源使其不被外部电路诸如控制器720直接访问的电路。该内部资源可以是存储敏感数据诸如个人信息(例如,生物识别信息、信用卡信息等)、加密密钥、随机数生成器种子等的存储器。该内部资源还可以是执行与敏感数据相关联的服务/操作(诸如加密、解密、数字签名的生成等)的电路。例如,SE740可维护用于加密存储在存储器730中的数据的一个或多个密码密钥,以便提高HMD 700的安全性。作为另一示例,安全元件740还可维护一个或多个密码密钥以建立安全连接、认证HMD 700或HMD 700的用户等。再如,SE 740可维护用户的生物识别数据,并且被配置为通过将所维护的生物识别数据与由一个或多个用户传感器706收集的生物识别数据进行比较来执行生物识别认证。如本文所用,“生物识别数据”是指基于用户的物理或行为特性在其他人中间唯一地标识用户(至少达到高精确度)的数据,诸如指纹数据、语音识别数据、面部数据、虹膜扫描数据等。
在各种实施方案中,网络接口750包括被配置为与外部实体通信的一个或多个接口。网络接口750可支持任何合适的无线技术,诸如 长期演进TM等,或任何合适的有线技术,诸如以太网、光纤信道、通用串行总线TM(USB)等。在一些实施方案中,接口750可实施提供高度定向无线连接的专有无线通信技术(例如,90千兆赫(GHz)无线技术)。在一些实施方案中,HMD 700可基于接口的连接性以及由HMD 700递送的特定用户体验来在不同的可用网络接口之间进行选择。例如,如果特定用户体验需要大量带宽,则HMD 700可在进行无线通信以流式传输更高质量的内容时选择支持专有无线技术的无线电组件。然而,如果用户仅仅是较低质量电影,则可能是足够的并且由HMD 700来选择。在一些实施方案中,在例如带宽有限的情况下,HMD 700可使用压缩来进行通信。
***
尽管上文已经描述了具体实施方案,但这些实施方案并非要限制本公开的范围,即使仅相对于特定特征描述单个实施方案的情况下也是如此。本公开中提供的特征示例意在进行例示,而非限制,除非做出不同表述。上述说明书意在涵盖此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
本公开的范围包括本文(明确或暗示)公开的任意特征或特征的组合或其任意概括,而无论其是否减轻本文解决的任何或所有问题。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地,参考所附权利要求书,可将从属权利要求的特征与独立权利要求的特征进行组合,并可通过任何适当的方式而不是仅通过所附权利要求书中所列举的特定组合来组合来自相应独立权利要求的特征。
Claims (39)
1.一种非暂态计算机可读介质,所述非暂态计算机可读介质中存储有程序指令,所述程序指令能够由计算设备执行以执行包括以下项的操作:
在所述计算设备的应用层处执行的第一调度器处接收计算图,所述计算图定义要由所述计算设备执行以向用户提供扩展现实(XR)体验的一组任务的相互关系;
由所述第一调度器基于在所述计算图中定义的所述相互关系来确定用于实施所述一组任务的调度表;以及
由所述第一调度器发出用于使得在所述计算设备的内核层处执行的第二调度器根据所确定的调度表来调度所述一组任务的执行的一个或多个指令。
2.根据权利要求1所述的计算机可读介质,其中所述操作还包括:
由所述第一调度器接收从所述计算设备中的一个或多个传感器聚集的且指示所述计算设备的当前健康状况的健康状况信息;
由所述第一调度器基于所述健康状况信息来确定所述调度表;以及
响应于所述健康状况信息指示所述计算设备的所述当前健康状况改变,所述第一调度器基于所述健康状况信息来修改所述调度表。
3.根据权利要求2所述的计算机可读介质,其中所述健康状况信息包括指示相对于所述计算设备测量的一个或多个温度的热信息;并且
其中所述健康状况信息包括指示所述计算设备正在消耗的功率的功率消耗信息。
4.根据权利要求1所述的计算机可读介质,其中所述操作还包括:
由所述第一调度器从请求执行所述一组任务的进程接收标识所述一组任务中的一个或多个任务的一个或多个定时约束的定时约束信息;并且
其中确定所述调度表包括:
WO 2023/049287A1
由所述第一调度器确定是否能够确定满足所述一个或多个定时约束的调度表;以及
由所述第一调度器响应于确定不能满足所述定时约束中的至少一个定时约束而通知所述进程。
5.根据权利要求4所述的计算机可读介质,其中从所述进程接收所述计算图;并且
其中所述确定包括:
响应于所述通知,所述第一调度器接收指定已更新的一组任务的已更新的计算图;以及
由所述第一调度器基于在所述已更新的计算图中定义的相互关系来确定所述调度表。
6.根据权利要求1所述的计算机可读介质,其中所述发出包括:
由所述第一调度器向所述计算设备的内核发出用于根据所确定的调度表来请求具有特定执行优先级的一个或多个线程的一个或多个指令,其中请求执行所述一组任务的进程不能请求具有所述特定执行优先级的线程;以及
由所述第一调度器根据所确定的调度表向所述一个或多个线程提供所述一组任务中的任务,其中所述一个或多个线程的执行由所述第二调度器调度。
7.根据权利要求6所述的计算机可读介质,其中所述发出包括:
由所述第一调度器跟踪所述一组任务的执行;以及
当基于所述跟踪确定所述任务准备好执行时,由所述第一调度器将所述一组任务中的任务排入就绪队列中;并且
其中所述提供包括:所述一个或多个线程使任务从所述就绪队列出队以执行所述出队的任务。
8.根据权利要求6所述的计算机可读介质,其中所述操作还包括:
由所述内核从所述进程接收对线程以不依赖于使用所述第一调度器的方式执行任务的请求;以及
由所述内核以比所述特定执行优先级更低的执行优先级分派所请求的线程。
9.根据权利要求1所述的计算机可读介质,其中所述计算图包括图节点,所述图节点针对所述一组任务中的第一任务:1)将所述一组任务中的第二任务指定为提供要在执行所述第一任务时使用的输入,以及2)将所述一组任务中的第三任务指定为接收执行所述第一任务所得的输出。
10.根据权利要求1所述的计算机可读介质,其中所述第二调度器是在内核层处执行且与多个资源相关联的多个调度器中的一个调度器,其中所述多个资源包括中央处理单元(CPU)和图形处理单元(GPU),并且其中所述操作还包括:
由所述第一调度器发出用于使得所述多个调度器中的调度器根据所确定的调度表来调度所述多个资源对任务的执行的指令。
11.一种非暂态计算机可读介质,所述非暂态计算机可读介质中存储有程序指令,所述程序指令能够由计算设备执行以执行包括以下项的操作:
向在所述计算设备的应用层处执行的第一调度器提供一组任务以生成扩展现实(XR)内容,其中所述提供包括:
向所述第一调度器标识所述一组任务的相互关系,其中所述相互关系能够由所述第一调度器用来确定用于实施所述一组任务的调度表;以及
接收根据所述调度表执行所述一组任务所得的结果,其中所述结果由在所述计算设备的内核层处执行的第二调度器调度的线程生成。
12.根据权利要求11所述的计算机可读介质,其中所述提供包括:
提供由所述第一调度器分析的计算图的节点,其中所述节点包括第一节点,所述第一节点针对所述一组任务中的第一任务:将所述一组任务中的第二任务标识为提供用于所述第一任务的输入,以及将所述一组任务中的第三任务标识为接收来自所述第一任务的输出。
13.根据权利要求11所述的计算机可读介质,其中所述提供包括:
提供用于执行所述一组任务的一个或多个时间约束,其中所述时间约束能够由所述第一调度器用来确定所述调度表。
14.根据权利要求13所述的计算机可读介质,其中所述操作还包括:
从所述第一调度器接收指示基于所述计算设备的当前健康状况而不能遵守所述时间约束中的至少一个时间约束的通知;
响应于所述通知,确定更改所述一组任务;以及
向所述第一调度器提供所更改的一组任务。
15.根据权利要求14所述的计算机可读介质,其中所述确定包括:与向所述第一调度器提供任务以用于执行的一个或多个其他进程协调配合。
16.一种方法,包括:
在计算设备的内核处从在所述计算设备的应用层处执行的第一调度器接收用于有利于根据调度表调度一组任务的执行以向用户提供视觉环境的一个或多个指令,其中所述第一调度器通过分析定义所述一组任务的相互关系的计算图来确定所述调度表;以及
由在所述计算设备的内核层处执行的第二调度器根据所确定的调度表来调度所述一组任务的执行。
17.根据权利要求16所述的方法,其中所述一个或多个指令包括请求处于特定执行优先级的一个或多个线程以有利于所述一组任务中的任务的执行的指令,并且其中所述方法还包括:
由所述内核将所请求的一个或多个线程分派到所述应用层以执行所述一组任务中的任务,其中所述调度包括:所述第二调度器调度所分派的一个或多个线程的执行。
18.根据权利要求17所述的方法,其中所述内核不允许向所述第一调度器提供所述一组任务的进程请求使用所述特定执行优先级。
19.根据权利要求16所述的方法,还包括:
由所述内核提供标识所述计算设备的当前健康状况的健康状况信息,其中所述第一调度器基于所述健康状况信息来确定所述调度表。
20.根据权利要求16所述的方法,还包括:
由所述内核向所述第一调度器提供关于所述计算设备的可用于执行任务的一个或多个硬件资源的系统信息,其中所述第一调度器基于所述系统信息来确定所述调度表。
21.一种非暂态计算机可读介质,所述非暂态计算机可读介质中存储有程序指令,所述程序指令能够由计算设备执行以执行包括以下项的操作:
在所述计算设备的全局调度器处接收要使用所述计算设备的异构资源来执行以向用户提供扩展现实(XR)体验的一组相关任务;
由所述全局调度器基于所述一组任务中的任务之间的相互关系来确定用于实施所述一组任务的调度表;以及
由所述全局调度器向一组特定于资源的调度器发出用于根据所确定的调度表来调度所述一组任务的执行的指令,其中所述组中的特定于资源的调度器能够被执行以针对所述异构资源中的对应异构资源调度任务。
22.根据权利要求21所述的计算机可读介质,其中所述一组特定于资源的调度器中的一个调度器包括用于图形处理单元(GPU)的调度器。
23.根据权利要求21所述的计算机可读介质,其中所述一组特定于资源的调度器中的一个调度器包括用于被配置为实施一个或多个神经网络的神经引擎的调度器。
24.根据权利要求21所述的计算机可读介质,其中所述操作还包括:
接收定义所述一组相关任务的相互关系的计算图;并且
其中基于所接收的计算图将第一任务标识为接收第二任务的输出来生成所述调度表。
25.根据权利要求21所述的计算机可读介质,其中确定所述调度表包括:
由所述全局调度器跟踪所述一组任务的执行;以及
当基于所述跟踪确定所述任务准备好执行时,由所述全局调度器将所述一组任务中的任务排入就绪队列中。
26.根据权利要求21所述的计算机可读介质,其中所述操作还包括:
由所述全局调度器接收指示所述计算设备的当前健康状况的健康状况信息;以及
响应于所述健康状况信息指示所述计算设备的所述当前健康状况改变,所述全局调度器基于所述健康状况信息来修改所述调度表。
27.根据权利要求26所述的计算机可读介质,其中所述操作还包括:
由所述全局调度器确定是否能够确定满足所述一个或多个定时约束的调度表;以及
由所述全局调度器请求提供所述一组任务中的一个或多个任务的进程提供不同的一个或多个任务。
28.根据权利要求21所述的计算机可读介质,其中所述操作还包括:
由所述一组特定于资源的调度器向所述一组任务指派执行优先级,其中所述执行优先级仅可用于由所述全局调度器调度的任务。
29.根据权利要求21所述的计算机可读介质,其中所述一组特定于资源的调度器包括在内核层处执行的一个或多个调度器;并且
其中所述全局调度器执行应用层。
30.一种非暂态计算机可读介质,所述非暂态计算机可读介质中存储有程序指令,所述程序指令能够由计算设备执行以执行包括以下项的操作:
在调度器处接收要由所述计算设备执行以向用户提供扩展现实(XR)体验的一组相关任务;
由所述调度器基于指示所述计算设备执行所述一组任务的能力的当前健康状况遥测数据来生成用于实施所述一组任务的调度表;在生成所述调度表之后,由所述调度器基于所述当前健康状况遥测数据的改变来确定不再能够实施所述调度表;以及
响应于所述确定,由所述调度器发送对经修改的一组任务的请求,从而解决所述当前健康状况遥测数据的所述改变。
31.根据权利要求30所述的计算机可读介质,其中所述操作还包括:
接收包括一个或多个功率消耗统计信息的当前健康状况遥测数据,所述一个或多个功率消耗统计信息指示所述计算设备的当前功率消耗;并且
其中所述确定基于所述一个或多个功率消耗统计信息。
32.根据权利要求30所述的计算机可读介质,其中所述操作还包括:
接收包括一个或多个热统计信息的当前健康状况遥测数据,所述一个或多个热统计信息指示由所述计算设备的一个或多个传感器测量的一个或多个温度;并且
其中所述确定基于所述一个或多个热统计信息。
33.根据权利要求30所述的计算机可读介质,其中所述操作还包括:
接收包括一个或多个性能统计信息的当前健康状况遥测数据,所述一个或多个性能统计信息指示用于执行所述一组任务中的一个或多个任务的资源的当前利用率;并且
其中所述确定基于所述一个或多个性能统计信息。
34.根据权利要求30所述的计算机可读介质,其中所述操作还包括:
基于所述当前健康状况遥测数据来确定用于执行所述一组任务的多个资源的相应可用性;并且
其中基于所述资源中的一个或多个资源的所确定的可用性来确定不再能够实施所述调度表。
35.根据权利要求30所述的计算机可读介质,其中所述操作还包括:
基于所述当前健康状况遥测数据来确定所述计算设备提供功率来执行所述一组任务的可用性;并且
其中基于所确定的可用性来确定不再能够实施所述调度表。
36.根据权利要求30所述的计算机可读介质,其中所述操作还包括:
接收定义所述一组相关任务的相互关系的计算图;并且
其中基于所接收的计算图来生成所述调度表。
37.根据权利要求36所述的计算机可读介质,其中所述计算图定义用于所述一组相关任务的一个或多个定时约束;并且
其中所述确定基于所定义的一个或多个定时约束。
38.根据权利要求36所述的计算机可读介质,其中所述操作还包括:
响应于发送所述请求,从请求执行所述一组任务中的一个或多个任务的进程接收所述计算图的经修改部分。
39.根据权利要求38所述的计算机可读介质,其中所述操作还包括:
由所述调度器基于所述计算图的所述经修改部分来确定经修改调度表。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163247567P | 2021-09-23 | 2021-09-23 | |
| US63/247,567 | 2021-09-23 | ||
| US63/247,564 | 2021-09-23 | ||
| PCT/US2022/044430 WO2023049287A1 (en) | 2021-09-23 | 2022-09-22 | Intelligent scheduler |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN117940902A true CN117940902A (zh) | 2024-04-26 |
Family
ID=90765212
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202280062283.5A Pending CN117940902A (zh) | 2021-09-23 | 2022-09-22 | 智能调度器 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN117940902A (zh) |
-
2022
- 2022-09-22 CN CN202280062283.5A patent/CN117940902A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN113632145B (zh) | 计算机生成的现实系统中的分布式处理 | |
| US20250328382A1 (en) | Intelligent Scheduler | |
| Yi et al. | Heimdall: mobile GPU coordination platform for augmented reality applications | |
| JP6348176B2 (ja) | 適応イベント認識 | |
| CN112639943A (zh) | 用于改善头戴式显示器的颜色均匀性的凹式颜色校正 | |
| JP7558241B2 (ja) | プロセスデータ共有のための方法及びデバイス | |
| CN117940902A (zh) | 智能调度器 | |
| US11533351B2 (en) | Efficient delivery of multi-camera interactive content | |
| US20250234098A1 (en) | Computer Vision Processing Circuitry |
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 |