CN103761139A - 一种基于动态库拦截的通用计算虚拟化实现方法 - Google Patents

一种基于动态库拦截的通用计算虚拟化实现方法 Download PDF

Info

Publication number
CN103761139A
CN103761139A CN201410034982.6A CN201410034982A CN103761139A CN 103761139 A CN103761139 A CN 103761139A CN 201410034982 A CN201410034982 A CN 201410034982A CN 103761139 A CN103761139 A CN 103761139A
Authority
CN
China
Prior art keywords
general
purpose computations
gpu
client
function
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.)
Granted
Application number
CN201410034982.6A
Other languages
English (en)
Other versions
CN103761139B (zh
Inventor
李肯立
石林
陈浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University
Original Assignee
Hunan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan University filed Critical Hunan University
Priority to CN201410034982.6A priority Critical patent/CN103761139B/zh
Publication of CN103761139A publication Critical patent/CN103761139A/zh
Application granted granted Critical
Publication of CN103761139B publication Critical patent/CN103761139B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于动态库拦截的通用计算虚拟化实现方法,针对现有虚拟机技术对通用计算支持的不足,通过实时拦截和重定向通用计算运行时库,将虚拟环境中所有与通用计算相关的功能调用重定向到非虚拟环境,由于非虚拟环境拥有通用计算能力,它将完成实际通用计算任务并将结果返回虚拟环境。本发明对于虚拟环境中的用户而言保持完全透明,在动态库虚拟化的基础上,以GPU资源为分配对象的GPU池,通过空分复用、时分复用技术将一块物理GPU从逻辑上虚拟为多个GPU,支持多个用户多路复用GPU。

Description

一种基于动态库拦截的通用计算虚拟化实现方法
技术领域
本发明属于计算机体系结构和虚拟接口领域,特别涉及一种基于动态库拦截的通用计算虚拟化实现方法。
背景技术
虚拟机技术发展过程中遇到的一个重大挑战是I/O虚拟化。由于I/O设备的多样性与复杂性、封闭性,难以在虚拟机环境中充分有效的使用这些硬件资源,从而造成虚拟机功能缺失或性能下降。以显示接口卡(简称显卡,主要组成部分为GPU,图形处理单元)为例,它的主要功能为图形计算(2D、3D)和通用计算(单指令多数据流类型的数据密集计算)两部分,关于图形计算的虚拟化已有大量成熟技术。然而,除少数2D图形显示标准外,显卡硬件电气接口没有统一的设计规范和国际标准,不但各大主要生厂商之间接口互不兼容,即使在同一厂商的不同世代、不同批次产品之间,物理特性也不完全相同。另外,出于商业考虑,各个厂商不对外公布设计细节,不提供驱动源码,使得在操作系统层自主开发适应不同硬件的驱动协议栈也不现实。目前主流的虚拟机管理器(VMM),商业级的如vmware,开源的如XEN,都只在较小的范围内解决了2D图形显示的问题,对GPU的另外两大功能——3D加速和通用计算基本不涉及。
所谓通用计算,general purpose computing,是相对于图形计算而言的。由于图形处理器在历史上是专门为图形应用而设计的,因而只能作图形计算,在软件层只拥有图形接口,如OPENGL、DIRECT3D。但随着GPU处理能力的增强,工业界和学术界发现它可以处理图形之外的计算,这种计算形式由于相对图形这一单一应用而言显得更加一般、通用,所以被称为通用计算,相应的接口被称为通用计算接口,目前的代表有CUDA、OPENCL等。
虚拟环境是一种受限执行环境,为了取得灵活性、可靠性、适应性方面的加强,传统的虚拟环境牺牲了部分性能和功能,其中就包括通用计算功能。通用计算没有被虚拟化,意味着所有虚拟机环境都不能运行任何通用计算程序。用户必须在通用计算能力和虚拟化能力之间二选一。天河一号有70%以上计算能力来自通用计算设备,如果在天河一号上部署云计算框架,这部分计算能力将难以利用。
但是,对GPU的虚拟化目前仍存在几个突出的问题:一是3D应用的实时性、交互性很强,域间通信量峰值极大,造成用户指令无法及时响应,或者图像质量下降;二是数据通路狭窄,目前GPU虚拟化技术广泛使用斯坦福大学Chromium项目的数据分发和传输机制,而这套机制最初是为在远程条件下实现并行渲染设计的,并没有针对虚拟机作任何优化;三是基于OPENGL的虚拟化方案只能解决图形计算的虚拟化问题,对通用计算(通用计算,generalpurpose computing,GPU,是相对于图形计算而言的。图形处理器在历史上是专门为图形应用而设计的,因而只能作图形计算,在软件层只拥有图形接口。但随着GPU处理能力的增强,工业界和学术界发现它可以处理图形之外的计算形式,称为通用计算,相应的接口被称为通用计算接口)的虚拟化无能为力。NVIDIA公司于2007年推出了专门用于GPU通用计算的接口架构CUDA(统一计算设备架构),意味着通用计算已脱离OPENGL等图形接口(应用程序编程接口),成为连接程序员和显示硬件的新桥梁,对它的虚拟化成为VMM技术中一个崭新的、独立的课题。四是目前热门的虚拟机技术如实时迁移(live-migration)、挂起与恢复(suspend/resume)等,并不支持涉及GPU通用计算的应用,它们将在迁移或恢复后失去继续执行的能力。
发明内容
本发明针对现有技术中虚拟机技术对通用计算支持的不足,提出了一种基于动态库拦截的通用计算虚拟化实现方法。
一种基于动态库拦截和重定向的通用计算虚拟化实现方法,包括以下步骤:
步骤1:构建运行于虚拟环境中的通用计算客户端和建立通用计算服务器;
步骤2:利用通用计算客户端截获在虚拟环境中运行的通用计算应用程序发出的虚拟设备请求并将虚拟设备请求转化为物理设备请求,并将该物理设备请求通过传输通道将物理设备请求发送至通用计算服务器上,完成GPU显存的分配;
步骤3:通用计算服务器将GPU显存的分配结果返回至通用计算客户端,通用计算客户端将GPU显存的分配结果作为本地调用返回至通用计算应用程序,通用计算应用程序利用显存管理函数申请显存空间,将通用计算应用程序的计算数据复制至显存;
步骤4:通用计算应用程序利用KERNEL执行函数向GPU传送KERNEL执行函数的代码,通用计算客户端根据KERNEL执行函数的执行参数,将KERNEL执行函数的代码和执行参数发往通用计算服务器,通用计算服务器设置KERNEL执行函数的执行参数,启动KERNEL执行函数进行计算,并将计算结果返回通用计算客户端;
步骤5:通用计算客户端将步骤4得到的计算结果作为本地调用返回通用计算应用程序,实现基于动态库拦截和重定向的通用计算虚拟化;
所述运行于虚拟环境中的通用计算客户端负责将通用计算应用程序的本地请求重定向到位于虚拟环境外部的服务器;
所述虚拟环境是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统提供的执行环境;
所述构建运行于虚拟环境中的通用计算客户端的构建过程为通过构建一个与通用计算标准运行库同名的动态库,命名为伪库,将伪库存放在默认的库搜索范围内,使得伪库被通用计算程序和操作系统认定为支持通用计算的标准运行时库;将伪库载入内存,伪库内部函数被操作系统映射到所用通用计算程序的地址空间,使得伪库内的函数取代真库的函数;其中,通用计算标准运行库由显卡生产商提供,简称为真库;伪库中的所有接口的定义、函数名称及函数参数均与真库相同;
所述通用计算服务器是一个用户层应用程序,它依据通用计算客户端发来的请求调用原生底层显卡驱动程序,并将请求的计算结果返回通用计算客户端。
对伪库中的接口进行封装和虚拟化过程包括以下四种类型;
远程执行型:通用计算客户端将原始的函数名和参数传递给服务器,由通用计算服务器执行并将结果返回至通用计算应用程序,作为通用计算应用程序的函数返回值;
本地替代型:使用本地函数malloc替代具有耦合特性的mallocHost接口函数,减少远程过程调用和虚拟机切换的开销;
远程替代型:通用计算服务器将异步版本的通用计算接口转化为同步版本的通用计算接口;
指针同步型:传递指针代表的数据,并在通用计算服务器端重新建立指针与指针所代表数据之间的引用关系。
伪库和真库均由对应于CPU指令集的二进制代码组成,但代码并不相同;真库的代码是对另一个通用计算库的调用,而伪库的代码是对通信库的调用;
真库由通用计算厂商提供,它的代码主要是调用通用计算协议栈低层的另一个动态库,即驱动库,再由驱动库通过操作系统调用驱动程序;伪库的代码调用了传输通道接口所使用的库(套接字或共享内存),该库是一种通信库,与通用计算完全没有关系;
库的实现过程:库是一种二进制文件,程序员撰写的源代码,由编译器经编译过程生成库文件。伪库的实现过程也同样如此:首先,将通用计算生产商提供的接口头文件引入源代码,该文件包含了重要的数据结构、函数原形、宏定义信息。接着,为每一个通用计算函数生成一个空白函数。最后,实现每一个函数的具体内容,即包装参数、向远程发送、从远程接收、函数返回计算结果四个方面的内容。源代码完成后,由编译器完成编译,生成最终的动态库文件。
所述步骤2的GPU显存的分配中,通用计算客户端在本地建立虚拟的GPU镜像步骤如下:
1)在每一个具备物理GPU的节点设置服用计算服务桩程序,当该节点启动时,自动向通用计算服务器报告该节点所拥有的GPU数量和GPU的计算能力;
2)利用通用计算服务器对按照GPU的计算能力对GPU进行归类,为每一个物理GPU建立索引号,标记所有GPU的状态为“空闲”;
3)通用计算机应用程序向通用计算客户端请求通用计算设备;
通用计算机应用程序在发出“请求”时,实际上是指枚举当前系统中所有可用设备。
4)通用计算客户端向通用计算服务器申请相应数量的设备;
5)通用计算服务器选择相应数量的设备,标记该设备状态为“使用中”,将被选中的设备的索引号返回客户端;
6)通用计算客户端向通用计算应用程序返回申请结果,获得本地的虚拟GPU镜像。
通用计算资源在虚拟机上实现多路复用包括空分复用和时分复用;
通用计算资源指为实现通用计算所需要的软硬件集合,包括:通用计算用户库、通用计算运行时库、显卡驱动程序及显卡(含GPU);
其中,空分复用是从空间上分割以显存为主的GPU资源,将显存的不同部分交由不同的用户使用;时分是将GPU资源的使用时间划分多个片段,多个用户轮流使用其中的一个或一组时间片。
有益效果
与现有技术相比,本发明提出的一种基于动态库拦截的通用计算虚拟化实现方法,针对现有虚拟机技术对通用计算支持的不足,通过实时拦截和重定向通用计算运行时库,将虚拟环境中所有与通用计算相关的功能调用重定向到非虚拟环境,由于非虚拟环境拥有通用计算能力,它将完成实际通用计算任务并将结果返回虚拟环境。本发明对于虚拟环境中的用户而言保持完全透明。在动态库虚拟化的基础上,本发明实时了以GPU资源为分配对象的GPU池,通过空分复用、时分复用技术将一块物理GPU从逻辑上虚拟为多个GPU,支持多个用户多路复用GPU。
具体优点如下:
1、提高了GPU硬件资源的使用效率
GPU作为一种硬件计算加速器,只有在用户使用通用计算功能时才被利用,在其它时段处于空闲状态。由于GPU的指令集和编程方式与传统CPU不同,目前针对GPU的应用远远少于CPU,这使得集群中大量GPU资源长时间空闲。采用本发明的虚拟化方法,可以实现动态分配GPU,从而提高资源利用率。
举例说明,假设集群中有10片GPU,有A和B两个用户。在不采用本发明的情况下,经物理电气接口各自为每个用户绑定分配5片GPU。再假设A部署了较繁重的通用计算任务,而B基本没有。在这种情况下,有5片GPU始终处于满负荷状态,而另5片GPU则基本空闲,资源利用率不到50%,且A用户的服务质量无法保证。在采用本发明的情况下,10片GPU由通用计算服务器分配,当通用计算服务器发现A通用计算任务较多时,将10片中的8片分配到用户A,2片分配到用户B,从而实现负载平衡、服务质量最大化和资源利用率最大化(此时可达80%~95%)。当负载发生变化时,如A完成了所有通用计算任务,而B开始增加此类任务时,通用计算服务器将已分配给A的8片GPU重新分配给B,即动态分配。
2、多路复用可以节约成本,降低能耗
GPU是一种功率高、发热量大的计算设备,功率方面,用于通用计算的GPU功率一般在200瓦以上,是同档CPU的两倍。大量GPU不仅本身耗费大量电力,它们的降温控温系统更是能耗大户。
举例说明,位于长沙的国家级超级计算中心有7000片M2050,每片功耗225瓦,以一天满负荷工作量6小时计,每年需耗电344万度,以0.5元每度计算,每年仅支撑GPU就需要电力经费170万元。这还没有将温控系统能耗计算在内。
采用本发明的多路复用方法,可以将少量物理GPU虚拟化为多个逻辑GPU,为不同的用户服务。这不仅减少了初期投资规模,提升了每一片GPU的使用效率,同时也更加省电、节能,易于管理。以上例中,由于6小时的工作量通常情况下不是集中完成,而是根据不同用户、不同节点、不同时段对于通用计算的需求,非均匀地分布于一天24小时中,本发明可以利用不同GPU使用时间段的相互参差来进行合理调度,7000片GPU的工作量可以通过多路复用的方法交由2000到3000片物理GPU来完成,从而降低设备成本、场地费,预计每年节约能源成本50%以上。
附图说明
图1为本发明实现系统总体框架图;
图2为本发明所述的动态库拦截流程图;
图3为本发明所述的GPU资源分配示意图;
图4为本发明所述的GPU多路复用-空分复用示意图;
图5为本发明所述的GPU多路复用-时分复用示意图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的说明。
如图1所示为本明发明提供的基于动态库拦截和重定向的通用计算虚拟化实现系统的整体框架,该系统包括一个非虚拟环境,一个虚拟环境,一个传输通道。
非虚拟环境指未采用虚拟化技术的执行环境,或虽采用虚拟化技术但拥有通用计算设备访问权限的执行环境。虚拟环境指采用虚拟化技术,没有通用计算设备访问权限的执行环境。传输通道为两者之间的通信渠道。
虚拟环境包括但不限于,采用平台级虚拟机、云计算、透明计算、普适计算、操作系统级虚拟化、容器、沙盒、影子系统、应用层虚拟机等虚拟化技术的平台或系统。
非虚拟环境包括但不限于,虚拟机管理器、特权域虚拟机、采用PASSTHROUGH的驱动域虚拟机、以及未采用虚拟技术的执行环境。
传输通道包括但不限于,套接字、共享内存、域间通信通道等。
在虚拟环境中运行的通用计算应用程序,其发出的通用计算调用,被通用计算客户端截获,将其调用参数通过传输通道发往非虚拟环境。
在非虚拟环境中运行的通用计算服务器,解析相应参数,在本地调用通用计算库和显卡驱动,完成相应任务后,将计算结果通过传输通道发往虚拟环境。
在虚拟环境中运行的通用计算客户端,解析计算结果,作为本地调用向通用计算应用程序返回计算结果。
在非虚拟环境中运行的通用计算运行时库,是由通用计算框架设计者提供的标准动态库,用于在通用计算程序执行时,实时解释和响应应用程序提出的通用计算请求,这些请求以接口函数的形式运行。通用计算运行时库的内部实现一般不公开,只公开对外接口,即接口函数的名称、功能、参数和返回值。该接口涉及100多个函数,按功能分为设备管理、KERNEL执行(KERNEL指在GPU上运行的并发流式程序)和显存复制等几个部分。
通用计算应用程序无需针对虚拟环境进行任何修改,即可在虚拟环境中运行,得到与非虚拟条件下相同的结果。
通用计算客户端实现为一个动态库,其名字与标准通用计算运行库相同,从而使得通用计算应用程序在执行时会调用该客户端提供的接口。该库所提供的接口与标准通用计算运行库相同,从而可以正确接收所有调用参数。但在接口实现方面,该库完全不同于标准通用计算运行时库。标准通用计算运行时库将所有接口实现为对于显卡驱动的系统调用,而通用计算客户端将所有接口实现为针对通用计算服务器的服务请求。
通用计算客户端实现为一个通用计算应用程序,它运行在非虚拟环境,可以直接通过标准通用计算运行库调用显卡驱动,访问物理硬件。
对比通用计算应用程序的标准执行流程,可以看出,本发明引由于通用计算服务器和通用计算客户端,在通用计算应用程序与运行时库之间建立了中间层,实现了虚拟化。
如图2所示,以一个典型通用计算过程为例,说明本发明提供的动态库拦截和重定向方法,具体包括以下步骤:
1、在虚拟环境中运行的通用计算应用程序在执行通用计算前,利用设备管理函数提出访问通用计算访问设备的请求;
2、在虚拟环境中运行的通用计算客户端,根据设备管理函数的参数,确定客户需要申请的设备类型、能力大小、功能特征,向通用计算服务器发出设备请求;
3、在非虚拟环境中运行的通用计算服务器,根据该请求分配GPU时间片,将结果返回通用计算客户端;
4、通用计算客户端作为本地调用返回通用计算应用程序;
5、通用计算应用程序认为申请设备成功;
6、通用计算应用程序为执行通用计算,利用显存管理函数申请显存空间,将计算数据复制到显存;
7、通用计算客户端,根据显存管理函数的参数,确定客户需要申请的空间大小是否小于当前可用空间,如是则向通用计算服务器发出显存获取和复制请求;
8、通用计算服务器,根据该请求分配GPU显存,将结果返回通用计算客户端;
9、通用计算客户端作为本地调用返回通用计算应用程序;
10、通用计算应用程序认为显存分配和数据复制成功;
11、通用计算应用程序,利用KERNEL执行函数向GPU传送KERNEL执行函数的执行代码,并启动GPU执行该代码;
12、通用计算客户端,根据KERNEL执行函数的参数,将KERNEL执行函数的代码和执行参数发往通用计算服务器;
13、通用计算服务器,根据该请求设置KERNEL执行函数的执行参数,启动KERNEL执行函数,在其结束后将计算结果返回通用计算客户端;
14、通用计算客户端作为本地调用返回通用计算应用程序;
15、通用计算应用程序认为KERNEL执行函数执行成功。
类似于其它设备池技术(POOL)技术,本发明提供了基于上述动态库虚拟化技术的动态GPU资源分配示意图,如图3所示,在一个系统内(如一个集群、一个局域网)所有物理GPU被组成为一个逻辑上的资源池,即GPU池;GPU池中的GPU可能来自不同的网络节点和区域,在池中被统一抽象为具有通用计算能力的逻辑设备;当用户请求通用设备时,可根据其请求分配合适数量和性能的逻辑设备;用户请求完成后,可将来自GPU池中的通用设备作为本地资源使用。具体实施方法是:
1、在每一个具备物理GPU的节点设置服用计算服务桩程序,当该节点启动时,自动向通用计算服务器报告所拥有的GPU数量和计算能力;
2、通用计算服务器按照GPU的计算能力对GPU进行归类,为每一个物理GPU建立索引号;
3、用户应用程序向通用计算客户端请求通用计算设备;
4、通用计算客户端向通用计算服务器申请相应数量的设备;
5、通用计算服务器从池中选择合适的设备,标记其当前状态,将索引号返回客户端;
6、通用计算客户端向通用计算应用程序返回申请结果;
至此,通过远程服务这种方式,通用计算客户端在本地建立了虚拟的GPU镜像,可以满足用户各种规模的通用计算需要。
多路复用是虚拟化的传统功能,可以利用单一硬件资源同时为多个用户服务。多路复用一般有空分复用和时分复用两种技术路线。本发明在上述动态库虚拟化技术的基础上,综合采用空分复用和时分复用两种方案,实时GPU资源在虚拟机内的多路复用。
如图4所示,为本发明所述的GPU多路复用-空分复用示意图,
1、服务器启动时,统计当前可用显存大小,标记所有显存为可用状态;
2、用户应用程序A向通用计算客户端请求显存空间;
3、通用计算客户端向通用计算服务器申请相应数量的显存空间;
4、通用计算服务器判断当前可用显卡是否能满足要求,如是则分配相应空间,将其标记为用户A占用状态,将空间首地址返回客户端;
5、通用计算客户端向通用计算应用程序A返回申请结果;
6、用户应用程序B和C分别执行上述2~5步,当空间容量允许时,通用计算服务器为他们分配显存空间;
7、用户应用程序A向通用计算客户端请求释放显存空间;
8、用计算客户端向通用计算服务器申请释放显存空间;
9、通用计算服务器释放标记为用户A占用状态的显存,将其标记为空闲状态,这部分显存可以被用户应用程序B和C所使用。
如图5所示,为本发明所述的GPU多路复用-时分复用示意图:
1、服务器启动时,为每一个物理GPU设备生成一个工作线程,如对于设备K,有工作线程K;
2、用户应用程序A第一次向通用计算客户端请求通用计算服务;
3、通用计算客户端向通用计算服务器请求通用计算服务;
4、通用计算服务器为用户A生成一个服务线程A,专门响应该用户的请求;
5、服务线程A将用户A以后的通用计算请求发往工作线程K,即在设备K上运行;
6、用户应用程序B第一次向通用计算客户端请求通用计算服务;
7、通用计算客户端向通用计算服务器请求通用计算服务;
8、通用计算服务器为用户B生成一个服务线程B,专门响应该用户的请求;
9、服务线程B将用户B以后的通用计算请求发往工作线程K,即在设备K上运行;
10、工作线程K按照先来先服务的原则,轮流为用户A和用户B服务,由于它工作在一块物理设备K上,实现了通用计算的分时复用。

