CN110851285B - 一种基于gpu虚拟化的资源复用方法、装置及设备 - Google Patents
一种基于gpu虚拟化的资源复用方法、装置及设备 Download PDFInfo
- Publication number
- CN110851285B CN110851285B CN202010037822.2A CN202010037822A CN110851285B CN 110851285 B CN110851285 B CN 110851285B CN 202010037822 A CN202010037822 A CN 202010037822A CN 110851285 B CN110851285 B CN 110851285B
- Authority
- CN
- China
- Prior art keywords
- resource
- call request
- api call
- framework layer
- sent
- 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.)
- Active
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Abstract
本说明书实施例公开了一种基于GPU虚拟化的资源复用方法、装置及设备。方案包括:通过在客户端预先存储对于第一资源的设置参数,从而令客户端本地可以处理AI框架层发送的用于创建第一资源的第一API调用请求,以及对所述第一资源进行设置的第二API调用请求,无需转发GPU驱动;并令客户端在获取到AI框架层发送的用于基于第一资源进行计算的第三API调用请求时,将生成的针对第一资源的第一计算指令以及预先存储的对于第一资源的设置参数,发送至GPU驱动,从而利用GPU虚拟化技术执行AI任务。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于GPU虚拟化的资源复用方法、装置及设备。
背景技术
图形处理器(Graphics Processing Unit,GPU)是一种可以用于对图像和图形进行高效计算处理的微处理器。越来越多的人工智能技术开始基于GPU而实现。为对GPU资源进行合理分配,GPU虚拟化技术应运而生。使用GPU虚拟化技术之后,可以让不同的人工智能(Artificial Intelligence,AI)任务去共享一个或多个GPU上的资源执行计算。这种安全且高效的GPU资源管理方式,被越来越多的用户使用。但是,目前利用GPU虚拟化技术执行AI任务时,基于GPU虚拟化技术执行AI任务时的运行效率还有待提高。
发明内容
有鉴于此,本申请实施例提供了一种基于GPU虚拟化的资源复用方法、装置及设备,用于提高基于GPU虚拟化技术执行AI任务时的运行效率。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种基于GPU虚拟化的资源复用方法,应用于GPU虚拟化系统中的客户端,包括:
获取AI框架层发送的用于创建第一资源的第一API调用请求;
确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数;
向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址;
获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求;
向所述AI框架层反馈用于表示设置成功的消息;
获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求;
基于所述第三API调用请求,生成针对所述第一资源的第一计算指令;
将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
本说明书实施例提供的一种基于GPU虚拟化的资源复用装置,应用于GPU虚拟化系统中的客户端,包括:
第一获取模块,用于获取AI框架层发送的用于创建第一资源的第一API调用请求;
第一确定模块,用于确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数;
第一反馈模块,用于向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址;
第二获取模块,用于获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求;
第二反馈模块,用于向所述AI框架层反馈用于表示设置成功的消息;
第三获取模块,用于获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求;
第一计算指令生成模块,用于基于所述第三API调用请求,生成针对所述第一资源的第一计算指令;
第一发送模块,用于将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
本说明书实施例提供的一种基于GPU虚拟化的资源复用设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取AI框架层发送的用于创建第一资源的第一API调用请求;
确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数;
向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址;
获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求;
向所述AI框架层反馈用于表示设置成功的消息;
获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求;
基于所述第三API调用请求,生成针对所述第一资源的第一计算指令;
将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过在GPU虚拟化系统中的客户端中预先存储对于第一资源的设置参数,令该客户端可以先行反馈AI框架层发送的第一API调用请求以及第二API调用请求,且无需将第一API调用请求以及第二API调用请求发送至GPU驱动进行处理,使得AI框架层无需等待GPU驱动反馈对于第一API调用请求与第二API调用请求的处理结果,以减少AI框架层等待请求响应的耗时,进而提升AI任务的执行效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例中的一种基于GPU虚拟化的资源复用方法的应用场景的示意图;
图2为本说明书实施例提供的一种基于GPU虚拟化的资源复用方法的流程示意图;
图3为本说明书实施例中提供的一种将第二资源对应的数据的地址指针写入队列的场景示意图;
图4为本说明书实施例提供的对应于图2的一种基于GPU虚拟化的资源复用装置的结构示意图;
图5为本说明书实施例提供的对应于图2的一种基于GPU虚拟化的资源复用设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本说明书实施例提供的一种基于GPU虚拟化的资源复用方法的应用场景示意图。如图1所示, AI框架层1011以及GPU虚拟化系统的客户端1012可以搭载在用户的终端设备101上。其中,AI框架层1011可以用于搭建各类模块(例如,卷积神经网络CNN,循环神经网络 RNN, 长短期记忆网络LSTM, 生成对抗网络GAN等),并控制各类模型在CPU或GPU上运行。在实际应用中,AI框架层可以采用TensorFlow、PyTorch或Caffe2等实现。
GPU虚拟化系统的客户端1012可以与GPU虚拟化系统的服务端102以及用于提供资源的GPU104进行交互,从而实现对虚拟GPU资源的发现、申请、访问以及内置优化。GPU虚拟化系统的客户端1012还可以记录模型的一个迭代周期内所需的资源及状态信息,并对记录的资源及状态信息进行复用,以减少向GPU104中的GPU驱动1041发送API调用请求的次数。
其中,GPU104可以包括GPU驱动1041以及GPU硬件1042。GPU驱动1041可以对客户端1012发送的API调用请求进行响应。而GPU硬件1042则可以利用nvidia P100 GPU、NVIDIATesla V100以及GeForce GTX 1080等实现。
GPU虚拟化系统的服务端102可以用于负责GPU服务与虚拟化管理,具体的,GPU虚拟化系统的服务端102可以根据配置策略,划分并预分配虚拟GPU资源,保存虚拟与物理资源的影射关系,并上报GPU资源调用请求到GPU资源调度器103。GPU资源调度器103则可以对GPU资源调用请求进行响应,实现对GPU104中的资源的调度、分配。在实际应用中,GPU资源调度器103可以采用K8S或Kubemaker实现。
发明人经研究发现,当利用虚拟化GPU资源执行AI任务时,GPU虚拟化系统中的客户端需要通过应用程序编程接口(Application Programming Interface,API)向GPU驱动调用各个算子所需的资源。例如,针对AI任务中的卷积(Convolution)算子而言,调用的API多达14个。表1为卷积算子所对应的API信息表,如表1所示:
API类型 | 调用API的作用 | API个数 | 调用类型 |
创建资源描述符 | 创建输入数据描述符、输出数据描述符、权重数据描述符以及卷积描述符 | 4个 | 同步调用 |
设置资源描述符的属性 | 设置形状、填充、数据类型、数据对齐和卷积算法等属性 | 4个 | 同步调用 |
设置计算模式 | 设置是否采用混合精度(TensorCore) | 1个 | 同步调用 |
提交计算任务 | 提交卷积计算任务 | 1个 | 异步调用 |
删除资源描述符 | 卷积计算任务完成后删除资源描述符 | 4个 | 同步调用 |
根据表1中的内容,可知,针对卷积算子,GPU虚拟化系统中的客户端需执行的14次API调用中, 13次为同步调用,1次为异步调用。由于在对API进行同步调用时,客户端都会将API对应的操作数据转发至GPU驱动,等待GPU驱动处理完成后,客户端再向AI框架层反馈调用成功的消息,即,AI框架层需要在接收到客户端反馈的API调用结果后,才能继续对下一个API进行调用,从而对AI任务的延迟影响较大。且AI任务通常需要执行几万到几十万轮迭代运算,而每轮迭代运算都需要反复的调用这些同步API,从而严重影响AI任务的运算效率。
针对上述问题,发明人经研究发现,当AI任务采用的是诸如深度神经网络(DeepNeural Networks, DNN)这类的算法时,每轮迭代运算所需执行的算子通常是相同的。因此,可以通过获取并缓存AI任务中的一个迭代周期内的各个算子所需的资源及状态信息,并在各个循环迭代过程中对这些资源和状态信息进行重复使用,从而可以大幅地减少对API的调用操作,以优化基于GPU虚拟化技术执行AI任务时的运行效率。
图2为本说明书实施例提供的一种基于GPU虚拟化的资源复用方法的流程示意图。从程序角度而言,流程的执行主体可以为GPU虚拟化系统中的客户端。如图2所示,该流程可以包括以下步骤:
步骤202:获取AI框架层发送的用于创建第一资源的第一API调用请求。
在本说明书实施例中,第一API调用请求可以用于创建与第一资源对应的资源描述符。在实际应用中,第一API调用请求可以包括多个进行同步调用的API调用请求,例如,第一API调用请求可以包括用于创建输入数据描述符的API调用请求、用于创建输出数据描述符的API调用请求、用于创建权重数据描述符的API调用请求以及用于创建卷积描述符的API调用请求等。
步骤204:确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数。
在本说明书实施例中,GPU虚拟化系统的客户端101所在的终端设备中可以预先存储有与第一资源相匹配的数据,该与第一资源相匹配的数据可以为对第一资源的资源描述符的属性进行设置后所生成的数据。因此,当客户端101接收到AI框架层发送的用于创建第一资源的第一API调用请求时,客户端101无需将第一API调用请求发送至GPU驱动以建立与第一资源对应的数据,而只需确定预先存储的与第一资源相匹配的数据所在的内存地址即可。
在实际应用中,AI任务启动后所执行的前N个迭代循环过程通常为预热(warm up)阶段,AI任务可以通过AI任务的预热阶段去构建计算图、分配资源、寻找最佳的算子。在本说明书实施例中,GPU虚拟化系统的客户端101可以借助预热阶段来获取并存储与第一资源相匹配的数据,以便于后续使用。
步骤206:向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址。
在本说明书实施例中,当确定出预先存储的与第一资源相匹配的数据所在的内存地址后,可以向AI框架层反馈与第一资源对应的资源描述符创建成功的消息,该消息可以携带确定出的与第一资源相匹配的数据所在的内存地址。
步骤208:获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求。
在本说明书实施例中,第二API调用请求可以包含多个同步调用的API调用请求,该第二API调用请求可以用于请求对第一资源对应的资源描述符进行形状、填充、数据类型、数据对齐等属性的设置。
步骤210:向所述AI框架层反馈用于表示设置成功的消息。
在本说明书实施例中,由于用户的终端设备中预先存储了与第一资源相匹配的数据,即对第一资源的资源描述符的属性进行设置后所生成的数据。因此,当GPU虚拟化系统的客户端101获取到对第一资源进行设置的第二API调用请求时,无需将第二API调用请求发送至GPU驱动进行处理,而是可以直接向AI框架层反馈用于表示对第一资源的资源描述符的属性设置成功的消息。从而可以减少AI框架层等待GPU驱动反馈对于第二API调用请求的响应结果所用的时间,进而有利于提升AI任务的执行效率。
步骤212:获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求。
步骤214:基于所述第三API调用请求,生成针对所述第一资源的第一计算指令。
步骤216:将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
在本说明书实施例中,GPU虚拟化系统的客户端101可以将与第一资源相匹配的数据(即包含对第一资源的资源描述符的属性进行设置后所生成的数据)发送至GPU驱动,GPU驱动可以根据接收到的针对第一资源的第一计算指令以及与第一资源相匹配的数据,配置资源,执行计算任务。从而无需将AI框架层的第一API调用请求及第二API调用请求发送至GPU驱动。
在本说明书实施例中,通过在GPU虚拟化系统中的客户端处预先存储对于第一资源的设置参数,令该客户端可以先行反馈AI框架层发送的第一API调用请求以及第二API调用请求,且无需将第一API调用请求以及第二API调用请求发送至GPU驱动进行处理,使得AI框架层无需等待GPU驱动反馈对于第一API调用请求与第二API调用请求的处理结果,以减少AI框架层等待请求响应的耗时,进而提升AI任务的执行效率。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
在本说明书实施例中,可以在AI任务启动后的预热阶段获取与第一资源相匹配的数据,并进行存储,以便于后续迭代过程使用。本说明书实施例中提供了一种在AI任务的预热阶段获取与第一资源相匹配的数据的实现方式。具体的,在步骤202之前,还可以包括以下步骤:
在AI任务启动后的预热阶段,获取AI框架层发送的用于创建第二资源的第四API调用请求;
创建所述第二资源,将所述第二资源对应的数据存储在所述内存地址;
向所述AI框架层反馈所述内存地址;
获取所述AI框架层发送的用于对所述第二资源进行设置的第五API调用请求;
基于所述第五API调用请求,对所述内存地址中的数据进行设置;
向所述AI框架层反馈用于表示设置成功的消息;
获取所述AI框架层发送的用于基于所述第二资源进行计算的第六API调用请求;
基于所述第六API调用请求,生成针对所述第二资源的第二计算指令;
将所述第二计算指令发送至GPU驱动。
在本说明书实施例中,在AI任务启动后的预热阶段,AI框架层会针对AI任务中的各个算子生成创建资源、设置资源以及执行计算的API调用请求,以令GPU虚拟化系统的客户端生成并存储与各个算子对应的资源的设置参数。
具体的,GPU虚拟化系统的客户端可以在获取到AI框架层发送的用于创建第二资源的第四API调用请求后,响应于第四API调用请求,在该客户端所在设备的内存中创建与第二资源对应的数据,并将该数据的存储地址确定为与第二资源对应的数据所在的内存地址。GPU虚拟化系统的客户端可以发送携带有该内存地址的表示创建成功的消息至API框架层。
当GPU虚拟化系统的客户端接收到AI框架层发送的用于对第二资源进行设置的第五API调用请求时,该客户端可以响应于第五API调用请求,对存储于该客户端所在设备中的与第二资源对应的数据进行设置,得到第二资源的设置参数,并向AI框架层反馈用于表示设置成功的消息。
在本说明书实施例中,当第二资源对应的算子与第一资源对应的算子为不同迭代过程中的同一算子时,在执行步骤204时,确定出的预先存储的与第一资源相匹配的数据所在的内存地址,与GPU虚拟化系统的客户端确定出的第二资源对应的数据所在的内存地址可以是相同的。对应的,第四API调用请求与第一API调用请求也可以是相同的。第五API调用请求与第二API调用请求也可以是相同的。
在本说明书实施例中,GPU虚拟化系统的客户端还可以将第四API调用请求及第五API调用请求发送至GPU驱动,以令GPU驱动生成与第二资源对应的数据(即包含对于第二资源的设置参数的数据),从而便于GPU驱动执行第二计算指令。
由于GPU驱动生成的与第二资源对应的数据通常会存储于GPU缓存中,为避免对GPU缓存的占用,当GPU驱动对第二计算指令响应成功后,AI框架会向客户端发送指令,该指令用于删除GPU缓存中的与第二资源对应的数据。
因此,在获取所述AI框架层发送的用于基于所述第二资源进行计算的第六API调用请求之后,还可以包括以下步骤:
获取所述AI框架层发送的用于对所述第二资源对应的数据进行删除的第七API调用请求;
保留所述第二资源对应的数据;
向所述AI框架层反馈用于表示删除成功的消息。
在本说明书实施例中,GPU虚拟化系统的客户端可以将AI框架层发送的用于对所述第二资源对应的数据进行删除的第七API调用请求发送至GPU驱动,以令GPU驱动对GPU缓存中的与第二资源对应的数据进行删除。但是,由于GPU虚拟化系统的客户端所在设备中也存储了与第二资源对应的数据,但为了后续迭代过程可以复用该客户端所在设备中存储的与第二资源对应的数据,GPU虚拟化系统的客户端在接收到第七API调用请求后,会对该客户端所在设备中存储的与第二资源对应的数据进行保留。并将用于表示删除成功的消息反馈至AI框架层,以便于AI框架层对AI任务中的其他算子进行处理。
在本说明书实施例中,通过令GPU虚拟化系统的客户端对其所在设备中的与第二资源对应的数据进行保留,从而可以实现对第二资源对应的数据(即与第一资源相匹配的数据)的预先存储,以便于后续执行AI任务中的迭代运算使用。且由于GPU虚拟化系统的客户端可以根据其所在设备对第二资源对应的数据的存储信息,先行向AI框架层反馈用于表示删除成功的消息,无需AI框架层等待GPU驱动对于第七API调用请求的处理结果,从而可以减少AI框架层的等待耗时,有利于提升AI任务的执行效率。
在本说明书实施例中,为便于后续执行AI任务时使用与第二资源对应的数据,在保留所述第二资源对应的数据之后,还可以包括以下步骤:
确定所述第四API调用请求对应的计算流;
将所述第二资源对应的数据的存储地址的地址指针,写入所述计算流对应的队列中。
在本说明书实施例中,由于通常会使用一个或多个流计算任务(streamcomputing)去实现AI任务,但流计算任务中对于各个算子的执行顺序有着严格的要求。因此,在AI任务启动后的预热(warm up)阶段,可以先确定AI任务中的一个完整迭代过程所包含的各个算子的执行顺序,并确定各个算子对应的流计算任务。然后,根据确定出的各个算子的执行顺序以及对应的流计算任务,将各个算子对应的资源设置参数的存储地址的地址指针,写入与各个算子对应的流计算任务的队列中,以便于后续迭代过程使用。
为便于理解,对将资源设置参数的存储地址的地址指针写入队列的流程进行举例说明。假定,AI任务中的一个完整迭代过程中所需执行的算子由先至后分别为:OP1、OP2、OP3及OP4。图3为本说明书实施例中提供的一种将资源设置参数的存储地址的地址指针写入队列的场景示意图。如图3(a)所示,环形队列301中包含一个完整迭代过程中所需执行的各个算子,其中,环形队列301中位置3011中的算子(即OP3)为当前流计算任务正在执行的算子。第一队列302中包含OP1与OP2对应的资源设置参数的存储地址的地址指针。第二队列303中包含OP3对应的资源设置参数的存储地址的地址指针。可知,OP1与OP2对应的流计算任务相同,OP1(或OP2)与OP3对应的流计算任务不同。
当流计算任务完成了对OP3算子的计算后,AI框架层可以请求执行对OP4算子的计算。如图3(b)所示,环形队列301中位置3012中的算子(即OP4)为当前流计算任务正在执行的算子,若确定出OP4算子对应的流计算任务(即计算流)与OP3算子对应的流计算任务(即计算流)相同。则可以将OP4算子对应的资源设置参数的存储地址的地址指针也写入第二队列,从而得到更新后的第二队列304。
在本说明书实施例中,步骤204:确定预先存储的与所述第一资源相匹配的数据所在的内存地址,具体可以包括以下步骤:
确定所述第一API调用请求对应的计算流;
从所述计算流对应的队列中读取队首存储的地址指针;所述地址指针指向与所述第一资源相匹配的数据所在的内存地址。
在本说明书实施例中,可以确定第一API调用请求所需创建的资源所对应的算子,并将确定出的算子所对应的计算流(即流计算任务),作为第一API调用请求对应的计算流。
在本说明书实施例中,由于在AI任务的预热阶段,根据各个算子的执行顺序,将各个算子对应的资源的设置参数的存储地址的地址指针,写入了各个算子对应的计算流的队列中,因此,可以从第一API调用请求对应的计算流的队列中,读取与第一资源相匹配的数据所在的内存地址的地址指针。
在实际应用中,可以每次从队列中读取一个地址指针后,即对该地址指针进行删除,并将该地址指针重新写入该队列的队尾,以令该队列的队首所存储的地址指针,即为该队列对应的计算流后续运行时所需的地址指针。
因此,从所述计算流对应的队列中读取队首存储的地址指针之后,还可以包括:
将所述地址指针从所述队列的队首删除;
将所述地址指针写入所述队列的队尾。
在本说明书实施例中,通过在读取队列中的队首处存储的地址指针后,对该队首处存储的地址指针进行删除,并将该地址指针写入该队列的队尾,从而便于GPU虚拟化系统的客户端在执行AI任务中的迭代运算时,对预先存储的资源设置参数的重复利用。
由于采用了队列的方式对地址指针进行存储,而队列的读取原则是“先进先出”。即最先被写入队列中的数据,按照顺序会被最先读取到。而队列中的地址指针的存储顺序,又是按照每一轮迭代中的步骤依次进行存储的。所以,采用队列的方式对地址指针进行存储以后,在后续进行复用时,只需在新的一轮迭代计算过程开始时,从队列中读取第一个地址指针,在同一轮迭代过程中,在后续需要按照步骤执行顺序读取复用数据对应的存储地址的地址指针时,只要按照先后顺序依次读取队列中存储的地址指针即可。这样做可以简化步骤顺序与复用的数据之间的映射关系的处理过程。
但是,采用队列方式存储地址指针后,需要确保在每一轮迭代计算开始时,读取队列中存储的第一个地址指针。可以采用下述方式实现这一过程。
具体的,在实际应用中,需在确定当前一轮的迭代过程执行完成后,在下一轮迭代过程开始时,执行下一轮迭代过程中的算子对应的计算任务,以避免发生错误。
因此,步骤202:获取AI框架层发送的用于创建第一资源的第一API调用请求之前,还可以包括:判断当前一轮的迭代过程是否计算完毕,得到判断结果。
步骤201:获取AI框架层发送的用于创建第一资源的第一API调用请求,具体可以包括:当所述判断结果表示当前一轮的迭代过程计算完毕时,获取AI框架层发送的用于创建第一资源的第一API调用请求。
在本说明书实施例中,当AI任务采用的模型为神经网络模型时,AI任务中的一轮迭代过程可以指分别采用正向传播算法(Forward propagation algorithm)以及反向传播算法(Backpropagation algorithm)对神经网络模型处理一轮。
基于此,本说明书实施例中给出了一种判断当前一轮的迭代过程是否计算完毕的实现方式。
具体的,可以记录AI任务中的模型的第一层的输出结果的存储地址对应的第一地址指针;在后向梯度传播过程中,监测当前的输入数据的存储地址对应的第二地址指针;判断所述第二地址指针是否与所述第一地址指针相同。
例如,假定AI任务中的模型的第一层为卷积计算,由于使用反向传播算法时,对最后一个卷积求梯度时的输入与该模型的第一个层的输出应相同,因此,可以将当前求梯度时使用的输入数据的存储地址对应的第二地址指针,与AI任务中的模型的第一层的输出结果的存储地址对应的第一地址指针进行对比,若相同,则表示当前一轮的迭代过程计算完毕,可以对下一轮迭代过程中的算子进行计算,即可以执行步骤202,从而保证AI任务中的迭代循环的正确运行。
本说明书实施例提供了一种基于GPU虚拟化的资源复用方法,当执行AI任务时,可以通过对预先存储的资源设置数据的复用,使得GPU虚拟化系统的客户端可以先行处理AI框架层发送的API调用请求,以减少AI框架层所需向GPU驱动发起的80%左右的API同步调用。可以显著减少GPU虚拟化技术的性能损失,并减少AI任务执行时的资源消耗及时间消耗。经实验证明,采用本申请实施例提供的基于GPU虚拟化的资源复用方法在TensorFlow中运行CNN模型(例如,AlexNet)时,相较于现有技术的运行效率提升了11%。且本说明书实施例提供的一种基于GPU虚拟化的资源复用方法部署灵活,可同时支持裸机、容器或者虚拟机运行,同时对云化友好,其适用性也较好。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图4为本说明书实施例提供的对应于图2的一种基于GPU虚拟化的资源复用装置的结构示意图,该装置可以应用于GPU虚拟化系统中的客户端。如图4所示,该装置可以包括:
第一获取模块402,用于获取AI框架层发送的用于创建第一资源的第一API调用请求。
第一确定模块404,用于确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数。
第一反馈模块406,用于向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址。
第二获取模块408,用于获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求。
第二反馈模块410,用于向所述AI框架层反馈用于表示设置成功的消息。
第三获取模块412,用于获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求。
第一计算指令生成模块414,用于基于所述第三API调用请求,生成针对所述第一资源的第一计算指令。
第一发送模块416,用于将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
在本说明书实施例中,基于GPU虚拟化的资源复用装置通过预先存储对于第一资源的设置参数,使得GPU虚拟化系统中的客户端可以先行反馈AI框架层发送的第一API调用请求以及第二API调用请求,且无需将第一API调用请求以及第二API调用请求发送至GPU驱动进行处理,因此,AI框架层无需等待GPU驱动反馈对于第一API调用请求与第二API调用请求的处理结果,以减少AI框架层等待请求响应的耗时,进而提升AI任务的执行效率。
在本说明书实施例中,所述装置还可以包括:
第四获取模块,用于在AI任务启动后的预热阶段,获取AI框架层发送的用于创建第二资源的第四API调用请求。
创建模块,用于创建所述第二资源,将所述第二资源对应的数据存储在所述内存地址。
第三反馈模块,用于向所述AI框架层反馈所述内存地址。
第五获取模块,用于获取所述AI框架层发送的用于对所述第二资源进行设置的第五API调用请求。
设置模块,用于基于所述第五API调用请求,对所述内存地址中的数据进行设置。
第四反馈模块,用于向所述AI框架层反馈用于表示设置成功的消息。
第六获取模块,用于获取所述AI框架层发送的用于基于所述第二资源进行计算的第六API调用请求。
第二计算指令生成模块,用于基于所述第六API调用请求,生成针对所述第二资源的第二计算指令。
第二发送模块,用于将所述第二计算指令发送至GPU驱动。
在本说明书实施例中,所述装置还可以包括:
第七获取模块,用于获取所述AI框架层发送的用于对所述第二资源对应的数据进行删除的第七API调用请求。
保留模块,用于保留所述第二资源对应的数据。
第五反馈模块,用于向所述AI框架层反馈用于表示删除成功的消息。
在本说明书实施例中,所述第一确定模块404,具体可以用于:
确定所述第一API调用请求对应的计算流。
从所述计算流对应的队列中读取队首存储的地址指针;所述地址指针指向与所述第一资源相匹配的数据所在的内存地址。
在本说明书实施例中,所述装置还可以包括:
删除模块,用于将所述地址指针从所述队列的队首删除。
第一写入模块,用于将所述地址指针写入所述队列的队尾。
在本说明书实施例中,所述装置还可以包括:
第二确定模块,用于确定所述第四API调用请求对应的计算流。
第二写入模块,用于将所述第二资源对应的数据的存储地址的地址指针,写入所述计算流对应的队列中。
在本说明书实施例中,所述装置还可以包括:
判断模块,用于判断当前一轮的迭代过程是否计算完毕,得到判断结果。
所述第一获取模块,具体用于当所述判断结果表示当前一轮的迭代过程计算完毕时,获取AI框架层发送的用于创建第一资源的第一API调用请求。
在本说明书实施例中,所述判断模块,具体可以用于:
记录AI任务中的模型的第一层的输出结果的存储地址对应的第一地址指针。
在后向梯度传播过程中,监测当前的输入数据的存储地址对应的第二地址指针。
判断所述第二地址指针是否与所述第一地址指针相同。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图5为本说明书实施例提供的对应于图2的一种基于GPU虚拟化的资源复用设备的结构示意图。如图5所示,设备500可以包括:
至少一个处理器510;以及,
与所述至少一个处理器通信连接的存储器530;其中,
所述存储器530存储有可被所述至少一个处理器510执行的指令520,所述指令被所述至少一个处理器510执行,以使所述至少一个处理器510能够:
获取AI框架层发送的用于创建第一资源的第一API调用请求。
确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数。
向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址。
获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求。
向所述AI框架层反馈用于表示设置成功的消息。
获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求。
基于所述第三API调用请求,生成针对所述第一资源的第一计算指令。
将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
在本说明书实施例中,基于GPU虚拟化的资源复用设备通过预先存储对于第一资源的设置参数,令该设备中搭载的GPU虚拟化系统中的客户端可以先行反馈AI框架层发送的第一API调用请求以及第二API调用请求,且无需将第一API调用请求以及第二API调用请求发送至GPU驱动进行处理,因此,AI框架层无需等待GPU驱动反馈对于第一API调用请求与第二API调用请求的处理结果,以减少AI框架层等待请求响应的耗时,进而提升AI任务的执行效率。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (17)
1.一种基于GPU虚拟化的资源复用方法,应用于GPU虚拟化系统中的客户端,包括:
获取AI框架层发送的用于创建第一资源的第一API调用请求;
确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数;
向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址;
获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求;
向所述AI框架层反馈用于表示设置成功的消息;
获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求;
基于所述第三API调用请求,生成针对所述第一资源的第一计算指令;
将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
2.如权利要求1所述的方法,所述获取AI框架层发送的用于创建第一资源的API调用请求之前,还包括:
在AI任务启动后的预热阶段,获取AI框架层发送的用于创建第二资源的第四API调用请求;
创建所述第二资源,当所述第二资源对应的算子与所述第一资源对应的算子为不同迭代过程中的同一算子时,将所述第二资源对应的数据存储在所述内存地址;
向所述AI框架层反馈所述内存地址;
获取所述AI框架层发送的用于对所述第二资源进行设置的第五API调用请求;
基于所述第五API调用请求,对所述内存地址中的数据进行设置;
向所述AI框架层反馈用于表示设置成功的消息;
获取所述AI框架层发送的用于基于所述第二资源进行计算的第六API调用请求;
基于所述第六API调用请求,生成针对所述第二资源的第二计算指令;
将所述第二计算指令发送至GPU驱动。
3.如权利要求2所述的方法,所述获取所述AI框架层发送的用于基于所述第二资源进行计算的第六API调用请求之后,还包括:
获取所述AI框架层发送的用于对所述第二资源对应的数据进行删除的第七API调用请求;
保留所述第二资源对应的数据;
向所述AI框架层反馈用于表示删除成功的消息。
4.如权利要求1所述的方法,所述确定预先存储的与所述第一资源相匹配的数据所在的内存地址,具体包括:
确定所述第一API调用请求对应的计算流;
从所述计算流对应的队列中读取队首存储的地址指针;所述地址指针指向与所述第一资源相匹配的数据所在的内存地址。
5.如权利要求4所述的方法,所述从所述计算流对应的队列中读取队首存储的地址指针之后,还包括:
将所述地址指针从所述队列的队首删除;
将所述地址指针写入所述队列的队尾。
6.如权利要求3所述的方法,所述保留所述第二资源对应的数据之后,还包括:
确定所述第四API调用请求对应的计算流;
将所述第二资源对应的数据的存储地址的地址指针,写入所述计算流对应的队列中。
7.如权利要求1所述的方法,所述获取AI框架层发送的用于创建第一资源的第一API调用请求之前,还包括:
判断当前一轮的迭代过程是否计算完毕,得到判断结果;
所述获取AI框架层发送的用于创建第一资源的第一API调用请求,具体包括:
当所述判断结果表示当前一轮的迭代过程计算完毕时,获取AI框架层发送的用于创建第一资源的第一API调用请求。
8.如权利要求7所述的方法,所述判断当前一轮的迭代过程是否计算完毕,具体包括:
记录AI任务中的模型的第一层的输出结果的存储地址对应的第一地址指针;
在后向梯度传播过程中,监测当前的输入数据的存储地址对应的第二地址指针;
判断所述第二地址指针是否与所述第一地址指针相同。
9.一种基于GPU虚拟化的资源复用装置,应用于GPU虚拟化系统中的客户端,包括:
第一获取模块,用于获取AI框架层发送的用于创建第一资源的第一API调用请求;
第一确定模块,用于确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数;
第一反馈模块,用于向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址;
第二获取模块,用于获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求;
第二反馈模块,用于向所述AI框架层反馈用于表示设置成功的消息;
第三获取模块,用于获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求;
第一计算指令生成模块,用于基于所述第三API调用请求,生成针对所述第一资源的第一计算指令;
第一发送模块,用于将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
10.如权利要求9所述的装置,所述装置还包括:
第四获取模块,用于在AI任务启动后的预热阶段,获取AI框架层发送的用于创建第二资源的第四API调用请求;
创建模块,用于创建所述第二资源,当所述第二资源对应的算子与所述第一资源对应的算子为不同迭代过程中的同一算子时,将所述第二资源对应的数据存储在所述内存地址;
第三反馈模块,用于向所述AI框架层反馈所述内存地址;
第五获取模块,用于获取所述AI框架层发送的用于对所述第二资源进行设置的第五API调用请求;
设置模块,用于基于所述第五API调用请求,对所述内存地址中的数据进行设置;
第四反馈模块,用于向所述AI框架层反馈用于表示设置成功的消息;
第六获取模块,用于获取所述AI框架层发送的用于基于所述第二资源进行计算的第六API调用请求;
第二计算指令生成模块,用于基于所述第六API调用请求,生成针对所述第二资源的第二计算指令;
第二发送模块,用于将所述第二计算指令发送至GPU驱动。
11.如权利要求10所述的装置,所述装置还包括:
第七获取模块,用于获取所述AI框架层发送的用于对所述第二资源对应的数据进行删除的第七API调用请求;
保留模块,用于保留所述第二资源对应的数据;
第五反馈模块,用于向所述AI框架层反馈用于表示删除成功的消息。
12.如权利要求9所述的装置,所述第一确定模块,具体用于:
确定所述第一API调用请求对应的计算流;
从所述计算流对应的队列中读取队首存储的地址指针;所述地址指针指向与所述第一资源相匹配的数据所在的内存地址。
13.如权利要求12所述的装置,所述装置还包括:
删除模块,用于将所述地址指针从所述队列的队首删除;
第一写入模块,用于将所述地址指针写入所述队列的队尾。
14.如权利要求11所述的装置,所述装置还包括:
第二确定模块,用于确定所述第四API调用请求对应的计算流;
第二写入模块,用于将所述第二资源对应的数据的存储地址的地址指针,写入所述计算流对应的队列中。
15.如权利要求9所述的装置,所述装置还包括:
判断模块,用于判断当前一轮的迭代过程是否计算完毕,得到判断结果;
所述第一获取模块,具体用于当所述判断结果表示当前一轮的迭代过程计算完毕时,获取AI框架层发送的用于创建第一资源的第一API调用请求。
16.如权利要求15所述的装置,所述判断模块,具体用于:
记录AI任务中的模型的第一层的输出结果的存储地址对应的第一地址指针;
在后向梯度传播过程中,监测当前的输入数据的存储地址对应的第二地址指针;
判断所述第二地址指针是否与所述第一地址指针相同。
17.一种基于GPU虚拟化的资源复用设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取AI框架层发送的用于创建第一资源的第一API调用请求;
确定预先存储的与所述第一资源相匹配的数据所在的内存地址;所述与所述第一资源相匹配的数据包含对于所述第一资源的设置参数;
向所述AI框架层反馈所述与所述第一资源相匹配的数据所在的内存地址;
获取所述AI框架层发送的用于对所述第一资源进行设置的第二API调用请求;
向所述AI框架层反馈用于表示设置成功的消息;
获取所述AI框架层发送的用于基于所述第一资源进行计算的第三API调用请求;
基于所述第三API调用请求,生成针对所述第一资源的第一计算指令;
将所述第一计算指令以及所述与所述第一资源相匹配的数据发送至GPU驱动。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010037822.2A CN110851285B (zh) | 2020-01-14 | 2020-01-14 | 一种基于gpu虚拟化的资源复用方法、装置及设备 |
PCT/CN2020/134523 WO2021143397A1 (zh) | 2020-01-14 | 2020-12-08 | 一种基于gpu虚拟化的资源复用方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010037822.2A CN110851285B (zh) | 2020-01-14 | 2020-01-14 | 一种基于gpu虚拟化的资源复用方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851285A CN110851285A (zh) | 2020-02-28 |
CN110851285B true CN110851285B (zh) | 2020-04-24 |
Family
ID=69610693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010037822.2A Active CN110851285B (zh) | 2020-01-14 | 2020-01-14 | 一种基于gpu虚拟化的资源复用方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110851285B (zh) |
WO (1) | WO2021143397A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851285B (zh) * | 2020-01-14 | 2020-04-24 | 支付宝(杭州)信息技术有限公司 | 一种基于gpu虚拟化的资源复用方法、装置及设备 |
CN111427702A (zh) * | 2020-03-12 | 2020-07-17 | 北京明略软件系统有限公司 | 一种人工智能ai系统及数据处理方法 |
CN112513817B (zh) * | 2020-08-14 | 2021-10-01 | 华为技术有限公司 | 一种主cpu与npu的数据交互方法及计算设备 |
CN112035220A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 开发机操作任务的处理方法、装置、设备以及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216783B (zh) * | 2014-08-20 | 2017-07-11 | 上海交通大学 | 云游戏中虚拟gpu资源自主管理与控制方法 |
CN105242957A (zh) * | 2015-09-28 | 2016-01-13 | 广州云晫信息科技有限公司 | 一种云计算系统调配gpu资源到虚拟机的方法及系统 |
CN108108248A (zh) * | 2017-12-28 | 2018-06-01 | 郑州云海信息技术有限公司 | 一种实现目标检测的cpu+gpu集群管理方法、装置及设备 |
CN110058926B (zh) * | 2018-01-18 | 2023-03-14 | 伊姆西Ip控股有限责任公司 | 用于处理gpu任务的方法、设备和计算机可读介质 |
CN110851285B (zh) * | 2020-01-14 | 2020-04-24 | 支付宝(杭州)信息技术有限公司 | 一种基于gpu虚拟化的资源复用方法、装置及设备 |
-
2020
- 2020-01-14 CN CN202010037822.2A patent/CN110851285B/zh active Active
- 2020-12-08 WO PCT/CN2020/134523 patent/WO2021143397A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021143397A1 (zh) | 2021-07-22 |
CN110851285A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851285B (zh) | 一种基于gpu虚拟化的资源复用方法、装置及设备 | |
CN111309649B (zh) | 一种数据传输和任务处理方法、装置及设备 | |
CN111078323A (zh) | 基于协程的数据处理方法、装置、计算机设备及存储介质 | |
CN108549562A (zh) | 一种图像加载的方法及装置 | |
CN114827165B (zh) | 对多个交易进行分组的方法和区块链节点 | |
US11474828B2 (en) | Initial data distribution for different application processes | |
WO2021164368A1 (zh) | 一种容器应用启动方法、系统、装置及电子设备 | |
CN112835524A (zh) | 存储资源配置方法、存储资源控制器及调度系统 | |
CN113312182B (zh) | 一种云计算节点、文件处理方法及装置 | |
US20200371827A1 (en) | Method, Apparatus, Device and Medium for Processing Data | |
CN110764930B (zh) | 基于消息模式的请求或应答处理方法及装置 | |
CN111294377B (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
US11249760B2 (en) | Parameter management between programs | |
CN112235132A (zh) | 动态配置服务的方法、装置、介质以及服务器 | |
CN111310638A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
US20220365822A1 (en) | Data Processing Method and Computer Device | |
CN114880147A (zh) | 一种显存共享方法、装置、设备及存储介质 | |
CN113032118A (zh) | 用于计算机应用程序的异步操作处理方法和相应的系统 | |
CN111427654A (zh) | 一种指令处理方法及装置 | |
CN109271179A (zh) | 虚拟机应用程序管理方法、装置、设备及可读存储介质 | |
CN116541018B (zh) | 一种分布式模型编译系统、方法、装置、介质及设备 | |
CN110287004B (zh) | 基于docker容器技术的基础环境镜像预热方法及装置 | |
KR101989593B1 (ko) | 식별정보 전달 장치 및 방법 | |
CN117591107A (zh) | 一种前端界面的快速渲染方法、设备及介质 | |
CN117176776A (zh) | 远程通信方法、装置和计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |