CN111722915A - 任务处理方法、装置和*** - Google Patents
任务处理方法、装置和*** Download PDFInfo
- Publication number
- CN111722915A CN111722915A CN202010576220.4A CN202010576220A CN111722915A CN 111722915 A CN111722915 A CN 111722915A CN 202010576220 A CN202010576220 A CN 202010576220A CN 111722915 A CN111722915 A CN 111722915A
- Authority
- CN
- China
- Prior art keywords
- task
- gpu
- virtual machine
- thread
- computing
- 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
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开实施例提供一种任务处理方法、装置和***,其中,方法可以包括:图形处理器GPU在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行至少一个计算任务。
Description
技术领域
本公开涉及机器学习技术,具体涉及一种任务处理方法、装置和***。
背景技术
在数据中心的计算集群中运行着大量人工智能相关的任务,特别是深度学习等需要很高并行计算能力的任务,相应地,计算集群中配置了大量以通用GPU(GraphicsProcessing Unit,图形处理器)为主的计算加速器,但是集群中的GPU资源并没有被充分利用。
相较于CPU而言,数据中心中的GPU租赁价格更为昂贵,加上低利用率造成单位算力的价格进一步提高,导致许多用户不愿意购买GPU资源,更倾向于将深度学习模型推理等轻量级任务运行在CPU上。然而随着这些任务所需的计算资源越来越多,例如,深度学习模型的规模日益增大,CPU上运算逐渐无法满足用户的低延迟要求,利用GPU等通用计算加速器的趋势无法避免。
发明内容
有鉴于此,本公开实施例至少提供一种任务处理方法、装置和***,以提高GPU的利用率。
第一方面,提供一种任务处理方法,所述方法包括:
图形处理器GPU在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行至少一个计算任务。
在一些可选的实施方式中,所述至少一个计算任务为多个计算任务;所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行计算任务,包括:对于所述多个计算任务中的每个计算任务,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述计算任务,其中,所述多个计算任务由多个第二线程并行执行。
在一些可选的实施方式中,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行至少一个计算任务,包括:所述GPU响应于接收到中央处理器CPU发送的所述至少一个计算任务的任务信息,通过所述第一线程上的管理任务调度至少一个第二线程执行所述至少一个计算任务。
在一些可选的实施方式中,所述GPU在第一线程上运行管理任务,包括:所述GPU响应于接收到CPU的任务调度指令,在所述第一线程上运行所述管理任务。
第二方面,提供一种任务处理方法,包括:
CPU向GPU发送任务调度指令,以使得所述GPU基于所述任务调度指令在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
在接收到第一计算任务的情况下,所述CPU向所述GPU发送所述第一计算任务的任务信息,以使得所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述第一计算任务。
在一些可选的实施方式中,所述CPU向所述GPU发送任务调度指令,包括:响应于所述CPU所在的任务处理设备启动,所述CPU向所述GPU发送任务调度指令。
在一些可选的实施方式中,所述CPU向所述GPU发送的所述第一计算任务的任务信息在所述GPU侧被包括所述第一计算任务在内的多个计算任务共享,其中,所述多个计算任务具有相同的任务操作信息。
在一些可选的实施方式中,所述方法还包括:将待处理的所述多个计算任务放入任务队列;通过对所述多个计算任务各自的任务代码进行比较处理,确定所述多个计算任务具有相同的任务操作信息。
在一些可选的实施方式中,在所述CPU和所述GPU包含于服务端虚拟机的情况下,所述方法还包括:所述CPU响应于接收到客户端虚拟机发送的任务处理请求,根据预先配置的服务端页表中的特殊模块寄存器MSR的值,跳转到服务端虚拟机的***调用入口进行***调用;其中,在客户端虚拟机切换到所述服务端虚拟机之前,服务端页表中的MSR中的客户机虚拟地址GVA的值被配置映射到所述服务端虚拟机的***调用入口代码页的客户机物理地址GPA。
在一些可选的实施方式中,在所述CPU和所述GPU包含于服务端虚拟机的情况下,所述方法还包括:所述CPU响应于接收到客户端虚拟机发送的任务处理请求,根据所述客户端虚拟机的标志段寄存器FS或全局段寄存器GS的值,确定所述任务处理请求对应的数据访问地址,其中,在所述客户端虚拟机在切换到所述服务端虚拟机之前,所述客户端虚拟机的虚拟机控制结构VMCS域中的FS或GS的值被配置为所述服务端虚拟机中的对应值。
在一些可选的实施方式中,在所述CPU和所述GPU包含于服务端虚拟机的情况下,所述方法还包括:响应于由于扩展页表缺页导致下陷,所述CPU基于扩展页表中添加的与所述缺页对应的服务端虚拟机地址与物理内存地址之间的映射关系,进行任务处理。
第三方面,提供一种任务处理装置,所述装置应用于GPU,所述装置包括:
管理运行模块,用于在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
任务调度模块,用于在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态。
在一些可选的实施方式中,所述任务调度模块,具体用于:当所述至少一个计算任务为多个计算任务的情况下,对于所述多个计算任务中的每个计算任务,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述计算任务,其中,所述多个计算任务由多个第二线程并行执行。
在一些可选的实施方式中,所述任务调度模块,具体用于:响应于接收到CPU发送的所述至少一个计算任务的任务信息,通过所述第一线程上的管理任务调度至少一个第二线程执行所述至少一个计算任务。
在一些可选的实施方式中,所述管理运行模块,具体用于:响应于接收到CPU的任务调度指令,在所述第一线程上运行所述管理任务。
第四方面,提供一种任务处理装置,所述装置应用于CPU,所述装置包括:
指令发送模块,用于向GPU发送任务调度指令,以使得所述GPU基于所述任务调度指令在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
任务发送模块,用于在接收到第一计算任务的情况下,所述CPU向所述GPU发送所述第一计算任务的任务信息,以使得所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述第一计算任务。
在一些可选的实施方式中,所述指令发送模块,用于响应于所述CPU所在的任务处理设备启动,所述CPU向所述GPU发送任务调度指令。
在一些可选的实施方式中,所述CPU向所述GPU发送的所述第一计算任务的任务信息在所述GPU侧被包括所述第一计算任务在内的多个计算任务共享,其中,所述多个计算任务具有相同的任务操作信息。
第五方面,提供一种任务处理***,所述***包括本公开任一实施例提供的CPU以及本公开任一实施例提供的GPU。
在一些可选的实施例中,所述***还包括:虚拟机监视器,用于在发生由于扩展页表缺页导致的下陷的情况下,在扩展页表中添加与所述缺页对应的服务端虚拟机地址与物理内存地址之间的映射关系。
本公开实施例提供的任务处理方法、装置和***,通过由GPU上的管理任务调度执行计算任务,使得GPU上能够实现对多个计算任务的并行执行,降低了GPU上频繁的任务切换开销,也提高了GPU的利用率。
附图说明
为了更清楚地说明本公开一个或多个实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开至少一个实施例提供的一种任务处理方法的流程图;
图2示出了本公开至少一个实施例提供的管理任务调度计算任务的示意图;
图3示出了本公开至少一个实施例提供的一种GPU虚拟化的***架构;
图4示例了图3架构下的任务处理流程的示意图;
图5示出了本公开至少一个实施例提供的一种任务处理方法的流程图;
图6示出了本公开至少一个实施例提供的核函数调度示意图;
图7示出了本公开至少一个实施例提供的另一种任务处理方法的流程图;
图8示出了本公开至少一个实施例提供的又一种任务处理方法的流程图;
图9示出了本公开至少一个实施例提供的扩展页表切换示意图;
图10示出了本公开至少一个实施例提供的一种任务处理装置的示意图;
图11示出了本公开至少一个实施例提供的另一种任务处理装置的示意图;
图12示出了本公开至少一个实施例提供的又一种任务处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开一个或多个实施例中的技术方案,下面将结合本公开一个或多个实施例中的附图,对本公开一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
本公开实施例提供一种任务处理方法,该方法可以由GPU执行,如图1所示,该方法可以包括如下处理。
在步骤100中,GPU在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态。
例如,每个GPU上可以包括多个流处理器(Streaming Multiprocessor,SM),每一个流处理器中可以运行一个线程块(Thread Block),该线程块包括一组线程,即一个或多个线程,各线程间可以并行执行。GPU在处理任务时,可以通过其中的至少一个线程来处理该任务,其中,该至少一个线程可以为一组或多组线程,或者为一组线程中的部分线程,本公开实施例对此不做限定。
在一些可选实施例中,可以在GPU的一个线程上运行管理任务,也可以在多个线程上(如一组线程)运行该管理任务。本文中后续将运行管理任务的线程称为“第一线程”,此处的“第一”没有限制含义,仅用于与后续出现的其他线程名称上加以区分。
在本公开实施例中,该管理任务用于发起计算任务的执行。在一些例子中,所述管理任务可以包括核函数,GPU可以运行该核函数。管理任务可以在启动后一直保持在运行时状态,即保持该管理任务一直在运行,例如,管理任务可以在GPU运行期间一直保持在运行时状态,但本公开实施例不限于此。
在一些可选实施例中,管理任务可以由CPU发起,相应地,所述管理任务可以是GPU响应于接收到CPU发送的针对该管理任务的任务调度指令,在至少一个线程上运行该管理任务。作为一个例子,CPU可以向GPU发送任务调度指令,该任务调度指令包括管理任务的任务信息以及调度信息,例如,该任务调度指令包括该管理任务的任务代码以及至少一个第一线程的数量等信息,本公开实施例对此不做限定。
CPU可以在满足特定的触发条件的情况下发起该管理任务。作为一种可选的实施方式,CPU可以在所在的任务处理设备启动时,即向GPU发送上述的用于指示执行管理任务的任务调度指令,以使得GPU基于该任务调度指令在至少一个线程上运行该管理任务。其中,CPU和GPU可以属于同一任务处理设备,例如,GPU和GPU可以属于同一个服务端虚拟机,但本公开实施例不限于此。
在另一种可选的实现方式中,CPU可以在确定GPU将要开始有计算任务执行时,向GPU发起上述管理任务,但本公开实施例不限于此。
在步骤102中,GPU通过所述第一线程上的管理任务调度至少一个第二线程执行至少一个计算任务。
GPU在确定需要执行计算任务的情况下,通过管理任务发起计算任务的执行。例如,GPU接收到CPU发送的计算任务信息,其中,该计算任务信息可选地可以包括任务代码以及待处理数据,GPU可以基于该计算任务信息,确定执行该计算任务信息对应的计算任务的线程,并通过管理任务进行计算任务的调度。在一些可选例子中,该计算任务可以为深度学习模型的处理。例如,对神经网络模型中的算子或模块的处理,或者,该计算任务可以为矩阵乘法或其他运算,等等,本公开实施例对计算任务的具体实现不做限定。
在一种可选的实施方式中,假设CPU接收到客户端虚拟机发送的针对计算任务的请求,可以暂且称该计算任务为“第一计算任务”,CPU可以将该第一计算任务的任务信息发送至GPU,其中,CPU向GPU发送的信息可以不包含第一计算任务的调度信息。GPU在接收到该任务信息后,可以通过保持在运行时状态的管理任务调度至少一个第二线程执行所述第一计算任务,即该第一计算任务由管理任务发起,而无需由CPU发起。
例如,假设GPU在32个线程上运行有管理任务,当GPU接收到第一计算任务的任务信息后,可以由上述32个线程中选择一个线程,并由该线程上的管理任务调度GPU上的另一个或多个线程(称为第二线程)去执行第一计算任务。
在一个例子中,当GPU要执行多个计算任务时,对于所述多个计算任务中的每个计算任务,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述计算任务。上述多个计算任务可以由多个第二线程并行执行。
请参见图2的示意,GPU上的线程S1、S2和S3上都运行着管理任务,并保持在运行时状态。线程S1上的管理任务可以调度线程S4去执行第一计算任务,线程S2上的管理任务可以调度线程S5去执行第二计算任务,线程S3上的管理任务可以调度线程S6去执行第三计算任务,这样使得第一计算任务、第二计算任务和第三计算任务实现并行执行。
本实施例的任务处理方法,提供了一种在GPU上执行任务的调度控制方式,该方式通过由GPU上的管理任务调度执行计算任务,使得GPU上能够实现对多个计算任务的并行执行,降低了GPU上频繁的任务切换开销,也提高了GPU的利用率。
在另一个实施例中,当有多个计算任务需要CPU发送至GPU进行处理时,也有可能出现该多个计算任务具有相同的任务操作信息的情况。例如,所述相同的任务操作信息可以是具有相同的核函数,或者相同的任务操作信息可以是基本相同的任务代码。那么,CPU可以向GPU发送一份任务操作信息,该任务操作信息可以被多个计算任务共享。
作为一个例子,CPU可以向GPU发送该多个任务共享的任务操作信息(例如任务代码),并向GPU发送该多个任务中每个任务的待处理数据,其中,多个任务的待处理数据可以在同一或不同消息中携带,本公开实施例对此不做限定。
上述CPU确定多个计算任务具有相同的任务操作信息可以通过多种方式,作为一个可选例子,CPU可以通过对所述多个计算任务各自的任务代码进行比较处理,确定所述多个计算任务具有相同的任务操作信息。例如,可以将对各个计算任务的核函数做哈希运算,若两个计算任务的核函数得到的哈希值相同,则可以认为核函数相同,即这两个计算任务具有相同的任务操作信息,但本公开实施例不限于此。
在一些实施例中,CPU在接收到待处理的多个计算任务后,可以将该多个计算任务放入任务队列;并且比较任务队列中的多个任务是否具有相同的任务操作信息。
通过将具有相同的任务操作信息的多个计算任务发送一份给GPU,以在GPU侧多个计算任务共享,使得能够减少CPU与GPU间的通信开销,提高任务处理效率。
如下将以GPU虚拟化的***架构中采用上述的任务处理方法为例,说明在GPU虚拟化架构中的GPU与CPU之间的通信交互和任务处理。GPU虚拟化可以采用多种虚拟化方式,其中一种GPU虚拟化方法即API转发方式(API Forwarding),这种虚拟化方式采用了客户端/服务端架构(C/S结构),在客户端提供vGPU的抽象给用户,服务端负责管理物理GPU的分配和调度等,客户端将对GPU API的调用请求转发到服务端,待计算处理完毕后再将计算结果由服务端返回客户端。
请参见图3所示,图3示例了API转发的GPU虚拟化方式下的***架构。在该架构中,物理GPU资源由服务端虚拟机负责控制和管理,当客户端虚拟机需要调用GPU执行某个计算任务时,可以向服务端虚拟机发送GPU调用请求,由服务端虚拟机为该客户端虚拟机分配物理GPU资源执行所述计算任务。
该架构下任务处理流程可以参见图4所示的例子。
步骤400中,客户端虚拟机向服务端虚拟机发送GPU调用请求。
例如,客户端虚拟机11上运行有一段任务代码,在运行过程中需要调用GPU来辅助执行某个计算任务。此时,客户端虚拟机11可以向服务端虚拟机12发送GPU调用请求,服务端虚拟机12可以根据该GPU调用请求,控制物理GPU设备执行上述需要辅助客户端的计算任务。
其中,所述的GPU调用请求也可以称为GPU API调用请求,在该API转发的GPU虚拟化方式中,GPU的使用可以是提供API接口,客户端的应用程序可以通过调用该API接口来实现对GPU设备的调用。
实际实施中,客户端虚拟机可以将核函数和待处理的数据传送给服务端虚拟机,服务端虚拟机调用物理GPU设备执行该核函数处理所述处理。其中,核函数(Kernelfunction)是需要在GPU上运行的函数,该核函数可以被GPU上的多个线程(thread)执行,每个线程都会执行核函数里的代码。
步骤402中,服务端虚拟机获取所述客户端虚拟机侧待处理的核函数和数据,并调用GPU执行该核函数对数据进行处理。
例如,核函数和数据由客户端虚拟机向服务端虚拟机的传输,传输方向从主机内存传输到设备内存。其中,CPU端也称为Host端,CPU内存称为Host(主机)内存;GPU端也成为Device(设备)端,其内存称为Device内存。
在核函数和数据拷贝到GPU端之后,物理GPU设备上的线程可以执行该核函数,并通过该核函数处理所述数据,得到任务处理结果。
步骤404中,服务端虚拟机将任务处理结果返回给客户端虚拟机。
在GPU计算得到任务处理结果后,可以由服务端虚拟机将该任务处理结果再拷贝回主机内存,返给客户端虚拟机。
在描述了上述基本的GPU虚拟化***架构以及该架构下的任务处理流程之后,如下说明本公开实施例在该***架构下所做的改进:相关技术中,多个任务(即多个进程)只能以串行化方式使用同一个GPU硬件资源,这也是造成GPU低利用率的其中一个原因。基于此,采用上述本公开实施例提供的任务处理方法,能够使得多个任务可以并行占用同一个GPU资源,进而提高GPU的利用率。具体的,所述的任务可以是轻量级GPU任务,该轻量级GPU任务可以指的是不能单独占满整个GPU资源的任务。
图5示例了在GPU虚拟化的***架构下应用的本公开实施例的任务处理方法,该方法可以包括如下处理:
在步骤500中,服务端虚拟机的CPU向GPU发送任务调度指令,控制GPU的多个第一线程运行对应于管理任务的父核函数,并保持管理任务在运行时状态。
本步骤中,CPU可以在服务端虚拟机启动时,向GPU发送任务调度指令,调度控制GPU上的多个第一线程运行管理任务的核函数,本实施例将该核函数称为父核函数。并且,CPU可以控制该管理任务保持在运行时状态。
示例性的,请结合参见图3,其中一个GPU资源“物理GPU-0”上可以包括多个流处理器(Streaming Multiprocessor,SM),每一个流处理器中可以运行一个线程块(ThreadBlock),该线程块包括一组线程,各线程间可以并行执行。例如,管理任务的父核函数可以运行在物理GPU-0上的多个线程上。
其中所述的物理GPU-0上的多个线程,例如可以是图3中的物理GPU-0上的一个流处理器上的多个线程,或者还可以是物理GPU-0上两个流处理器上的多个线程,等,甚至还可以是物理GPU-0上所有流处理器上的所有线程。具体占用该物理GPU-0上的多少线程,可以是服务端虚拟机根据所述GPU调用请求中携带的线程资源占用参数确定,该线程资源占用参数可以是用于指定占用GPU资源数量的相关参数,例如,可以指定在其中一个SM的所有线程上运行父核函数。
服务端虚拟机的CPU可以控制GPU的上述多个线程均保持管理任务处于运行时状态,例如,该一直处于运行时的父核函数可以是设置成循环执行的状态,以保证其一直处于运行中。
请结合参见图6的示意,图6示意了GPU上的一组线程均在运行上述的父核函数,使得该父核函数在这些线程上保持运行时状态。
在步骤502中,服务端虚拟机的CPU接收客户端虚拟机发送的计算任务,并将计算任务的任务信息发送至GPU。
本步骤中,所述的计算任务可以是客户端虚拟机发送的GPU调用请求,该计算任务请求调用GPU执行任务中的核函数,本实施例称为子核函数。例如,图6中的任务1/任务2/任务3可以是服务端虚拟机接收到三个计算任务,每个计算任务分别请求调用GPU执行其中对应的子核函数。图6示例了三个计算任务,实际实施中还可以是四个计算任务、五个计算任务等,不限制服务端虚拟机接收到的计算任务的数量。
本步骤中,CPU可以将待由GPU处理的计算任务的任务信息发送至GPU,但是区别于管理任务的是,CPU并不负责调度GPU上的线程执行该计算任务,而是在后续的步骤504中由GPU自己调度执行该计算任务。
在步骤504中,GPU通过第一线程上运行的管理任务调度执行计算任务,使得该计算任务在GPU的第二线程上执行。
其中,对于不同的计算任务,GPU可以通过不同的第一线程上的父核函数调用计算任务对应的子核函数。
例如,对于图6中示例的任务1、任务2和任务3这三种计算任务,对于其中的任一计算任务,GPU可以通过其中一个第一线程运行的父核函数调度另一个第二线程执行计算任务对应的子核函数。对于不同的计算任务,可以分别通过不同的第一线程运行的父核函数调用对应的子核函数,使得这三个计算任务可以并行的在GPU运行。
如图6所示,物理GPU-0上的线程41运行的父核函数调度一个第二线程(该第二线程未示出)执行任务1对应的子核函数1,通过控制线程42运行的父核函数调度另一个第二线程执行任务2对应的子核函数2,通过控制线程43运行的父核函数调度又一个第二线程执行任务3对应的子核函数3,最终实现了任务1、任务2和任务3在GPU上的并发执行。
本实施例的任务处理方法,通过采用由运行在GPU线程上的管理任务调度执行计算任务的调用方式,使得多个计算任务可以并行的在同一物理GPU上运行,从而提高了GPU的利用率。
在另一例子中,本公开实施例还提供了一种任务处理方法,本实施例的方法的目的是在多计算任务执行的任务操作信息(例如,核函数)相同时,加快对计算任务的处理速度。如图7所示,该任务处理方法可以包括如下处理:
在步骤700中,服务端虚拟机的CPU接收多个计算任务。
例如,该多个计算任务可以是客户端虚拟机发送给服务端虚拟机的GPU调用请求,请求调用GPU资源执行对应的核函数,以完成某项计算任务。
在步骤702中,CPU将待处理的多个计算任务放入任务队列,并对所述多个计算任务各自的任务代码进行比较处理,确定所述多个计算任务具有相同的任务操作信息。
本步骤中,服务端虚拟机的CPU可以将接收到的多个计算任务放入任务队列中,该任务队列存储有等待处理的各个计算任务。并且还可以维护一个数据库,对于每个接收到的计算任务,都对任务中包含的核函数做哈希,并将哈希值存入数据库中。若发现有哈希值相同的核函数(即核函数一致),则可以将这些哈希值相同的核函数对应的计算任务进行批处理。
例如,假设计算任务A和计算任务B对应的核函数相同,则服务端虚拟机的CPU可以向GPU传送一份该核函数即可,也就是说,在物理GPU资源的设备内存中存储有一份该核函数,计算任务A和计算任务B的任务执行时,GPU线程都会执行这份核函数。具体的,服务端虚拟机的CPU可以将待处理的某个计算任务由任务队列中取出,并将任务发送至GPU处理。
在步骤704中,CPU向GPU发送第一计算任务的任务信息,在所述GPU侧被包括所述第一计算任务在内的多个计算任务共享。
例如,在确定多个计算任务的任务操作信息相同的情况下,CPU可以向GPU发送其中的第一计算任务的任务信息,该第一计算任务的任务操作信息在GPU侧被包括所述第一计算任务在内的多个计算任务共享。
具体实施中,也可能会出现多个计算任务使用的核函数相同,但是要通过该核函数处理的数据不同,这种情况下,服务端虚拟机的CPU可以分别将各个计算任务对应处理的数据发送至GPU,以使得GPU通过一份相同的核函数和各个数据分别处理各个计算任务,并在获得任务处理结果后返回给CPU。
本实施例的任务处理方法,通过将核函数相同的多个请求进行批处理,使得CPU只需要向GPU传输一份核函数,减少了CPU和GPU之间的通信拷贝,提高了任务处理效率。
在又一个实施例中,不论是上面实施例提到的计算任务批处理,还是多个任务并行运行在同一GPU,当客户端虚拟机向服务端虚拟机发送GPU调用请求时,为了在GPU端执行该请求对应的计算任务,客户端虚拟机都需要将该核函数及其要处理的数据提供给服务端虚拟机,这样服务端虚拟机才能控制GPU设备执行该核函数处理数据。
请结合参见图3所示,虚拟机监视器可以为客户端虚拟机、以及服务端虚拟机分别配置对应的扩展页表。例如,服务端虚拟机对应图3中的扩展页表0,两个客户端虚拟机分别对应扩展页表1和扩展页表2。
其中,每一个扩展页表中记录有虚拟机物理地址(GPA)到主机物理地址(HPA)的映射,对于某一个客户端虚拟机来说,假设该客户端虚拟机要向服务端虚拟机发送GPU调用请求,那就需要向该服务端虚拟机提供对应的核函数和数据。并且,例如该核函数和数据实际存储在HPA-1中,客户端虚拟机访问时也要根据扩展页表中的映射关系“GPA-1——HPA-1”(其中的“GPA-1是客户端虚拟机的地址),找到对应的HPA-1访问。客户端虚拟机可以将该地址HPA-1发送给虚拟机监视器,由虚拟机监视器在服务端虚拟机的扩展页表中添加映射“GPA-2——HPA-1””,其中的GPA-2是服务端虚拟机的地址。
由上述可知,假设某个客户端虚拟机在其中一个物理内存地址HPA-2中存储了后续将要执行的核函数和数据,可以在该客户端虚拟机对应的扩展页表中添加映射关系“GPA-12——HPA-2”(GPA-12是客户端虚拟机的地址),该映射关系可以是由虚拟机监视器添加到扩展页表中的。同时,虚拟机监视器还可以在该客户端虚拟机绑定的服务端虚拟机对应的扩展页表中也添加“GPA-21——HPA-2”的映射关系,其中的“GPA-21”是服务端虚拟机的地址,即服务端虚拟机地址与客户端虚拟机地址GPA都指向相同的HPA。
通过上述说明可以看到,服务端虚拟机和客户端虚拟机通过扩展页表的配置和同步修改,使得服务端虚拟机和客户端虚拟机的GPA能够指向相同的HPA,这样可以加快服务端虚拟机获取核函数和数据的效率,并且减少服务端虚拟机与客户端虚拟机之间的内存拷贝。
图8提供了又一实施例的任务处理方法,该方法用于描述服务端虚拟机和客户端虚拟机之间通过扩展页表实现数据获取的流程,如图8所示,该方法可以包括如下处理:
在步骤800中,服务端虚拟机接收客户端虚拟机发送的GPU调用请求。
例如,客户端虚拟机要进行GPU调用时,可以执行跳板代码页,通过该跳板代码页进行扩展页表的切换,即要使用服务端虚拟机对应的扩展页表来访问数据。其中,该跳板代码页可以理解为是负责进程间切换的代码,跳板代码页只要执行VMFUNC指令就可以切换为执行服务端虚拟机的扩展页表。该跳板代码页中存储有客户端虚拟机与其能访问的各个服务端虚拟机的对应关系,根据跳板代码页的执行就可以向某个服务端虚拟机发送GPU调用请求。
如图9所示,该图9示意了客户端虚拟机通过执行跳板代码页切换到服务端虚拟机对应的扩展页表,服务端虚拟机根据该扩展页表访问物理内存获取要执行的核函数和数据。其中,服务端虚拟机和客户端虚拟机的GPA对应同一物理内存地址HPA,由该HPA中获取所述核函数和数据即可。
在步骤802中,服务端虚拟机根据所述GPU调用请求,查询对应的扩展页表,根据所述扩展页表的地址映射信息中指示的物理内存地址,访问所述任务GPU调用请求对应的核函数和数据。
本步骤中,服务端虚拟机查询自己对应的扩展页表,根据扩展页表的地址映射信息(例如,“GPA-2——HPA-1”)就可以访问物理内存地址HPA-1中存储的核函数和数据,这些核函数和数据就是客户端虚拟机需要GPU执行处理的。
在步骤804中,服务端虚拟机调用GPU执行该核函数处理数据。
服务端虚拟机可以控制物理GPU执行该核函数,得到任务处理结果后返回给客户端虚拟机。
在客户端虚拟机执行VMFUNC指令切换到服务端虚拟机之前,客户端虚拟机首先进行一系列控制流切换前的准备工作,准备完成后再切换到服务端虚拟机。该准备工作可以是虚拟机监视器或客户端虚拟机做的一些预先配置,如下:
在一个例子中,为了使得切换后服务端虚拟机能够在任务处理过程中正常的进行***调用(system call),虚拟机监视器可以预先将服务端页表中的MSR(Model SpecificRegister,特殊模块寄存器)中的客户机虚拟地址GVA(guest virtual address)的值配置映射到服务端虚拟机的***调用入口代码页的客户机物理地址GPA(guest physicaladdress)。
上述预配置映射关系的目的是当执行流处于服务端虚拟机的地址空间中时,能够在用户态应用程序发起***调用后正确地执行***调用。现代操作***大都使用SYSCALL指令进行***调用,在执行SYSCALL指令时CPU会根据LSTAR MSR的值跳转到***调用的入口,默认配置下在虚拟机中修改LSTAR MSR会触发虚拟机下陷由虚拟机监视器完成操作,因此通过上述使用添加映射的方式避免了后续控制流切换过程中造成虚拟机下陷,在添加了上述映射后,代理执行过程中发起***调用时可以凭借客户端LSTAR MSR的值访问到服务端***调用的入口,从而正常的与内核进行交互。
如上经过映射关系的预配置,服务端虚拟机的CPU可以响应于接收到客户端虚拟机发送的任务处理请求,根据预先配置的服务端页表中的特殊模块寄存器MSR的值,跳转到所述服务端虚拟机的***调用入口正常的进行***调用。
在另一个例子中,客户端虚拟机返回到用户态,调用跳板代码页提供的接口,开始执行控制流切换相关的代码,但是,为了使得切换后服务端虚拟机能够在任务处理过程中正常的进行数据访问,在切换地址空间之前,客户端进程需要临时修改客户端虚拟机的虚拟机控制结构VMCS(Virtual Machine Control Structure)域中的FS.base或GS.base的值为服务端虚拟机中的FS(Flag segment标志段寄存器)或GS(Global segment,全局段寄存器)的对应值。
上述处理的目的是保证在服务端虚拟机的执行过程中,段寄存器的访问机制在服务端虚拟机中可以正常工作。现代操作***中有大量数据需要经过段寄存器机制进行访问,它们的基地址存储在对应虚拟机的VMCS中的某些域中,不会随着地址空间的变化而改变,如果不做对应的调整,在服务端虚拟机执行任务期间就可能会根据错误的地址访问到错误的数据。上述修改段寄存器数值的处理预先替换好了正确值,这样一来在地址空间切换前后段寄存器访问机制取得的地址均为合法地址。虽然本步骤采用了替换寄存器的值而非添加映射的方法,但是虚拟机监视器默认对于虚拟机内读写FS.base和GS.base两个寄存器的操作是不做拦截的,所以依然不会引发任何的虚拟机下陷。
经过上述配置,切换后的服务端虚拟机的CPU可以响应于接收到客户端虚拟机发送的任务处理请求,根据所述客户端虚拟机的标志段寄存器FS或全局段寄存器GS的值,确定所述任务处理请求对应的数据访问地址,执行处理任务过程中的数据访问。例如,内核stack会通过GS的值加上一个偏移量作为地址,访问该地址对应的数据。
在又一个例子中,在客户端虚拟机执行VMFUNC指令切换到服务端虚拟机之后,服务端虚拟机执行任务的过程中,还可能出现的情况是发生虚拟机下陷,而且这种下陷是扩展页表缺页导致的下陷,造成这次下陷的原因来自于服务端虚拟机。当发生了扩展页表缺页导致的下陷后,虚拟机监视器可以判断是否是在服务端虚拟机的任务处理过程中发生的缺页错误,如果是,则提取客户端虚拟机VMCS中缺页错误有关的参数,对于服务端虚拟机执行缺页处理函数,将缺页对应的服务端虚拟机的GPA到HPA的映射添加到服务端虚拟机的扩展页表中。经过上述配置,服务端虚拟机的CPU可以基于扩展页表中添加的上述地址映射关系继续进行任务处理。如上,该处理保证了服务端虚拟机在任务处理过程中对扩展页表缺页错误的正确处理。
图10提供了一个例子的任务处理装置,该装置可以应用于GPU,使得GPU可以执行本公开任一实施例的任务处理方法。如图10所示,该装置可以包括:管理运行模块1001和任务调度模块1002。
管理运行模块1001,用于在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态。
任务调度模块1002,用于在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态。
在一个例子中,任务调度模块1002,具体用于:当所述至少一个计算任务为多个计算任务的情况下,对于所述多个计算任务中的每个计算任务,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述计算任务,其中,所述多个计算任务由多个第二线程并行执行。
在一个例子中,任务调度模块1002,具体用于:响应于接收到CPU发送的所述至少一个计算任务的任务信息,通过所述第一线程上的管理任务调度至少一个第二线程执行所述至少一个计算任务。
在一个例子中,管理运行模块1001,具体用于:响应于接收到CPU的任务调度指令,在所述第一线程上运行所述管理任务。
图11提供了另一个例子的任务处理装置,该装置可以应用于CPU,使得CPU可以执行本公开任一实施例的任务处理方法。如图11所示,该装置可以包括:指令发送模块1101和任务发送模块1102。
指令发送模块1101,用于向GPU发送任务调度指令,以使得所述GPU基于所述任务调度指令在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态。
任务发送模块1102,用于在接收到第一计算任务的情况下,所述CPU向所述GPU发送所述第一计算任务的任务信息,以使得所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述第一计算任务。
在一个例子中,指令发送模块1101,用于响应于所述CPU所在的任务处理设备启动,所述CPU向所述GPU发送任务调度指令。
在一个例子中,所述CPU向所述GPU发送的所述第一计算任务的任务信息在所述GPU侧被包括所述第一计算任务在内的多个计算任务共享,其中,所述多个计算任务具有相同的任务操作信息。
在一个例子中,任务发送模块1102,还用于:将待处理的所述多个计算任务放入任务队列;通过对所述多个计算任务各自的任务代码进行比较处理,确定所述多个计算任务具有相同的任务操作信息。
在一个例子中,在所述CPU和所述GPU包含于服务端虚拟机的情况下,如图12所示,所述装置还包括如下至少一个模块:
调用处理模块1103,用于响应于接收到客户端虚拟机发送的任务处理请求,根据预先配置的服务端页表中的寄存器MSR的值,跳转到所述服务端虚拟机的***调用入口进行***调用;其中,在所述客户端虚拟机切换到所述服务端虚拟机之前,所述服务端页表中的寄存器MSR中的GVA的值被配置映射到所述服务端虚拟机的***调用入口代码页的GPA。
访问处理模块1104,用于响应于接收到客户端虚拟机发送的任务处理请求,根据所述客户端虚拟机的段寄存器FS或GS的值,确定所述任务处理请求对应的数据访问地址,其中,在所述客户端虚拟机在切换到所述服务端虚拟机之前,所述客户端虚拟机的VMCS域中的段寄存器FS或GS的值被配置为所述服务端虚拟机中的对应值。
任务处理模块1105,用于响应于由于扩展页表缺页导致下陷,所述CPU基于扩展页表中添加的与所述缺页对应的服务端虚拟机地址与物理内存地址之间的映射关系,进行任务处理。
在一些实施例中,上述装置可以用于执行上文所述的对应任意方法,为了简洁,这里不再赘述。
本公开实施例还提供一种任务处理***,该***可以包括CPU和GPU。其中,所述CPU可以是本公开任一实施例提供的CPU。所述GPU可以是本公开任一实施例提供的GPU。
例如,所述CPU,用于向GPU发送用于启动管理任务的任务调度指令,以及在接收到第一计算任务的情况下向所述GPU发送所述第一计算任务的任务信息。所述GPU,用于基于所述任务调度指令在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;以及在接收到所述第一计算任务的任务信息的情况下,通过所述第一线程上的管理任务调度至少一个第二线程执行所述第一计算任务。
在一个例子中,该***还包括:虚拟机监视器,用于在发生由于扩展页表缺页导致的下陷的情况下,在扩展页表中添加与所述缺页对应的服务端虚拟机地址与物理内存地址之间的映射关系。
本公开实施例还提供了一种电子设备,所述设备包括存储器、处理器,所述存储器用于存储计算机可读指令,所述处理器用于调用所述计算机指令,实现本说明书任一实施例的方法。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本说明书任一实施例的方法。
本领域技术人员应明白,本公开一个或多个实施例可提供为方法、***或计算机程序产品。因此,本公开一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开实施例还提供一种计算机可读存储介质,该存储介质上可以存储有计算机程序,所述程序被处理器执行时实现本公开任一实施例描述的用于文字识别的神经网络的训练方法的步骤,和/或,实现本公开任一实施例描述的文字识别方法的步骤。
其中,本公开实施例所述的“和/或”表示至少具有两者中的其中一个,例如,“多和/或B”包括三种方案:多、B、以及“多和B”。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本公开中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本公开中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本公开中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPG多(现场可编程门阵列)或多SIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PD多)、移动音频或视频播放器、游戏操纵台、全球定位***(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本公开包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本公开内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和***通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本公开一个或多个实施例的较佳实施例而已,并不用以限制本公开一个或多个实施例,凡在本公开一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开一个或多个实施例保护的范围之内。
Claims (20)
1.一种任务处理方法,其特征在于,所述方法包括:
图形处理器GPU在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行至少一个计算任务。
2.根据权利要求1所述的方法,其特征在于,所述至少一个计算任务为多个计算任务;
所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行计算任务,包括:
对于所述多个计算任务中的每个计算任务,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述计算任务,其中,所述多个计算任务由多个第二线程并行执行。
3.根据权利要求1或2所述的方法,其特征在于,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行至少一个计算任务,包括:
所述GPU响应于接收到中央处理器CPU发送的所述至少一个计算任务的任务信息,通过所述第一线程上的管理任务调度至少一个第二线程执行所述至少一个计算任务。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述GPU在第一线程上运行管理任务,包括:
所述GPU响应于接收到CPU的任务调度指令,在所述第一线程上运行所述管理任务。
5.一种任务处理方法,其特征在于,包括:
CPU向GPU发送任务调度指令,以使得所述GPU基于所述任务调度指令在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
在接收到第一计算任务的情况下,所述CPU向所述GPU发送所述第一计算任务的任务信息,以使得所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述第一计算任务。
6.根据权利要求5所述的方法,其特征在于,所述CPU向所述GPU发送任务调度指令,包括:
响应于所述CPU所在的任务处理设备启动,所述CPU向所述GPU发送任务调度指令。
7.根据权利要求5或6所述的方法,其特征在于,所述CPU向所述GPU发送的所述第一计算任务的任务信息在所述GPU侧被包括所述第一计算任务在内的多个计算任务共享,其中,所述多个计算任务具有相同的任务操作信息。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
将待处理的所述多个计算任务放入任务队列;
通过对所述多个计算任务各自的任务代码进行比较处理,确定所述多个计算任务具有相同的任务操作信息。
9.根据权利要求5至8中任一项所述的方法,其特征在于,在所述CPU和所述GPU包含于服务端虚拟机的情况下,所述方法还包括:
所述CPU响应于接收到客户端虚拟机发送的任务处理请求,根据预先配置的服务端页表中的特殊模块寄存器MSR的值,跳转到所述服务端虚拟机的***调用入口进行***调用;其中,在所述客户端虚拟机切换到所述服务端虚拟机之前,所述服务端页表中的MSR中的客户机虚拟地址GVA的值被配置映射到所述服务端虚拟机的***调用入口代码页的客户机物理地址GPA。
10.根据权利要求5至9中任一项所述的方法,其特征在于,在所述CPU和所述GPU包含于服务端虚拟机的情况下,所述方法还包括:
所述CPU响应于接收到客户端虚拟机发送的任务处理请求,根据所述客户端虚拟机的标志段寄存器FS或全局段寄存器GS的值,确定所述任务处理请求对应的数据访问地址,其中,在所述客户端虚拟机在切换到所述服务端虚拟机之前,所述客户端虚拟机的虚拟机控制结构VMCS域中的FS或GS的值被配置为所述服务端虚拟机中的对应值。
11.根据权利要求5至10中任一项所述的方法,其特征在于,在所述CPU和所述GPU包含于服务端虚拟机的情况下,所述方法还包括:
响应于由于扩展页表缺页导致下陷,所述CPU基于扩展页表中添加的与所述缺页对应的服务端虚拟机地址与物理内存地址之间的映射关系,进行任务处理。
12.一种任务处理装置,其特征在于,所述装置应用于GPU,所述装置包括:
管理运行模块,用于在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
任务调度模块,用于在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态。
13.根据权利要求12所述的装置,其特征在于,
所述任务调度模块,具体用于:当所述至少一个计算任务为多个计算任务的情况下,对于所述多个计算任务中的每个计算任务,所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述计算任务,其中,所述多个计算任务由多个第二线程并行执行。
14.根据权利要求12或13所述的装置,其特征在于,
所述任务调度模块,具体用于:响应于接收到CPU发送的所述至少一个计算任务的任务信息,通过所述第一线程上的管理任务调度至少一个第二线程执行所述至少一个计算任务。
15.根据权利要求12至14任一所述的装置,其特征在于,
所述管理运行模块,具体用于:响应于接收到CPU的任务调度指令,在所述第一线程上运行所述管理任务。
16.一种任务处理装置,其特征在于,所述装置应用于CPU,所述装置包括:
指令发送模块,用于向GPU发送任务调度指令,以使得所述GPU基于所述任务调度指令在第一线程上运行管理任务,其中,所述管理任务保持在运行时状态;
任务发送模块,用于在接收到第一计算任务的情况下,所述CPU向所述GPU发送所述第一计算任务的任务信息,以使得所述GPU通过所述第一线程上的管理任务调度至少一个第二线程执行所述第一计算任务。
17.根据权利要求16所述的装置,其特征在于,
所述指令发送模块,用于响应于所述CPU所在的任务处理设备启动,所述CPU向所述GPU发送任务调度指令。
18.根据权利要求16或17所述的装置,其特征在于,所述CPU向所述GPU发送的所述第一计算任务的任务信息在所述GPU侧被包括所述第一计算任务在内的多个计算任务共享,其中,所述多个计算任务具有相同的任务操作信息。
19.一种任务处理***,其特征在于,包括权利要求16至18中任一项所述的CPU和权利要求12至15中任一项所述的GPU。
20.根据权利要求19所述的***,其特征在于,所述***还包括:
虚拟机监视器,用于在发生由于扩展页表缺页导致的下陷的情况下,在扩展页表中添加与所述缺页对应的服务端虚拟机地址与物理内存地址之间的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010576220.4A CN111722915A (zh) | 2020-06-22 | 2020-06-22 | 任务处理方法、装置和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010576220.4A CN111722915A (zh) | 2020-06-22 | 2020-06-22 | 任务处理方法、装置和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111722915A true CN111722915A (zh) | 2020-09-29 |
Family
ID=72568255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010576220.4A Pending CN111722915A (zh) | 2020-06-22 | 2020-06-22 | 任务处理方法、装置和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722915A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114003A (zh) * | 2022-07-04 | 2022-09-27 | 上海交通大学 | Gpu动态多任务可控并发执行方法及*** |
-
2020
- 2020-06-22 CN CN202010576220.4A patent/CN111722915A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114003A (zh) * | 2022-07-04 | 2022-09-27 | 上海交通大学 | Gpu动态多任务可控并发执行方法及*** |
CN115114003B (zh) * | 2022-07-04 | 2024-05-28 | 上海交通大学 | Gpu动态多任务可控并发执行方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10191759B2 (en) | Apparatus and method for scheduling graphics processing unit workloads from virtual machines | |
US9417912B2 (en) | Ordering tasks scheduled for execution based on priority and event type triggering the task, selecting schedulers for tasks using a weight table and scheduler priority | |
US9465660B2 (en) | Performing a task in a system having different types of hardware resources | |
US11093297B2 (en) | Workload optimization system | |
US9098337B2 (en) | Scheduling virtual central processing units of virtual machines among physical processing units | |
US9201823B2 (en) | Pessimistic interrupt affinity for devices | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
WO2012000820A1 (en) | Accelerator for virtual machine migration | |
CN105579959A (zh) | 硬件加速器虚拟化 | |
CN108509251B (zh) | 一种适用于可信执行环境中的安全虚拟化*** | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
US9600314B2 (en) | Scheduler limited virtual device polling | |
US11573815B2 (en) | Dynamic power management states for virtual machine migration | |
Diab et al. | Dynamic sharing of GPUs in cloud systems | |
US9122522B2 (en) | Software mechanisms for managing task scheduling on an accelerated processing device (APD) | |
US9158601B2 (en) | Multithreaded event handling using partitioned event de-multiplexers | |
CN111722915A (zh) | 任务处理方法、装置和*** | |
JP2007280397A (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
US9766917B2 (en) | Limited virtual device polling based on virtual CPU pre-emption | |
US20140189701A1 (en) | Methods, systems and apparatuses for processor selection in multi-processor systems | |
CN116048756A (zh) | 一种队列调度方法、装置及相关设备 | |
CN114610485A (zh) | 资源处理***以及方法 | |
CN109656708B (zh) | Android的动画播放限制方法、存储介质、电子设备及*** | |
CN113439260A (zh) | 针对低时延存储设备的i/o完成轮询 | |
US9910804B2 (en) | Input/output method in virtual machine environments |
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 |