Claims (4)

1.一种基于动态库拦截和重定向的通用计算虚拟化实现方法,其特征在于,包括以下步骤:
步骤1:构建运行于虚拟环境中的通用计算客户端和建立通用计算服务器;
步骤2:利用通用计算客户端截获在虚拟环境中运行的通用计算应用程序发出的虚拟设备请求并将虚拟设备请求转化为物理设备请求,并将该物理设备请求通过传输通道将物理设备请求发送至通用计算服务器上,完成GPU显存的分配;
步骤3:通用计算服务器将GPU显存的分配结果返回至通用计算客户端,通用计算客户端将GPU显存的分配结果作为本地调用返回至通用计算应用程序,通用计算应用程序利用显存管理函数申请显存空间,将通用计算应用程序的计算数据复制至显存;
步骤4:通用计算应用程序利用KERNEL执行函数向GPU传送KERNEL执行函数的代码,通用计算客户端根据KERNEL执行函数的执行参数,将KERNEL执行函数的代码和执行参数发往通用计算服务器,通用计算服务器设置KERNEL执行函数的执行参数,启动KERNEL执行函数进行计算,并将计算结果返回通用计算客户端;
步骤5:通用计算客户端将步骤4得到的计算结果作为本地调用返回通用计算应用程序,实现基于动态库拦截和重定向的通用计算虚拟化;
所述运行于虚拟环境中的通用计算客户端负责将通用计算应用程序的本地请求重定向到位于虚拟环境外部的服务器;
所述构建运行于虚拟环境中的通用计算客户端的构建过程为通过构建一个与通用计算标准运行库同名的动态库,命名为伪库,将伪库存放在默认的库搜索范围内,使得伪库被通用计算程序和操作系统认定为支持通用计算的标准运行时库;将伪库载入内存,伪库内部函数被操作系统映射到所用通用计算程序的地址空间,使得伪库内的函数取代真库的函数;其中,通用计算标准运行库由显卡生产商提供,简称为真库;伪库中的所有接口的定义、函数名称及函数参数均与真库相同;
所述通用计算服务器是一个用户层应用程序,它依据通用计算客户端发来的请求调用原生底层显卡驱动程序,并将请求的计算结果返回通用计算客户端。
2.根据权利要求1所述的基于动态库拦截和重定向的通用计算虚拟化实现方法,其特征在于,对伪库中的接口进行封装和虚拟化过程包括以下四种类型;
远程执行型:通用计算客户端将原始的函数名和参数传递给服务器,由通用计算服务器执行并将结果返回至通用计算应用程序,作为通用计算应用程序的函数返回值;
本地替代型:使用本地函数malloc替代具有耦合特性的mallocHost接口函数,减少远程过程调用和虚拟机切换的开销;
远程替代型:通用计算服务器将异步版本的通用计算接口转化为同步版本的通用计算接口;
指针同步型:传递指针代表的数据,并在通用计算服务器端重新建立指针与指针所代表数据之间的引用关系。
3.根据权利要求2所述的基于动态库拦截和重定向的通用计算虚拟化实现方法,其特征在于,所述步骤2的GPU显存的分配中,通用计算客户端在本地建立虚拟的GPU镜像步骤如下:
1)在每一个具备物理GPU的节点设置服用计算服务桩程序,当该节点启动时,自动向通用计算服务器报告该节点所拥有的GPU数量和GPU的计算能力;
2)利用通用计算服务器对按照GPU的计算能力对GPU进行归类,为每一个物理GPU建立索引号,标记所有GPU的状态为“空闲”;
3)通用计算机应用程序向通用计算客户端请求通用计算设备;
4)通用计算客户端向通用计算服务器申请相应数量的设备;
5)通用计算服务器选择相应数量的设备,标记该设备状态为“使用中”,将被选中的设备的索引号返回客户端;
6)通用计算客户端向通用计算应用程序返回申请结果,获得本地的虚拟GPU镜像。
4.根据权利要求3所述的基于动态库拦截和重定向的通用计算虚拟化实现方法,其特征在于,通用计算资源在虚拟机上实现多路复用包括空分复用和时分复用;
通用计算资源指为实现通用计算所需要的软硬件集合,包括:通用计算用户库、通用计算运行时库、显卡驱动程序及显卡(含GPU);
其中,空分复用是从空间上分割以显存为主的GPU资源,将显存的不同部分交由不同的用户使用;时分是将GPU资源的使用时间划分多个片段,多个用户轮流使用其中的一个或一组时间片。
CN201410034982.6A 2014-01-25 2014-01-25 一种基于动态库拦截的通用计算虚拟化实现方法 Active CN103761139B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410034982.6A CN103761139B (zh) 2014-01-25 2014-01-25 一种基于动态库拦截的通用计算虚拟化实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410034982.6A CN103761139B (zh) 2014-01-25 2014-01-25 一种基于动态库拦截的通用计算虚拟化实现方法

