CN116136783A - 多加速器框架中的高效加速器卸载 - Google Patents
多加速器框架中的高效加速器卸载 Download PDFInfo
- Publication number
- CN116136783A CN116136783A CN202211266309.6A CN202211266309A CN116136783A CN 116136783 A CN116136783 A CN 116136783A CN 202211266309 A CN202211266309 A CN 202211266309A CN 116136783 A CN116136783 A CN 116136783A
- Authority
- CN
- China
- Prior art keywords
- core
- accelerator
- application
- accelerator device
- workload
- 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
- 238000000034 method Methods 0.000 claims abstract description 51
- 230000015654 memory Effects 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 13
- 238000003860 storage Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000003068 static effect Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
用于多加速器框架中的高效加速器卸载的方法、设备和软件。一个多加速器框架采用包含多个处理器核和多个加速器装置的计算平台。应用在第一核上执行并且应用工作负载的一部分被卸载到第一加速器装置。结合将应用的执行移动到第二核,基于第二核的核到加速器成本信息来选择将用于所卸载的工作负载的第二加速器装置。此核到加速器成本信息包含核‑加速器对的组合的核‑加速器成本信息,其至少部分基于针对核与加速器之间的互联路径所预测的时延。单插槽平台和多插槽平台配置均被支持。解决方案包含用于针对多个加速器装置来移动所卸载的工作负载以及同步加速器操作和工作流程的机制。
Description
背景技术
近些年来,“加速器”的使用已见到显著增长。加速器(诸如现场可编程门阵列(FPGA)、图形处理单元(GPU)、通用GPU(GP-GPU)、专用集成电路(ASIC)以及类似装置)配置成执行比原本经由软件在用于卸载CPU工作负载的这类加速器和/或中央处理单元(CPU)上的核上的执行而被执行的任务更快的某些任务。
管芯上加速器可使用管芯上互连而被耦合到CPU核。片外(off-chip)加速器(例如,不是片上系统(SoC)处理器的一部分的加速器)通常经由高速互连(诸如外围组件互连快速(PCIe)或计算快速链路(CLX))而被连接到SoC。在当前实现下,操作系统、应用、虚拟机(VM)以及容器将加速器视作具有一致访问(uniform access)的计算资源,这意味着从核来访问加速器装置的成本被认为是恒定的。但是,实际上访问每个加速器的成本是变化的,这取决于应用线程正在哪个核上运行以及到加速器的互连时延。
另外,在加速期间,如果应用在系统上的核四处移动(例如,在属于不同管芯和插槽的不同核之间移动),则数据移动路径导致利用片上互连资源的无效方式。有效互连资源转化成低时延和确定性性能。核到加速器(Core-to-Accelerator)距离和时延成本对任一对核-加速器都是不相同的。应用线程的核亲和性不能被应用于所有情形,并且需要静态资源分配,这导致核资源的浪费(由于没有统计复用而造成的缺点)。
附图说明
本发明的前述方面和许多伴随的优点将变得更容易理解,因为当结合附图考虑时,所述方面和优点通过参考以下详细描述将变得更好理解,其中,除非另有说明,否则贯穿各个视图,相同的附图标记是指相同的部分:
图1是示出多插槽计算平台的示意图,该计算平台示出可在其上实现本文所述解决方案的平台;
图2a是示出过程的示例的图解,所述过程被实现以在当前方式下在不同插槽上所实现的核之间移动应用进程和/或线程执行;
图2b是示出在采用本文所公开的原则和教导的解决方案的实施例下的核之间的应用进程和/或线程执行的移动的图解;
图3a是示出采用核到加速器距离成本度量的解决方案的抽象视图的图解;
图3b是根据一个实施例的示例性核到加速器成本表;
图4是实现架构的示意图,该示意图示出用于实现解决方案的实施例的组件和块;
图5是示出由平台执行以跨核来移动应用(进程和线程)同时改变加速器以减少核到加速器成本的操作的流程图;以及
图6是流程图600,该流程图示出用于初始填充(一个或多个)核到加速器成本表以及用于考虑到平台工作负载的改变而更新核到加速器距离成本度量的操作。
具体实施方式
本文描述了用于多加速器框架中的高效加速器卸载的方法、设备和软件的实施例。在以下描述中,阐述了许多具体细节以提供对本发明实施例的透彻理解。然而,相关领域的技术人员将认识到,本发明可以在没有一个或多个具体细节的情况下来实施,或者通过其它方法、组件、材料等来实施。在其它情况下,为了避免混淆本发明的方面,未详细示出或描述公知的结构、材料或操作。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例所描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“在一个实施例中”或“在实施例中”不一定都是指相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
为了清楚性,本文图中的各个组件也可以通过它们在图中的标签而不是通过特定的附图标记来指代。此外,可以通过参考数字后跟“(typ)”(意味着“典型”)来示出指代特定类型的组件(与特定组件相对)的附图标记。将理解,这些组件的配置将是可能存在但为了简单性和清楚性而未在附图中示出的类似组件或未通过单独的附图标记来标记的其它类似组件中典型的组件。相反,“(typ)”不应被解释为意味着组件、元件等通常用于其公开的功能、实现、目的等。
图1示出多插槽计算平台100,该计算平台示出可在其上实现本文所述解决方案的平台。平台100包含一对插槽102和104(也被标记并称作插槽0和插槽1),每个插槽具有类似配置。插槽102和104中的每个插槽采用SoC架构并且包含了借助于各种互连电路模块(如描绘为表示物理互连结构的抽象概念的插槽内总线)而被互连到片上集成输入/输出(I/O)装置108的多个核106。除了将核106与集成I/O装置108互连以外,该插槽内总线电路模块还被连接到一个或多个存储器接口(例如集成存储器控制器)(未示出)以及一个或多个I/O接口(未示出),所述一个或多个存储器接口被连接到存储器110,所述一个或多个I/O接口被耦合到一个或多个外部I/O装置112。如针对插槽1所示的,SoC上的核和其它电路模块可经由网络116和片上网络接口(未示出)而被连接到网络上I/O装置(over the network I/Odevice)114。插槽0和1还经由一个或多个插槽间总线118而被互连。
图1的下方部分示出子图解118,该子图解示出插槽内总线和插槽间总线118的进一步细节。核106和集成I/O装置108是集成在SoC上的一些类型的IP(知识产权)块120。通常,插槽内总线采用包含多个级别的互连层级,如由初级总线122、二级总线124和三级总线126所示的。在给定级别的总线可采用相同或不同的总线结构和协议。例如,初级总线可表示用于实现相干存储器域的互连结构以及关联协议,而二级总线和/或三级总线可采用I/O协议,诸如但不限于外围组件互连快速(PCIe)。片上总线结构和协议还可包含专有的且标准化的结构和协议。当不同协议在互连层级中的不同级别被实现时,适用的桥可被采用。
子图解118还示出片上网络(NoC)128。NoC示出用于使用网络类型寻址来互连IP块的任何类型的互连结构,包含网状互连结构、环型互连结构、超环面结构(toroidstructure)、三维(3D)结构等。
通常,SoC中的核可被配置在常规处理器/SoC架构或基于切片(tile)的架构中。例如,常规处理器/SoC架构可包含具有关联的1级(L1)和2级(L2)高速缓存的核,所示关联的1级(L1)和2级(L2)在一致性存储器域中被互连到末级高速缓存(LLC)以及各种存储器接口组件。其它高速缓存/存储器配置也可被实现。
基于切片的方案可采用多种类型的切片,包含但不限于核切片和I/O切片。每个类型的切片可在SoC中被复制。如前述的,核切片可包含具有关联的L1和L2高速缓存的核。切片还将包含用于使用适用的NoC互连结构和协议来与其它切片进行通信的某种类型的接口。在某个命名法下,切片可被称为‘节点’,其由NoC电路模块所互连。
在一些实施例中,核106及其关联L1和L2高速缓存是中央处理单元(CPU)中的IP块。通常,在本领域中CPU可被认为包括SoC(作为整体)或可表示SoC上的电路模块。例如,一些SoC可包含CPU以及一个或多个集成的‘其它处理单元’。其它处理单元被统称为‘XPU’,其可包含以下项中的一项或多项:图形处理器单元(GPU)或通用GPU(GP-GPU)、张量处理单元(TPU)、数据处理器单元(DPU)、基础设施处理单元(IPU)、人工智能(AI)处理器或AI推理单元和/或其它加速器、现场可编程门阵列(FPGA)和/或其它可编程逻辑(用于计算目的)等。虽然本文中的一些图解示出CPU核和/或CPU的使用,但这仅是示例性的以及非限制性的。通常,任何类型的XPU可代替所示实施例中的CPU来使用。还有,如在随附权利要求中所使用的,术语“处理器”通常用于涵盖CPU以及各种形式的XPU。
在本文所公开的实施例下,各种集成I/O装置108、外部I/O装置112以及其它IP块(未示出)可包括“加速器”。如以上所述,加速器可包括片上或管芯上组件(如由集成I/O装置108所示的),或可包括片外组件(诸如由外部I/O装置112所示的)。片上/管芯上加速器的非限制性示例包含FPGA、GPU、GP-GPU、TPU、DPU、AI处理器和AI推理单元。前述项中的每项还可在外部I/O装置中被实现。IPU(其还可被称为“智能NIC”)当前作为外部I/O装置来实现,但是可在未来装置中的SoC上实现。
在一些实施例中,加速器在外部I/O装置112上实现,外部I/O装置112包括安装在平台的主板或子板或诸如此类的PCIe组件或耦合到平台中的PCIe槽的PCIe卡。备选地,此类外部I/O装置可包括CXL组件或CXL卡。除了PCIe和CXL以外,其它I/O链路技术以及关联的协议也可被采用。
在正在进行的平台操作期间,工作负载从核106被卸载到片上和/或片外加速器。由于应用本身(更具体地,应用的线程和进程)在核上执行,因此存在对核(线程/进程在其上运行的)与加速器之间的通信的需要。取决于被遍历以促进此通信的互连,核-加速器时延可以变化。
时延还可被共享互连路径的其它业务所影响。这在图1中被描绘为潜在瓶颈。通常,瓶颈可能针对插槽内总线以及插槽间总线两者而出现。采用各种协议以及方案以解决总线/互连争用,诸如循环复用协议(round-robin protocol)以及基于优先级的协议。本领域技术人员还将认识到的是,给定协议可针对不同类的消息而采用“线路”的不同集合。
如本文所涉及的,核和加速器之间的通信路径的时延被称作“加速器到核”成本。通常,加速器到核成本可以是给定加速器和给定核之间的互连路径的函数。此路径的此时延在名义上是确定性的。然而,当存在业务争用时,给定路径或者一个或多个路径分段可以是非确定性的。这是不合乎需要的。
根据本文所公开实施例的一些方面,提供了解决方案以使得应用、VM、容器以及编排器(orchestrator)能够定义、请求以及影响对加速器装置的选择,同时允许进程以及线程跨核移动。另外,一些实施例在减少互连资源利用时对核不具有位置的约束,由此减少时延以及提升确定性的性能。
在一个方面中,提升的性能能够通过在不同插槽上的核之间移动应用而获得。如此做的原因是给定核(和/或给定插槽)上的工作负载可能在给定时间段内改变,所述时间段可以是某个短的持续期(例如以数小时的尺度),或更长的持续期(以数天的尺度)。对于针对基于云的服务而采用的平台,给定核可以一次执行若干或更多线程。所述线程被调度以用于使用固定持续期时间片段来执行,其中所述时间片段可使用一个或多个优先级级别来分配。为了简单性,考虑执行具有相同优先级级别的100个线程的核。结果是给定线程将被调度以在核上每100个时间片段被执行一次。
线程调度由操作系统(OS)所管理。OS实现线程调度方案,该方案具有对于鉴于改变工作负载的最大性能的目标。虽然(通常)对于只涉及CPU核的使用的工作负载可满足此目标,但当工作负载中的一些工作负载被卸载到加速器时这变得更有挑战性。虽然加速器的使用最终提升工作负载吞吐量,但核-加速器对的静态使用可能导致低效率。
为获得增加的性能以及工作负载吞吐量,在平台核之间迁移应用进程和线程可能是有利的。在一些情况中,迁移可以在不同插槽上的核之间。同时,在加速器之间移动应用的所卸载的工作负载通常是不利的。另外,取决于平台和/或SoC资源,对于给定类型的所卸载的工作负载可能存在加速器资源的受限复制。
图2a示出过程200的示例,所述过程被实现以在当前方式下在不同插槽上所实现的核之间移动进程和/或线程执行。如所示的,插槽202、204和206中的每个插槽(也被标记并称为插槽0、插槽1和插槽2)包含多个核208。插槽0、1、和2包含相应的加速器210、212和214。插槽0被耦合到存储器216,而插槽1被耦合到存储器218并且插槽2被耦合到存储器220。平台采用NUMA(非一致存储器存取)架构。插槽0、1和2通过插槽到插槽互连221和223而被互连。
关联于应用(App)222的线程和进程初始在插槽0上的核224上运行,如由表示第一时间帧的‘T1’所示的。应用222的代码和数据被存储在应用存储器226中,该存储器226已被分配用于存储器216中的应用。应用222将它的工作负载的一部分卸载到加速器210,该加速器被用于执行一个或多个加速器功能,诸如加密/解密,压缩/解压缩等。如由操作‘1’所指示的,应用222向加速器(在这个情况中是加速器210)注册。
当在核224上运行时,在插槽0中的核224和其它核上执行的各种工作负载增加到某个点,在该点处将应用222的执行移动到另一个核将是有利的。如由操作‘2’所指示的,应用的进程和线程基于OS任务调度而被四处移动。在示例中,应用222的执行被移动到插槽1上的核228,并且时间段‘T2’开始。在时间段‘T2’期间,应用222仍将工作负载的一部分卸载到加速器210。移动的初始开销成本是相当低的,因为只有用于应用线程的核上下文被移动,而应用代码和数据未从应用存储器226移动。然而,核228和加速器210之间的时延成本已相对于核224和加速器210之间的时延成本而增加。特别地,核228和加速器210之间的互连路径包含插槽到插槽互连221。
接近第二时间段‘T2’的结束,应用222的执行被第二次移动到插槽2上的核230。如前述的,应用正使用应用存储器226并且正将它的工作负载的一部分卸载到加速器210。这导致加速器210和核228之间的互连路径的甚至更高的时延,该互连路径现在进一步包含插槽到插槽互连223。
在NUMA架构下,存储器216、218和220中的每个存储器的存储器空间使用通用(跨平台)地址方案而被虚拟化,使得存储器的物理位置从核和加速器的位置解耦。还有,如由项目‘3’所示的,贯穿应用进程和线程的寿命,应用进程和线程保持与加速器(应用曾向该加速器注册)的通信,因而解耦核和加速器的物理位置。而此解耦具有某一益处,图2a中的方式对核到加速器传输时延“距离”或“成本”是不可知的。这可能导致减少的性能,特别是在多插槽平台中。
在本文所提供的解决方案的实施例下,前述方式的方面通过以下方法所解决:当应用在平台中的核之间被移动时,考虑核到加速器“成本”以及使用那些成本来确定将使用的加速器。
图3a的图解300示出此方式的抽象视图。包括P个核302的节点经由互连306而被互连到包括K个加速器装置的节点。K个加速器装置进而经由互连310而被连接到其它节点308。通常,所述其它节点可包含但不限于存储器模块、存储单元、高速缓存代理、附加I/O装置、外部节点(诸如RDMA使能的节点)、PCIe的非透明桥(NTB)等。通常,互连306和310表示用于互连一对节点的无论什么(一个或多个)互连结构。
一对节点之间的每个连接具有关联的成本。例如,核302以及加速器装置304之间的每个连接312具有关联的成本。相似地,加速器装置304和其它节点308之间的连接314具有关联的成本。成本被称为“距离成本度量”。
图3b示出示例性核到加速器成本表350,该表含有核到加速器距离成本度量(本文中还被称为成本信息)。该表包含核ID字段352、加速器字段354以及属性字段356。对于每个核ID 0…N,存在加速器值的集合以及属性的集合。在一个实施例中,核和加速器之间的连接的完全连接矩阵被提供。在另一个实施例中,表条目被提供以用于所选核-加速器对以及关联的连接,核到加速器距离成本度量可用于所选核-加速器对以及关联的连接。
加速器字段354条目包含加速器类型、一个或多个功能、以及包含加速器的物理位置的静态值。这些静态值用作用于由应用(核)对加速器装置的选择的初始数据。例如,当启动后的加速器的初始负载是零,我们能够基于静态属性值来选择加速器。属性字段356条目包含成本、平均负载、连接的持续期等。然而,在运行时间期间,静态值可能不提供最优结果,特别是当加速器装置高负载时。在这个情况中,应当选择在符合要求的可用加速器之间具有更低负载和最少成本的备选装置。作为结果,包含成本、平均负载、连接的持续期等的附加属性字段356被实现。加速器字段354中的静态值以及属性字段356中的运行时间值的使用能够实现在运行时间期间选择最优加速器。
通常,核到加速器成本信息可被存储在一个或多个数据结构(诸如表)中。在一个实施例中,如由核到加速器成本表350所示的,核到加速器成本信息被存储在单个表中。备选地,多个表可被使用。例如,在一个实施例下,针对每个插槽来使用单独的表——即,对于给定插槽,核到加速器成本信息表将包含针对那个插槽的所有核以及针对可由那些核到达的加速器的核到加速器信息。
在一个方面,高级配置与电源接口(ACPI)设施用于访问核到加速器表条目。这包含以下ACPI请求和ACPI响应:
在这些非限制性的示例中,ACPI请求包含请求类型、核ID和加速类型,以及平均负载阈值。ACPI响应包含加速器等级和加速器成本,以及数以秒计的设置持续期。ACPI响应由应用所解释,使得核能够选择具有减少的成本的加速器以用于增加总体系统效率。
图4示出根据一个实施例的实现架构400。在架构400下,应用/OS进行ACPI调用,并且获得使用所选类型的加速器的成本(相关的距离和核到加速器),以及在执行应用的核与那个核之间选择最少成本路径。
架构400中的组件包含在核404上执行的应用402,MSR(机器特定寄存器)406,加速器用户空间库408,耦合到核到加速器成本表350的ACPI BIOS 410,以及加速器412、414和416。每个加速器412、414和416包含工人队列(worker queue),群组,和引擎的相应集合418、420和422。每个加速器412、414和416还包含门户的相应集合,其包含传送(Tx)环以及接收(Rx)环,如由Tx环422、426和430以及Rx环424、428和432所描绘的。
如框434中所示的,门户是PCIe配置空间BAR(基地址寄存器)中的存储器映射输入输出(MMIO)地址。应用向Rx环写入工作描述符,其中描述符指向输入数据在存储器中所缓冲的位置。加速器使描述符脱离Rx环并且使用它来读取输入数据,该输入数据然后由加速器所处理。在完成时,(来自进程的)输出数据被写入到加速器上的存储器(或由加速器进行本地访问)并且完成条目被写入到加速器的Tx环,其中该完成条目指向输出数据的位置。Rx和Tx环的使用、MMIO、以及关联的PCIe设施能够实现使用直接存储器存取(DMA)数据转移而将数据写入到存储器以及从存储器读取数据。
在这个方式下,加速器装置中的加速器(内部)存储器同步以及高速缓存同步被用于维持相容加速状态,使得向加速器装置发出请求的应用(核)能够在应用的寿命期间在加速器装置中无缝改变请求。在一个实施例中,CXL协议能够被利用来异步地在加速器装置之间移动数据,诸如特定于应用的高速缓存和加速器存储器内的队列深度、服务类型(例如加密功能、压缩等),使得核能够向任何加速器发出请求同时仍保持加速器完整性。
如以上在图2中所描述和所示的,应用被允许跨核移动(插槽间移动以及插槽内移动两者)。当需要加速服务时,应用采用加速器用户空间库408中的接口以使用包括ACPIsyscall的ACPI_Request向ACPI BIOS发送核ID。ACPI BIOS然后访问来自核到加速器成本表350的针对核的核到加速器成本信息,并使用ACPI_Response来返回适用的加速器到核距离度量。在一个实施例中,此操作能够被足够不频繁地执行,使得加速器到核成本每P个作业被评估一次。在ACPI_Response中所接收的核到加速器成本信息由应用(或加速器用户空间库408中的代码)所处理以标识支持所需要的加速器功能并且(在支持该加速器功能的加速器装置中)具有最低成本的加速器装置。
在备选方案下,ACPI_Request包含加速器类型,并且ACPI BIOS被编程以查询核到加速器表,以便标识支持所述加速器类型并使用ACPI_Response的变体向应用返回标识符的加速器装置。
MSR寄存器406被用于存储核上正运行的应用线程的状态。例如,MSR=1意味着“此线程已被移动,软件应当进行ACPI syscall以得到最佳加速器装置ID”(例如具有针对那个核的最低成本度量的加速器)。应用线程在得到加速器装置ID以及关联的信息后将MSR设置为0。注意,此MSR能够被定义成线程范围的(thread scoped)。在一个实施例中,这些值能够在检查所更新的信息之前被用于针对应用的P个连续作业。
简化的流程如下:对于每P个作业,读取MSR;如果被设置,则重新读取ACPI,并且请求完成记录的新池(并且释放旧池)。另外,基于此ACPI数据,应用线程了解对于接下来的P个作业将使用哪个装置门户队列。
对于轮询优化,syscall被定义成提供对于描述符和完成记录将使用的存储器缓冲器(距核的最优距离)。这致使进一步的优化;除了最优加速装置选择以外,这些系统地址还将落在高速缓存(LLC片段)(距核和装置的最优距离)中。要注意,这些优化只有当应用被移动到不同核时才被请求,对于例如MSRx=1。以上syscall提供存储器缓冲器以及以高速缓存行定大小的地址的阵列/清单(其被保证给出最佳轮询时间)(由于跨通道的数据的条带(striping)以及存储器的配置,这些在存储器缓冲器中可能是不相接的)。
在一个实施例中,应用能够使用MOVDIR、ENQCMD或传统的CPU存储器写入指令来向加速器门户写入。此实施例被用于请求以及获得加速器装置的MMIO空间中的最佳门户地址,其后,用于加速器卸载的任何机制能够被使用。
与前述内容关联的消息与操作在图4中被描绘。例如,周期性地(例如对于给定核每P个作业),加速器用户空间库408中的代码将针对应用已移动到新核ID的指示来检查MSR寄存器406。如果应用已移动,则新核ID将从适用的MSR寄存器中被读取。
如图4的右上部分中所示的,加速器空间库408中的代码将向ACPI BIOS 410发送包含新核ID的ACPI_Request消息。在一个实施例下,ACPI BIOS 410将针对核ID来检索核到加速器成本信息并且向ACPI_Response消息中的应用返回该信息。在备选实施例下,基于核到加速器成本表350中关于核ID以及加速器类型所过滤的成本信息,ACPI BIOS将(经由加速器用户空间库408接口)使用ACPI_Response消息向应用返回包含加速器的装置ID的信息。
图2b示出解决方案如何被应用于以上所讨论的图2a中所呈现的应用移动。在由相似参考数字所指示时,图2a和2b中的平台的组件是相同的。如由第一操作‘1’所描绘的,应用将它的工作负载的一部分卸载到第一加速器。在第一时间段‘T1’内,应用222正在插槽0上的核224上运行并且工作负载部分被卸载到加速器210。这是与图2a中所使用的配置相同的配置(除了应用222不向加速器注册)。
接近时间段T1的结束,操作系统将应用222的进程和线程的执行移动到插槽1上的核228,如由操作‘2’所描绘的,如前述在图2a中所使用的方式下。然而,在解决方案下并且由项目‘3’所指示的,当应用的进程和线程被移动到新核时,所卸载的工作负载被移动到最靠近的加速器。相应地,结合到新核228的移动,具有针对核228的最低距离成本度量的加速器(该加速器支持针对所卸载的工作负载的适用加速器功能)使用核到加速器成本表中的核到加速器距离成本度量条目而被标识。在这个示例中,满足要求的最靠近的加速器是插槽1上的加速器212。因此,应用222在时间段‘T2’期间将工作负载部分卸载到加速器212。
接近时间段‘T2’的结束,操作系统将应用222的进程和线程的执行移动到插槽2的核230,如前述的。以与第一次移动类似的方式,具有针对核230的最低距离成本度量的加速器(该加速器支持针对所卸载的工作负载的适用加速器功能)使用核到加速器成本表中的核到加速器距离成本度量条目而被标识。所标识的加速器是加速器214,并且应用222在时间段‘T3’期间将工作负载部分卸载到加速器214。
图2a中的当前方式与图2b中的解决方案的方式之间的比较展示了如何通过解决方案来减少核到加速器成本。虽然这是相对简单的示例,但本文所提供的原理和教导可应用于更复杂的平台配置,包含这样的平台:包含片上/管芯上加速器装置以及片外加速器装置两者。还有,所述技术还可应用于通过网络连接所访问的加速器装置。
图5示出流程图,该流程图示出由平台所执行的操作,所述操作用于跨核移动应用(进程和线程)同时改变加速器来减少核到加速器成本。过程在框502中开始,其中应用、虚拟机或容器在核上被实例化。在框504中,应用请求针对某一类型的受支持功能(诸如加密功能、机器学习(ML)等)的加速支持,所述受支持功能将被卸载到加速器。
在框506中,服务请求被转发到加速用户空间库。在框508中,用户空间库执行具有核ID的ACPI syscall以标识具有最低核到加速器成本的、支持所请求功能的加速器装置。在一个实施例中,ACPI syscall使用以上所呈现的ACPI_Request以及ACPI_Response消息结构。
在框510中,初级实例被创建以用于基于来自ACPI syscall的结果所选的加速器装置上的应用,并且作业被提交到对应于加速器装置的加速器ID的门户。在框512中,指示核状态(应用被移动或未被移动)的标志比特连同应用的移动的状态一起被存储在MSR寄存器中。例如,MSRx=1指示应用被移动,并且新的加速器索引将被获得。
在框514中,Tx/Rx环保持同步,使得应用能够向维持相同上下文的任何加速器装置提交作业,同时在门户之间移动。在框516中,应用/用户空间库向ACPI查询(一个或多个)核到加速器成本表来检索接近度和成本以使用加速器。在框518中,OS在不同核之间移动应用,同时通过向更靠近的加速器提交请求而将加速服务更靠近于核移动。在框520中,应用出口将触发所有所保留的资源(诸如跨多个加速器装置的应用上下文)的清除。
图6示出流程图600,该流程图示出操作,所述操作用于初始填充(一个或多个)核到加速器成本表以及用于考虑到平台工作负载的改变而更新核到加速器距离成本度量。过程在开始框602中开始于平台启动以及所关联的初始化操作。在框604中,平台插槽、核、加速器和互连结构被枚举。这可针对PCIe终端装置以及PCIe互连结构而采用常规PCIe枚举。针对其它类型的互连结构可采用其它枚举方案。
在框606中,使用静态预测针对核-加速器对来计算核到加速器距离成本度量。例如,在无业务预测下,互连分段以及适用的接口的时延针对给定核和加速器对之间的互连路径而被聚合。在平均负载条件下,距离成本度量可进一步包含用于针对各种互连路径来预测末端到末端时延的历史测量和/或其它准则。如以上所讨论的,核-加速器对可对应于可能连接的完整矩阵或可针对可支持本文所述解决方案的所选核和/或加速器而被执行。在框608中,用在框606中所计算的核到加速器距离成本度量来填充(一个或多个)核到加速器成本表。
流程图600的其余部分被用于执行考虑到变化的平台工作负载以及当前工作负载状况的核到加速器成本表更新。在框610中,做出更新是否应当被执行的确定。存在能够被用于此确定的各种基础,诸如使用预确定的周期、使用给定核的多个作业的性能、或者指示工作负载的改变的其它状况。
当对决策框610的回答为是时,逻辑进行到框612,其中基于(一个或多个)当前工作负载针对适用的核-加速器对来计算并更新核到加速器成本距离度量。例如,给定核到加速器距离成本度量可以经由实际的端到端测量而获得(例如,将消息/分组用于此目的)或可以基于由平台上的各种接口和队列所暴露的信息来适配现有度量。总的来说,更新可以应用于单独的核或多个核。
在框614中,用在框612中计算的所更新的距离成本度量来更新(一个或多个)核到加速器成本表。逻辑然后循环回至决策框610并且重复所述过程。
除了使用ACPI以外,其它固件/BIOS组件也可被用于实现与通过前述实施例所述及所示功能性类似的功能性。例如,此类固件/BIOS包含但不限于UEFI(统一可扩展固件接口)固件。
本申请提供了如下的技术方案:
技术方案1. 一种在计算平台中实现的方法,所述计算平台包含多个处理器核和多个加速器装置,所述方法包括:
在第一核上执行应用;
将所述应用的工作负载的第一卸载部分卸载到第一加速器装置;
将所述应用的执行从所述第一核移动到第二核;
基于所述第二核的核到加速器成本信息来选择将使用的第二加速器装置;以及
将所述工作负载的所述第一卸载部分卸载到所述第二加速器装置。
技术方案2. 如技术方案1所述的方法,进一步包括:
将核到加速器成本信息存储在所述计算平台上的至少一个数据结构中;
结合将所述应用的执行从所述第一核移动到所述第二核,将包含所述第二核的标识的请求消息发送到被启用以访问所述至少一个数据结构的实体;以及
以下项之一,
返回响应消息,所述响应消息包含该第二核的核到加速器成本信息;或者
返回响应消息,所述响应消息标识具有所述第二核的最低核到加速器度量的加速器。
技术方案3. 如技术方案2所述的方法,进一步包括:
基于当前平台核工作负载来计算多个核-加速器装置对的核到加速器成本;以及
针对所述多个核-加速器装置对来更新所述至少一个数据结构中的所述核到加速器成本。
技术方案4. 如技术方案2所述的方法,其中,被启用以访问所述至少一个数据结构的所述实体包含平台BIOS。
技术方案5. 如技术方案2所述的方法,其中,所述计算平台包含对高级配置与电源接口(ACPI)功能的支持,并且其中,所述请求消息是ACPI系统调用。
技术方案6. 如技术方案1所述的方法,其中,所述计算平台是包含多个插槽的多插槽平台,每个插槽具有多个处理器核,并且其中,所述第一核在第一插槽上以及所述第二核在第二插槽上。
技术方案7. 如技术方案6所述的方法,其中,所述多插槽平台是非一致存储器架构(NUMA)平台,其中,工作负载的所述第一卸载部分具有在所述第一插槽上的存储器中存储的关联数据,并且其中,当所述工作负载的所述第一卸载部分被卸载到所述第二加速器装置时,与所述工作负载的所述第一卸载部分关联的所述数据保留在所述第一插槽上的所述存储器中。
技术方案8. 如技术方案1所述的方法,进一步包括:
采用所述第一加速器装置和所述第二加速器装置的传送和接收环;以及
同步所述第一加速器装置和所述第二加速器装置的所述传送和接收环。
技术方案9. 如技术方案1所述的方法,进一步包括:
当在所述第一核上执行所述应用时,将所述应用的所述工作负载的第二卸载部分卸载到第三加速器装置;
结合将所述应用的执行从所述第一核移动到所述第二核,基于所述第二核的核到加速器成本信息来选择将使用的第四加速器装置;以及
将所述工作负载的所述第二卸载部分卸载到所述第四加速器装置。
技术方案10. 如技术方案9所述的方法,其中,在工作流程中实现所述第一加速器装置和所述第三加速器装置以及在所述工作流程中实现所述第二加速器装置和所述第四加速器装置进一步包括:同步所述第一加速器装置和所述第二加速器装置的状态以及所述第三加速器装置和所述第四加速器装置的状态。
技术方案11. 一种在其上存储有指令的非暂态机器可读介质,所述指令配置成在具有多个处理器核以及多个加速器装置的计算平台中的至少一个处理器核上被执行以使得所述计算平台能够:
指派应用的执行到第一核;
指派将使用的第一加速器装置来处理被卸载到所述第一加速器装置的、所述应用的工作负载的第一卸载部分;
将所述应用的执行从所述第一核移动到第二核;
基于所述第二核的核到加速器成本信息来选择将使用的第二加速器装置;以及
指派将使用的所述第二加速器装置以用于处理所述应用的所述工作负载的所述第一卸载部分。
技术方案12. 如技术方案11所述的非暂态机器可读介质,其中,所述指令的执行进一步使得所述计算平台能够:
结合将所述应用的执行从所述第一核移动到所述第二核,将包含所述第二核的标识的请求消息发送到被启用以访问至少一个数据结构的实体,核到加速器成本信息被存储在所述至少一个数据结构中;以及
以下项之一,
接收响应消息,所述响应消息包含该第二核的核到加速器成本信息;或者
接收响应消息,所述响应消息标识具有所述第二核的最低核到加速器度量的加速器。
技术方案13. 如技术方案12所述的非暂态机器可读介质,其中,所述计算平台包含对高级配置与电源接口(ACPI)功能的支持,并且其中,所述请求消息是ACPI系统调用(syscall)。
技术方案14. 如技术方案11所述的非暂态机器可读介质,其中,所述计算平台包含至少一个数据结构,核到加速器成本信息被存储在所述至少一个数据结构中,并且其中,所述指令的执行进一步使得所述计算平台能够:
基于当前平台核工作负载来计算多个核-加速器装置对的核到加速器成本;以及
针对所述多个核-加速器装置对来更新所述至少一个数据结构中的核到加速器成本。
技术方案15. 如技术方案11所述的非暂态机器可读介质,其中,所述计算平台是包含多个插槽的多插槽平台,每个插槽具有多个处理器核,并且其中,所述第一核在第一插槽上以及所述第二核在第二插槽上。
技术方案16. 一种计算平台,包括:
多个处理器核,所述多个处理器核在操作上耦合到至少一个存储器;以及
多个加速器装置,
其中,所述计算平台被配置成,
在第一核上执行应用;
将所述应用的工作负载的第一卸载部分卸载到第一加速器装置;
将所述应用的执行从所述第一核移动到第二核;
基于所述第二核的核到加速器成本信息来选择将使用的第二加速器装置;以及
将所述工作负载的所述第一卸载部分卸载到所述第二加速器装置。
技术方案17. 如技术方案1所述的计算平台,其中,所述计算平台进一步被配置成:
将核到加速器成本信息存储在至少一个数据结构中;
结合将所述应用的执行从所述第一核移动到所述第二核,将包含所述第二核的标识的请求消息发送到被启用以访问所述至少一个数据结构的实体;以及
以下项之一,
返回响应消息,所述响应消息包含该第二核的核到加速器成本信息;或者
返回响应消息,所述响应消息标识具有所述第二核的最低核到加速器度量的加速器。
技术方案18. 如技术方案17所述的计算平台,其中,所述计算平台包含对高级配置与电源接口(ACPI)功能的支持,并且其中,所述请求消息是ACPI系统调用。
技术方案19. 如技术方案16所述的计算平台,其中,所述计算平台是包含多个插槽的多插槽平台,每个插槽具有多个处理器核,并且其中,所述第一核在第一插槽上以及所述第二核在第二插槽上。
技术方案20. 如技术方案16所述的计算平台,其中,所述计算平台进一步被配置成:
当在所述第一核上执行所述应用时,将所述应用的所述工作负载的第二卸载部分卸载到第三加速器装置;
结合将所述应用的执行从所述第一核移动到所述第二核,基于所述第二核的核到加速器成本信息来选择将使用的第四加速器装置;以及
将所述工作负载的所述第二卸载部分卸载到所述第四加速器装置。
尽管已经参考特定实现描述了一些实施例,但是根据一些实施例,其它实现也是可能的。此外,附图中所示和/或本文描述的元素或其它特征的布置和/或顺序不需要以所示出和描述的特定方式布置。根据一些实施例,许多其它布置是可能的。
在图中所示的每个系统中,在一些情况下,元素可以各自具有相同的附图标记或不同的附图标记,以表明所表示的元素可以不同和/或相似。然而,元素可以足够灵活以具有不同的实现并且与本文示出或描述的系统中的一些或全部一起工作。图中所示的各种元素可以相同或不同。哪个被称为第一元素并且哪个被称为第二元素是任意的。
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语并非旨在作为彼此的同义词。相反,在特定实施例中,“连接”可用于指示两个或更多个元素彼此直接物理或电接触。“耦合”可能意味着两个或更多个元素直接物理接触或电接触。然而,“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此合作或相互作用。此外,“通信地耦合”意味着可能彼此直接接触或不直接接触的两个或更多个元素被使得能够彼此通信。例如,如果组件A连接到组件B,组件B进而连接到组件C,则组件A可以使用组件B作为中间组件而通信地耦合到组件C。
实施例是本发明的实现或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其它实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但是不一定是本发明的所有实施例。各种出现的“实施例”、“一个实施例”或“一些实施例”不一定都是指相同的实施例。
并非本文描述和示出的所有组件、特征、结构、特性等都需要被包括在一个或多个特定实施例中。例如,如果说明书阐明组件、特征、结构或特性“可以”、“可能”、“能够”或“可”被包括,则不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求涉及“一”或“一个”元素,则这并不意味着只存在一个元素。如果说明书或权利要求涉及“附加”元素,则不排除存在多于一个附加元素。
前面的详细描述中的诸如‘K’、‘N’、‘P’等的斜体字母用于描绘整数,并且特定字母的使用不限于特定实施例。此外,可以在单独的权利要求中使用相同的字母来表示单独的整数,或者可以使用不同的字母。此外,详细描述中对特定字母的使用可能与在详细描述中属于相同主题的权利要求中使用的字母相匹配,也可能不匹配。
如上所述,可以通过对应的软件和/或固件组件和应用(诸如由嵌入式处理器或诸如此类所执行的软件和/或固件)来促进本文实施例的各个方面。因此,本发明的实施例可用作或用于支持软件程序、软件模块、固件、和/或分布式软件,其在某种形式的处理器、处理核、或嵌入式逻辑、在处理器或核上运行的虚拟机上执行,或以其它方式在非暂态计算机可读或机器可读存储介质上或内被实施或实现。非暂态计算机可读或机器可读存储介质包括用于以由机器(例如,计算机)可读的形式来存储或传送信息的任何机制。例如,非暂态计算机可读或机器可读存储介质包括以由计算机或计算机器(例如,计算装置、电子系统等)可访问的形式来提供(例如,存储和/或传送)信息的任何机制,诸如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器装置等)。内容可以是直接可执行的(“目标”或“可执行”形式)、源代码、或差异代码(“增量”或“补丁”代码)。非暂态计算机可读或机器可读存储介质还可包括可从其下载内容的存储装置或数据库。非暂态计算机可读或机器可读存储介质还可包括在销售或交付时具有存储在其上的内容的装置或产品。因此,交付具有存储的内容的装置或提供用于通过通信介质下载的内容可以被理解为提供包括具有本文描述的此类内容的非暂态计算机可读或机器可读存储介质的制品。
由本文所述的各种组件所执行的操作和功能可由运行在处理元件上的软件经由嵌入式硬件或诸如此类或硬件和软件的任何组合来实现。此类组件可被实现为软件模块、硬件模块、专用硬件(例如应用特定硬件、ASIC、DSP等)、嵌入式控制器、硬连线电路模块、硬件逻辑等。软件内容(例如数据、指令、配置信息等)可经由包含非暂态计算机可读或机器可读存储介质的制品来提供,所述制品提供表示能够被执行的指令的内容。所述内容可致使计算机执行本文所述的各种功能/操作。
如本文所使用的,由术语“……中的至少一个”联系的项目列表可意味着所列术语的任何组合。例如,短语“A、B或C中的至少一个”可以意味着A;B;C;A和B;A和C;B和C;或A、B和C。
本发明的所示实施例的以上描述(包括在摘要中所描述的内容)并非旨在穷举或将本发明限制为所公开的精确形式。虽然本文为了说明目的描述了本发明的特定实施例和示例,但是如相关领域技术人员将认识到的,在本发明的范围内各种等同修改是可能的。
根据以上详细描述,可以对本发明进行这些修改。在所附权利要求中使用的术语不应被解释为将本发明限制在说明书和附图中公开的特定实施例。相反,本发明的范围将完全由所附权利要求确定,所述权利要求将根据权利要求解释的既定原则来解释。
Claims (20)
1.一种在计算平台中实现的方法,所述计算平台包含多个处理器核和多个加速器装置,所述方法包括:
在第一核上执行应用;
将所述应用的工作负载的第一卸载部分卸载到第一加速器装置;
将所述应用的执行从所述第一核移动到第二核;
基于所述第二核的核到加速器成本信息来选择将使用的第二加速器装置;以及
将所述工作负载的所述第一卸载部分卸载到所述第二加速器装置。
2. 如权利要求1所述的方法,进一步包括:
采用所述第一加速器装置和所述第二加速器装置的传送和接收环;以及
同步所述第一加速器装置和所述第二加速器装置的所述传送和接收环。
3.如权利要求1或权利要求2所述的方法,进一步包括:
将核到加速器成本信息存储在所述计算平台上的至少一个数据结构中;
结合将所述应用的执行从所述第一核移动到所述第二核,将包含所述第二核的标识的请求消息发送到被启用以访问所述至少一个数据结构的实体;以及
以下项之一,
返回响应消息,所述响应消息包含该第二核的核到加速器成本信息;或者
返回响应消息,所述响应消息标识具有所述第二核的最低核到加速器度量的加速器。
4. 如权利要求3所述的方法,进一步包括:
基于当前平台核工作负载来计算多个核-加速器装置对的核到加速器成本;以及
针对所述多个核-加速器装置对来更新所述至少一个数据结构中的所述核到加速器成本。
5.如权利要求3或4所述的方法,其中,被启用以访问所述至少一个数据结构的所述实体包含平台BIOS。
6.如权利要求3-5中任一项所述的方法,其中,所述计算平台包含对高级配置与电源接口(ACPI)功能的支持,并且其中,所述请求消息是ACPI系统调用。
7.如权利要求1-3中任一项所述的方法,其中,所述计算平台是包含多个插槽的多插槽平台,每个插槽具有多个处理器核,并且其中,所述第一核在第一插槽上以及所述第二核在第二插槽上。
8.如权利要求7所述的方法,其中,所述多插槽平台是非一致存储器架构(NUMA)平台,其中,工作负载的所述第一卸载部分具有在所述第一插槽上的存储器中存储的关联数据,并且其中,当所述工作负载的所述第一卸载部分被卸载到所述第二加速器装置时,与所述工作负载的所述第一卸载部分关联的所述数据保留在所述第一插槽上的所述存储器中。
9.如权利要求1-3中任一项所述的方法,进一步包括:
当在所述第一核上执行所述应用时,将所述应用的所述工作负载的第二卸载部分卸载到第三加速器装置;
结合将所述应用的执行从所述第一核移动到所述第二核,基于所述第二核的核到加速器成本信息来选择将使用的第四加速器装置;以及
将所述工作负载的所述第二卸载部分卸载到所述第四加速器装置。
10.如权利要求9所述的方法,其中,在工作流程中实现所述第一加速器装置和所述第三加速器装置以及在所述工作流程中实现所述第二加速器装置和所述第四加速器装置进一步包括:同步所述第一加速器装置和所述第二加速器装置的状态以及所述第三加速器装置和所述第四加速器装置的状态。
11.一种在其上存储有指令的非暂态机器可读介质,所述指令配置成在具有多个处理器核以及多个加速器装置的计算平台中的至少一个处理器核上被执行以使得所述计算平台能够:
指派应用的执行到第一核;
指派将使用的第一加速器装置来处理被卸载到所述第一加速器装置的、所述应用的工作负载的第一卸载部分;
将所述应用的执行从所述第一核移动到第二核;
基于所述第二核的核到加速器成本信息来选择将使用的第二加速器装置;以及
指派将使用的所述第二加速器装置以用于处理所述应用的所述工作负载的所述第一卸载部分。
12. 如权利要求11所述的非暂态机器可读介质,其中,所述计算平台包含至少一个数据结构,核到加速器成本信息被存储在所述至少一个数据结构中,并且其中,所述指令的执行进一步使得所述计算平台能够:
基于当前平台核工作负载来计算多个核-加速器装置对的核到加速器成本;以及
针对所述多个核-加速器装置对来更新所述至少一个数据结构中的核到加速器成本。
13.如权利要求11或12所述的非暂态机器可读介质,其中,所述计算平台是包含多个插槽的多插槽平台,每个插槽具有多个处理器核,并且其中,所述第一核在第一插槽上以及所述第二核在第二插槽上。
14. 如权利要求11-13中任一项所述的非暂态机器可读介质,其中,所述指令的执行进一步使得所述计算平台能够:
结合将所述应用的执行从所述第一核移动到所述第二核,将包含所述第二核的标识的请求消息发送到被启用以访问至少一个数据结构的实体,核到加速器成本信息被存储在所述至少一个数据结构中;以及
以下项之一,
接收响应消息,所述响应消息包含该第二核的核到加速器成本信息;或者
接收响应消息,所述响应消息标识具有所述第二核的最低核到加速器度量的加速器。
15.如权利要求14所述的非暂态机器可读介质,其中,所述计算平台包含对高级配置与电源接口(ACPI)功能的支持,并且其中,所述请求消息是ACPI系统调用(syscall)。
16. 一种计算平台,包括:
多个处理器核,所述多个处理器核在操作上耦合到至少一个存储器;以及
多个加速器装置,
其中,所述计算平台被配置成,
在第一核上执行应用;
将所述应用的工作负载的第一卸载部分卸载到第一加速器装置;
将所述应用的执行从所述第一核移动到第二核;
基于所述第二核的核到加速器成本信息来选择将使用的第二加速器装置;以及
将所述工作负载的所述第一卸载部分卸载到所述第二加速器装置。
17.如权利要求16所述的计算平台,其中,所述计算平台是包含多个插槽的多插槽平台,每个插槽具有多个处理器核,并且其中,所述第一核在第一插槽上以及所述第二核在第二插槽上。
18.如权利要求16或17所述的计算平台,其中,所述计算平台进一步被配置成:
当在所述第一核上执行所述应用时,将所述应用的所述工作负载的第二卸载部分卸载到第三加速器装置;
结合将所述应用的执行从所述第一核移动到所述第二核,基于所述第二核的核到加速器成本信息来选择将使用的第四加速器装置;以及
将所述工作负载的所述第二卸载部分卸载到所述第四加速器装置。
19.如权利要求16-18中任一项所述的计算平台,其中,所述计算平台进一步被配置成:
将核到加速器成本信息存储在至少一个数据结构中;
结合将所述应用的执行从所述第一核移动到所述第二核,将包含所述第二核的标识的请求消息发送到被启用以访问所述至少一个数据结构的实体;以及
以下项之一,
返回响应消息,所述响应消息包含该第二核的核到加速器成本信息;或者
返回响应消息,所述响应消息标识具有所述第二核的最低核到加速器度量的加速器。
20.如权利要求19所述的计算平台,其中,所述计算平台包含对高级配置与电源接口(ACPI)功能的支持,并且其中,所述请求消息是ACPI系统调用。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/529,149 US20220075655A1 (en) | 2021-11-17 | 2021-11-17 | Efficient accelerator offload in multi-accelerator framework |
US17/529149 | 2021-11-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116136783A true CN116136783A (zh) | 2023-05-19 |
Family
ID=80470852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211266309.6A Pending CN116136783A (zh) | 2021-11-17 | 2022-10-17 | 多加速器框架中的高效加速器卸载 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220075655A1 (zh) |
EP (1) | EP4184324A1 (zh) |
CN (1) | CN116136783A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12001386B2 (en) * | 2022-07-22 | 2024-06-04 | Dell Products L.P. | Disabling processor cores for best latency in a multiple core processor |
CN117149442B (zh) * | 2023-10-30 | 2024-02-20 | 山东浪潮数据库技术有限公司 | 一种基于分布式架构数据库的硬件加速方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9940241B1 (en) * | 2014-07-03 | 2018-04-10 | Sanmina Corporation | Network system with cache offload service for flash storage |
US10310897B2 (en) * | 2016-09-30 | 2019-06-04 | Intel Corporation | Hardware accelerators and methods for offload operations |
US10740152B2 (en) * | 2016-12-06 | 2020-08-11 | Intel Corporation | Technologies for dynamic acceleration of general-purpose code using binary translation targeted to hardware accelerators with runtime execution offload |
US10565133B2 (en) * | 2017-09-22 | 2020-02-18 | Intel Corporation | Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels |
-
2021
- 2021-11-17 US US17/529,149 patent/US20220075655A1/en active Pending
-
2022
- 2022-10-14 EP EP22201668.5A patent/EP4184324A1/en active Pending
- 2022-10-17 CN CN202211266309.6A patent/CN116136783A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4184324A1 (en) | 2023-05-24 |
US20220075655A1 (en) | 2022-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
US8954986B2 (en) | Systems and methods for data-parallel processing | |
US9009711B2 (en) | Grouping and parallel execution of tasks based on functional dependencies and immediate transmission of data results upon availability | |
US9678497B2 (en) | Parallel processing with cooperative multitasking | |
US7624257B2 (en) | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads | |
JP6984022B2 (ja) | マルチノードシステムの低電力管理 | |
US10402223B1 (en) | Scheduling hardware resources for offloading functions in a heterogeneous computing system | |
US11940915B2 (en) | Cache allocation method and device, storage medium, and electronic device | |
KR20110118810A (ko) | 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US10932202B2 (en) | Technologies for dynamic multi-core network packet processing distribution | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US10846245B2 (en) | Minimizing usage of hardware counters in triggered operations for collective communication | |
US10152275B1 (en) | Reverse order submission for pointer rings | |
CN116136783A (zh) | 多加速器框架中的高效加速器卸载 | |
US8180998B1 (en) | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations | |
Smolyar et al. | Ioctopus: Outsmarting nonuniform dma | |
CN106250348A (zh) | 一种基于gpu访存特性的异构多核架构缓存管理方法 | |
CN117015767A (zh) | 存储器信道控制器的芯片上互连 | |
Zhao et al. | Gpu-enabled function-as-a-service for machine learning inference | |
CN103197918B (zh) | 多通道时间片组 | |
CN103218259A (zh) | 计算任务的调度和执行 | |
US10061725B2 (en) | Scanning memory for de-duplication using RDMA | |
US9405470B2 (en) | Data processing system and data processing method | |
US10824640B1 (en) | Framework for scheduling concurrent replication cycles |
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 |