Publications (2)

Publication Number Publication Date
CN103761139A true CN103761139A (zh) 2014-04-30
CN103761139B CN103761139B (zh) 2017-02-08

Family

ID=50528383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410034982.6A Active CN103761139B (zh) 2014-01-25 2014-01-25 一种基于动态库拦截的通用计算虚拟化实现方法

Country Status (1)

Country Link
CN (1) CN103761139B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677479A (zh) * 2015-12-30 2016-06-15 北京奇艺世纪科技有限公司 并行运行gpu运算程序的实现方法及装置
WO2016149892A1 (en) * 2015-03-23 2016-09-29 Intel Corporation Shadow command ring for graphics processor virtualization
CN106155804A (zh) * 2015-04-12 2016-11-23 北京典赞科技有限公司 对gpu云计算资源统一管理服务的方法和系统
CN106708602A (zh) * 2016-12-27 2017-05-24 郑州云海信息技术有限公司 基于半虚拟化的通用计算方法及系统
CN107247629A (zh) * 2017-07-04 2017-10-13 北京百度网讯科技有限公司 云计算系统及用于控制服务器的云计算方法和装置
CN107329834A (zh) * 2017-07-04 2017-11-07 北京百度网讯科技有限公司 用于执行计算任务的方法和装置
CN107341020A (zh) * 2017-07-12 2017-11-10 浙江键石信息科技有限公司 显卡虚拟化的实现方法及装置、桌面云系统及终端设备
CN107943592A (zh) * 2017-12-13 2018-04-20 江苏省邮电规划设计院有限责任公司 一种面向gpu集群环境的避免gpu资源争用的方法
CN108027751A (zh) * 2015-09-14 2018-05-11 高通股份有限公司 对多版本任务的高效调度
WO2018196462A1 (zh) * 2017-04-26 2018-11-01 中兴通讯股份有限公司 资源调度装置、资源调度系统和资源调度方法
CN108984264A (zh) * 2017-06-02 2018-12-11 阿里巴巴集团控股有限公司 虚拟gpu的实现方法、装置及系统
CN109325345A (zh) * 2018-09-21 2019-02-12 百度在线网络技术(北京)有限公司 用于在沙盒环境中运行第三方代码的方法和装置
CN109981367A (zh) * 2019-03-28 2019-07-05 湖南大学 基于内网穿透的虚机paas服务管理的方法
CN110046027A (zh) * 2019-04-23 2019-07-23 山东超越数控电子股份有限公司 一种虚拟化平台实现方法及虚拟化平台
CN110503593A (zh) * 2018-05-18 2019-11-26 微软技术许可有限责任公司 多个图形处理单元的调度
CN111223036A (zh) * 2019-12-29 2020-06-02 广东浪潮大数据研究有限公司 一种gpu虚拟化共享方法、装置及电子设备和存储介质
CN111400035A (zh) * 2020-03-04 2020-07-10 杭州海康威视系统技术有限公司 一种显存分配方法、装置、电子设备及存储介质
CN115390945A (zh) * 2022-09-06 2022-11-25 北京领雾科技有限公司 应用程序的运行方法、装置、电子设备及可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111966504B (zh) * 2020-10-23 2021-02-09 腾讯科技(深圳)有限公司 图形处理器中的任务处理方法及相关设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419558A (zh) * 2008-11-13 2009-04-29 湖南大学 Cuda图形子系统虚拟化方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419558A (zh) * 2008-11-13 2009-04-29 湖南大学 Cuda图形子系统虚拟化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LIN SHI等: ""vCUDA GPU-Accelerated High-Performance Computing in Virtual Machines "", 《IEEE TRANSACTIONS ON COMPUTERS 》 *
石林: ""GPU通用计算虚拟化方法研究"", 《博士学位论文全文数据库(信息科技辑)》 *

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016149892A1 (en) * 2015-03-23 2016-09-29 Intel Corporation Shadow command ring for graphics processor virtualization
US10481937B2 (en) 2015-03-23 2019-11-19 Intel Corporation Shadow command ring for graphics processor virtualization
CN106155804A (zh) * 2015-04-12 2016-11-23 北京典赞科技有限公司 对gpu云计算资源统一管理服务的方法和系统
CN108027751A (zh) * 2015-09-14 2018-05-11 高通股份有限公司 对多版本任务的高效调度
CN105677479B (zh) * 2015-12-30 2019-05-10 北京奇艺世纪科技有限公司 并行运行gpu运算程序的实现方法及装置
CN105677479A (zh) * 2015-12-30 2016-06-15 北京奇艺世纪科技有限公司 并行运行gpu运算程序的实现方法及装置
CN106708602A (zh) * 2016-12-27 2017-05-24 郑州云海信息技术有限公司 基于半虚拟化的通用计算方法及系统
CN106708602B (zh) * 2016-12-27 2021-02-02 苏州浪潮智能科技有限公司 基于半虚拟化的通用计算方法及系统
WO2018196462A1 (zh) * 2017-04-26 2018-11-01 中兴通讯股份有限公司 资源调度装置、资源调度系统和资源调度方法
CN108984264A (zh) * 2017-06-02 2018-12-11 阿里巴巴集团控股有限公司 虚拟gpu的实现方法、装置及系统
CN107247629A (zh) * 2017-07-04 2017-10-13 北京百度网讯科技有限公司 云计算系统及用于控制服务器的云计算方法和装置
CN107329834A (zh) * 2017-07-04 2017-11-07 北京百度网讯科技有限公司 用于执行计算任务的方法和装置
CN107341020A (zh) * 2017-07-12 2017-11-10 浙江键石信息科技有限公司 显卡虚拟化的实现方法及装置、桌面云系统及终端设备
CN107943592B (zh) * 2017-12-13 2020-06-12 中通服咨询设计研究院有限公司 一种面向gpu集群环境的避免gpu资源争用的方法
CN107943592A (zh) * 2017-12-13 2018-04-20 江苏省邮电规划设计院有限责任公司 一种面向gpu集群环境的避免gpu资源争用的方法
CN110503593A (zh) * 2018-05-18 2019-11-26 微软技术许可有限责任公司 多个图形处理单元的调度
US11983564B2 (en) 2018-05-18 2024-05-14 Microsoft Technology Licensing, Llc Scheduling of a plurality of graphic processing units
CN109325345A (zh) * 2018-09-21 2019-02-12 百度在线网络技术(北京)有限公司 用于在沙盒环境中运行第三方代码的方法和装置
CN109981367A (zh) * 2019-03-28 2019-07-05 湖南大学 基于内网穿透的虚机paas服务管理的方法
CN109981367B (zh) * 2019-03-28 2021-05-07 湖南大学 基于内网穿透的虚机paas服务管理的方法
CN110046027A (zh) * 2019-04-23 2019-07-23 山东超越数控电子股份有限公司 一种虚拟化平台实现方法及虚拟化平台
CN111223036B (zh) * 2019-12-29 2023-11-03 广东浪潮大数据研究有限公司 一种gpu虚拟化共享方法、装置及电子设备和存储介质
CN111223036A (zh) * 2019-12-29 2020-06-02 广东浪潮大数据研究有限公司 一种gpu虚拟化共享方法、装置及电子设备和存储介质
CN111400035A (zh) * 2020-03-04 2020-07-10 杭州海康威视系统技术有限公司 一种显存分配方法、装置、电子设备及存储介质
CN115390945B (zh) * 2022-09-06 2023-05-23 北京领雾科技有限公司 应用程序的运行方法、装置、电子设备及可读存储介质
CN115390945A (zh) * 2022-09-06 2022-11-25 北京领雾科技有限公司 应用程序的运行方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN103761139B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN103761139A (zh) 一种基于动态库拦截的通用计算虚拟化实现方法
Phillips et al. Adapting a message-driven parallel application to GPU-accelerated clusters
CN101727351B (zh) 面向多核平台的虚拟机监控器非对称调度器及其调度方法
CN110719206B (zh) 天基fpga虚拟化计算服务系统、方法和可读存储介质
CN104536937B (zh) 基于cpu‑gpu异构集群的大数据一体机实现方法
CN101419558A (zh) Cuda图形子系统虚拟化方法
US20150067356A1 (en) Power manager for multi-threaded data processor
CN105045658A (zh) 一种利用多核嵌入式dsp实现动态任务调度分发的方法
US8917279B2 (en) Method and system to dynamically bind and unbind applications on a general purpose graphics processing unit
CN106020934A (zh) 一种基于虚拟集群在线迁移的优化部署方法
CN101788920A (zh) 一种基于处理器分区技术的cpu虚拟化方法
CN103793255B (zh) 可配置的多主模式多os内核实时操作系统架构的启动方法
CN110427246A (zh) 多核虚拟分区重构系统
CN102591709B (zh) 基于OGR的shapefile文件主从式并行写方法
Zou et al. Design and implementation of hybrid cloud computing architecture based on cloud bus
CN102833310A (zh) 一种基于虚拟化技术的工作流引擎集群系统
CN103034526B (zh) 一种虚拟化服务的实现方法和装置
CN113495857A (zh) 存储器错误隔离技术
CN105335176A (zh) 一种调用安装于电子设备上的应用的方法及装置
Alves et al. cl OpenCL-supporting distributed heterogeneous computing in HPC clusters
Kim et al. A distributed OpenCL framework using redundant computation and data replication
CN105573672A (zh) 一种基于nfs的虚拟化存储方法和系统
CN113835897A (zh) 一种在分布式计算集群Kubernetes上对GPU资源进行分配使用的方法
Koenig et al. Optimizing distributed application performance using dynamic grid topology-aware load balancing
Ahrens et al. PaTraCo: a framework enabling the transparent and efficient programming of heterogeneous compute networks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant