CN105487915A - 一种基于延迟发送机制的gpu虚拟化性能提升的方法 - Google Patents

一种基于延迟发送机制的gpu虚拟化性能提升的方法 Download PDF

Info

Publication number
CN105487915A
CN105487915A CN201510818290.5A CN201510818290A CN105487915A CN 105487915 A CN105487915 A CN 105487915A CN 201510818290 A CN201510818290 A CN 201510818290A CN 105487915 A CN105487915 A CN 105487915A
Authority
CN
China
Prior art keywords
gpu
loop body
delayed
data dependence
parameter
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
CN201510818290.5A
Other languages
English (en)
Other versions
CN105487915B (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.)
Shanghai Junesh Information Technology Co Ltd
Original Assignee
Shanghai Junesh Information Technology Co Ltd
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 Shanghai Junesh Information Technology Co Ltd filed Critical Shanghai Junesh Information Technology Co Ltd
Priority to CN201510818290.5A priority Critical patent/CN105487915B/zh
Publication of CN105487915A publication Critical patent/CN105487915A/zh
Application granted granted Critical
Publication of CN105487915B publication Critical patent/CN105487915B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Abstract

本发明公开了一种基于延迟发送机制的GPU虚拟化性能提升的方法,采用GPU独占和API重定向相结合的GPU虚拟化方法,利用延迟发送的机制,并通过虚拟机之间共享内存的方法来减少GPU交互次数,从而提高GPU虚拟化性能。本发明根据循环体中的参数变化和数据依赖的不同情况给出了三种延迟发送指令提交的方法,分别是:第一种是在没有参数和数据变化下延迟发送;第二种是没有数据依赖和有参数的变化下延迟发送;第三种是没有参数变化,却有数据依赖的延迟发送。根据具体情况来选择使用这三种延迟发送方法来降低发送的次数,通过延迟发送指令的方法来充分利用GPU物理资源,使虚拟机几乎达到跟实体机同样的效果。

Description

一种基于延迟发送机制的GPU虚拟化性能提升的方法
技术领域
本发明涉及计算机操作系统与虚拟化技术领域,具体是一种基于延迟发送机制的GPU虚拟化性能提升的方法。
背景技术
桌面虚拟化作为典型的云计算应用,可以为用户提供远程计算机桌面服务。虚拟桌面有很多优势,具备提供随时随地访问桌面的能力,降低软硬件的管理和维护成本等特点,这使得虚拟桌面具有广阔的应用前景。虚拟化桌面技术在传统应用处理、远程办公等业务方面具有独特优势,但是涉及到3D图形处理时,仍然面临着很大的挑战。当前有许多的桌面虚拟化业务仅能提供基本的2D图形业务,不能支持3D图形处理任务;其次3D的处理能力有限,对于GPU显存要求较高的任务基本上不能很好地执行。即,问题的关键在于系统的虚拟GPU性能与物理GPU性能具有一定差距,对于3D的图形加速功能还不能提供良好的支持。
随着虚拟化技术的不断推进,桌面虚拟化中CPU的虚拟化已经发展到相对成熟的阶段,依靠CPU模拟GPU基本可以支持普通视频播放,能较稳定地支持一定的2D图形业务,但是物理机中GPU的使用几乎为零。然而虚拟化技术中GPU的虚拟化技术,最近几年却没有更多的突破,再加上GPU厂商对于GPU硬件规范保密,使得GPU虚拟化的难度系数加大。因而GPU的虚拟化的发展已经远远低于其他虚拟化的发展速度,正是因为这一点往往成为了桌面虚拟化系统性能的瓶颈。据调查,用户已经不满足云桌面初始基本办公的需求,而对多媒体内容应用、图形设计软件应用的需求越来越强烈。可见,GPU虚拟化将大幅度提高虚拟机性能。
在QEMU-KVM环境中,可以知道多个台客户虚拟机都运行在一个宿主机之上,每台客户机的CPU、内存以及I/O都是由底层KVM虚拟化支持。像GPU、声卡、网卡等其他部件由QEMU来模拟。对于客户机而言,认为所有的物理硬件都是齐全的一台机器;对于宿主机而言,所有的客户机只是在它上面运行的一个进程,在虚拟机中跑的指令包括GPU有关的所有指令的运行都是靠CPU来执行,图形业务都是靠CPU来仿真实现的,物理机中GPU使用率几乎没有,若将GPU利用,对其采用虚拟化技术或者是一些虚拟化方法,让KVM环境中的虚拟机能够使用GPU资源,这样可以将图形业务交由GPU来执行,在一定程度上极大地减轻了CPU负担。由CPU与GPU共同协作支持虚拟机从而提高了虚拟机的性能,在整体上提高整个环境中的虚拟化的性能,虚拟机在运行时,将其图形渲染操作全部交由GPU来执行,不再使用CPU仿真,释放传统KVM环境中CPU在图形操作上的负担。因此,这将降低CPU负担。此外类似的还有将浮点运算,矩阵运算的作业交由GPU来执行,从而进一步降低CPU运算负担。
目前在KVM环境下的GPU虚拟化相对比较复杂,没有很完善的方法。GPU虚拟化除了CPU仿真外,还有GPU设备独占和GPU的API重定向,前一种方法虽然能获得GPU资源但是其他虚拟机包括宿主机无法再利用GPU资源了,后一种方法是在KVM环境下的虚拟机无法直接获得GPU资源,因此需要将虚拟机与宿主机的GPU人为修改,将虚拟机的跟图形有关的指令捕获,发送至GPU来执行。这种方式存在一个问题,图形业务指令在前端与后端不停地交互,在移动程度上开销特别大,甚至在一定程度的时候已经超过了CPU仿真的开销,虽然这种方法实现了在KVM环境的GPU使用问题,但是对于GPU虚拟化的性能有很大的损失。
采用GPU虚拟化后,经过试验发现,图形指令数据传输次数会导致GPU虚拟化的性能严重下降,也就是说图形指令数据传输次数过多时,GPU虚拟化性能会大幅度下降。因而,急切需要一种能够在KVM环境下的桌面云环境中对GPU虚拟化性能提升的方法,通过利用良好GPU虚拟化方法,提高虚拟机使用性能,来保证有一定负载的情况下虚拟机的正常运行以及良好的体验。
发明内容
本发明的目的在于提供一种桌面云环境下基于延迟发送机制的GPU虚拟化性能提升的方法,在KVM环境下采用的GPU独占和GPUAPI重定向相结合的方法,在解决KVM环境中桌面虚拟化的图形显示不足问题的同时,利用延迟发送手段提高GPU虚拟化性能,以更好的提高虚拟机使用效果,提升3D图形显示,来提高用户体验。
为实现上述目的,本发明提供如下技术方案:
一种基于延迟发送机制的GPU虚拟化性能提升的方法,使用GPU独占和API重定向相结合的GPU虚拟化方法,通过减少指令传输的次数来提高GPU虚拟化性能;根据循环体中的参数变化和数据依赖的不同情况提供三种延迟提交方法,第一种延迟提交方法为:每次循环时,不需要将循环体中的有关函数名和参数信息缓存,只要将有关信息缓存一次即可;第二种延迟提交方法为:每次将循环时的信息都进行缓存,等到循环结束后再一次性将这些信息传给图形设备虚拟机执行;第三种延迟提交方法为:在缓存循环中CUDAAPI的函数名和参数信息时,将那些没有数据依赖的参数,直接缓存其参数值;对于那些有数据依赖的参数,采用不直接缓存参数,而是缓存参数表达式系数的方法,等待GPU根据已知计算得出数据,传回,然后等循环结束后再一次性将缓存的信息传给GPU独占设备虚拟机;所述方法具体包括以下步骤:
步骤一:首先找到CUDA程序中的循环体,然后判断该循环体中是否包含CUDAAPI;
步骤二:如果循环体中不包含CUDAAPI,则继续寻找下一个循环体;如果循环体中包含有CUDAAPI,接着判断该循环体中是否有参数变化;
步骤三:如果该循环体没有参数变化且没有数据依赖,则使用第一种延迟提交方法;如果该循环体没有参数变化但有数据依赖,则采用第三种延迟提交方法;
步骤四:如果该循环体有参数变化但没有数据依赖,则采用第二种延迟提交方法;
步骤五:如果该循环体有参数变化且有数据依赖,则采用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定。
作为本发明进一步的方案:所述的采用GPU独占和GPUAPI重定向相结合的GPU虚拟化方法,利用其KVM下对GPUpass-though的支持,可实现GPU对某一虚拟机的绑定,构建独占GPU的虚拟机。通过调用该驱动可充分实现GPU的全部特性;含GPU的虚拟机与需要GPU资源的虚拟机利用虚拟机之间共享数据和指令存储空间来使用物理GPU资源,通过这种GPU虚拟化方法降低由于数据复制和传输带来的延时:首先,GPU虚拟化后的虚拟机对图形操作任务可交由GPU来处理,降低了CPU负担,提高运算性能;其次,采用基于延迟发送的机制来降低与图形有关的调用的次数来提高GPU虚拟化性能。
作为本发明进一步的方案:所述的三种延迟提交方法均将交互次数降低到一次。
作为本发明进一步的方案:所述的步骤一中,判断循环体,找到CUDA程序中可以采用延迟提交的循环体,利用CUDAAPI来对这些循环体进行标记,也就是在循环体开始之前和结束之后调用这些CUDAAPI,从而得出哪些循环体需要延迟提交。
作为本发明进一步的方案:所述的步骤二中,循环体中存在一些函数(如cudaMemcpy),判断其参数是否有变化,还是随着循环变化函数与函数之间参数构成数据依赖。
作为本发明进一步的方案:所述的步骤三中,通过判断循环体中CUDAAPI的参数和数据依赖,在得到循环体中没有参数变化,也没有数据依赖的情况下,使用第一种延迟提交方法;如果不断循环体后有数据依赖,而没有参数变化的情况下,使用第三种延迟提交方法。
作为本发明进一步的方案:所述的步骤四中,通过判断循环体中CUDAAPI的参数变化和数据依赖:得到循环体中存在参数变化,但是循环中不存在数据依赖,使用第二种延迟提交方法。
作为本发明进一步的方案:所述的步骤五中,在判断循环体有参数变化又有数据依赖的情况下,使用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定,通过GPU利用相关系数结合变量当时的值来计算出参数值,同样类似于第三种延迟提交方法也将交互次数降低到一次。
与现有技术相比,本发明的有益效果是:
本发明针在KVM环境下的GPU虚拟化,采用的是一种设备独占和API重定向结合的GPU虚拟化方法,这种方法有一定架构优势,同时该方法的优势是避开因为GPU厂商的硬件规范保密。采用该方法包括两部分:(1)GPU独占设备部分,即由Hypervisor创建一台虚拟机,将其作为独占GPU设备的虚拟机,使用GPU厂商发布的专用的设备驱动,安装好驱动后,通过调用该驱动可以充分实现GPU的全部特性。这样该虚拟机就通过独占GPU后使得该虚拟机获得了与物理机相似的图形处理能力。(2)在API重定向部分,通过利用Hypervisor创建新的一批虚拟机,由于这一些虚拟机不能直接与GPU交互,采用的是通过对虚拟机内存虚拟部分的一定修改,利用直接共享内存空间传输的方式与GPU独占部分的那台虚拟机交互,这样一来降低了由于数据复制和传输带来的延时。然后独占设备虚拟机通过使用cudaMemcpyAPI从内存中将数据传到GPU显存中,再调用这个API将数据从GPU传回内存。基于这种GPU虚拟化方法的优势是避免了传统的API重定向存在的GPU指令拦截,也避免了虚拟机指令由虚拟地址向真实地址的地址映射所带来的开销,同时也不需要对图形相关的指令的进行特殊处理。相对于单一的API重定向来说,在一定程度上,提高了效率。
本发明主要是通过减少与GPU相关的指令数据传输次数,来提升GPU虚拟化性能。采用GPU独占和API重定向结合的方式对数据量的传输是有一定的优化,在一定程度上改善了GPU虚拟化。但是对于图形相关数据传输的次数,即图形有关指令在与GPU交互频繁时,交互的开销会增大,从而GPU性能会出现大幅度下降。由于频繁的指令传输,与GPU交互会加大系统的负担,因为每次交互都会产生一定开销,开销累积到一定程度会降低虚拟化性能,无论是GPU还是虚拟的整体性能。为此,基于数据传输次数,提出一种延迟提交方法。延迟提交方法主要是对CUDA程序中含有CUDAAPI的循环进行处理,通过得知每次未含有GPU独占的虚拟机的CUDAAPI调用都需要将其重写放入共享内存中,然后传送给含GPU的虚拟机的真实硬件设备执行后,再将其结果返回的过程。这样每次调用都会有一次交互,当发送的循环体中的CUDAAPI被循环调用N次时,意味需要交互N次,如此势必会制约虚拟机的性能,导致性能下降非常严重。延迟提交方法的思想是延迟CUDAAPI的递交,原来每次循环调用一次CUDAAPI就需要进行一次提交,总提交次数为循环体中CUDAAPI的个数乘以循环次数。而使用延迟递交方法后,采用的是将CUDAAPI的循环体整体递交的方法,也就只需要等待循环结束后进行一次性的提交,这样一来总的提交次数为1。为此只需要将每次循环时的CUDAAPI的函数名和参数信息缓存,在循环结束后再一次性传给GPU执行。采用这一种方法能很好地达到降低交互的效果,提高虚拟机性能。
在基于延迟发送机制下,有的循环中CUDAAPI的参数会随着循环次数变化,有的循环中存在数据依赖。为了解决这个问题,提出了改进延迟提交的使用方法。对于仅有参数变化的采用每次循环时的信息都进行缓存,等到循环结束后再一次性将这些信息传给图形设备虚拟机执行,有数据变化而参数稳定的方法的核心思想是:力求将传输次数降低到一次。即在缓存循环中CUDAAPI的函数名和参数信息时,对于那些没有数据依赖的参数,直接缓存参数值;对于那些有数据依赖的参数,并不直接缓存参数值,而缓存参数表达式的系数,等循环结束后再一次性将缓存的信息传给GPU。含GPU虚拟机利用表达式系数,结合变量当时的值,重新计算出参数值。由于CUDAAPI的参数固定不变,并不需要将每次循环时的函数名和参数信息缓存,而只需将循环体中的信息缓存一次即可。延迟提交将交互次数降低到一次,数据传输量减少到一个循环体。采用这种延迟方式可以大大减少不必要的交互,提高GPU虚拟化性能。同时存在参数变化和数据依赖的采用的是将循环次数也作为参数表达式中的一个变量,对其系数进行待定来处理。
本发明根据具体情况来选择使用这三种延迟发送方法来降低发送的次数,通过延迟发送指令的方法来充分利用GPU物理资源,使虚拟机几乎达到跟实体机同样的效果。
附图说明
图1是混合结构的虚拟机独占GPU示意图;
图2是混合结构的虚拟机共享内存交互图;
图3是延迟发送的流程图。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1和2,本发明所满足的虚拟化环境是在KVM环境下,使用的GPU虚拟化方法是基于GPU独占和GPUAPI重定向的方法。本发明的虚拟化混合结构,包括两个部分:
独占设备部分是由Hypervisor创建一台虚拟机,对其做GPU独占,如图1所示。这台包含有GPU的虚拟机,被认为是一个虚拟的图形设备,通过安装该型号GPU的专有设备驱动,便可以由虚拟机根据GPU的特性,对其进行调度管理,其中包括GPU通道、环境、内存等管理,这样该虚拟获得了全部的GPU物理资源。因此采用独占式的虚拟化实施方案会让该虚拟机获得与物理机相似的图形处理能力。该虚拟机还将与之交互的子虚拟机提供相应的捕捉、渲染和压缩功能。图形设备虚拟机接到请求,将任务交由GPU完成。
API重定向部分(如图2所示)是由Hypervisor创建的未直接获得GPU物理资源的虚拟机,这些虚拟机原本是通过CPU仿真的方式来实现GPU虚拟化,此方法中通过修改相关指令,将其与GPU交互的指令定向到独占GPU物理资源的虚拟机,由于都是由Hypervisor创建的虚拟机,它们可以通过共享内存的方式来递交与图形相关的指令,然后由包含有GPU的虚拟机向其GPU发送指令,执行后按照原路将相关数据传送回发送指令的虚拟机,从而可以不断的刷新虚拟桌面图像。这种虚拟机之间的共享数据和指令存储空间,类比传统的API重定向,前端向后端发送数据指令,在一定程度上降低了数据复制和传输带来的延时。从而有利于GPU虚拟化性能提高。
本发明方法基于延迟发送机制,采用的对已知CUDA函数循环体判断后,根据参数变化和数据依赖不同而设计的三种延迟提交方法如下:
第一种延迟提交方法,首先得出从已知的循环体中通过判断CUDAAPI的参数不会随着循环次数变化,并且在循环中不存在数据依赖。已经知道其参数和数据依赖关系不会随着循环次数变化而变化。即在循环过程中,采用的是不再每次循环时将相关函数名和参数信息缓存一次。而只需要在循环时,将循环体中的有关信息缓存一次即可。等循环结束后再一次性将缓存的信息传给GPU设备执行。第一种延迟提交方法是将延迟提交将交互降低到一次,数据传输量也减少到一个循环体。
第二种延迟提交方法与第一种延迟提交方法有些类似,该方法不同于第一种延迟提交方法的地方为,根据从已知循环体中判断CUDAAPI的参数会随着循环次数变化而变化,但是循环体中不存在数据的依赖。由于CUDAAPI的参数随着循环次数变化,不能类似第一种延迟提交方法,只缓存一次循环时的函数名和参数信息。采用第二种延迟提交方法需要将每次循环时的信息都进行缓存。由循环中缓存了相关的参数变化的数据,不会影响到参数变化。等到循环结束后再一次性将这些信息传给GPU设备来执行。同理第二种延迟提交方法也是将交互次数降低到一次。
第三种延迟提交方法,与前面两种延迟提交方法不同的是该方法根据CUDAAPI的参数不会随着循环次数变化,但是循环中存在数据依赖,即数据处理上要进行处理。该方法的核心思想是在缓存循环中CUDAAPI的函数名和参数信息时,对于那些没有数据依赖的参数,直接缓存参数值;对于那些有数据依赖的参数,并不直接缓存参数值,而缓存参数表达式的系数。等循环结束后再一次性将缓存的信息传给图形设备虚拟机。在第三种延迟提交方法的实现过程中,需要缓存以下两类信息:
第一类信息,为了在第n次循环结束后可以联立方程组求出系数的值,需要缓存前n次循环中有数据依赖的参数表达式的值。即每次循环时,与参数有关的系数都要存下来,最后得到一个方程组,通过求解得出相关值。
第二类信息,为了图形相关指令降低发送次数,需要在最后一次循环时将CUDAAPI的函数名和参数信息缓存。
这里使用含GPU的虚拟机,它会利用表达式系数,结合变量当时的值,对于该方程组,可以采用高斯消去法对赋值后的方程式进行编程求解,重新计算出参数值。由于CUDAAPI的参数固定不变,并不需要将每次循环时的函数名和参数信息缓存。而只需将循环体中的信息缓存一次即可。最后再一次性的把相关的这些信息传给GPU设备来执行。第三种延迟提交方法将交互次数降低到一次,数据传输量减少到一个循环体。
在本发明所使用的基于延迟发送机制的方案实施之前,要解决的问题是如何判断一个CUDA程序中哪些部分可以采用延迟提交方法。首先采用的办法是通过借助已知的某种编译技术来实现判断一个CUDA循环体中是否有参数变化和是否有数据依赖,找出CUDA程序中可以采用的延迟递交的循环体,然后使用一些不常用的CUDAAPI(例如:cudaSetDevice和cudaSetDeviceFlags不常用的CUDAAPI)对该循环体进行标记,即分别在循环体开始之前和结束后调用这些不常用的CUDAAPI,即在循环开始前选定一个不常用API(如:cudaSetDevice),在结束后选用另一个API(如:cudaSetDeviceFlags),通过这种方式,便可以很容易的知道在这两个函数之间的部分是需要采用延迟提交方法。
请参阅图3,一种基于延迟发送机制的GPU虚拟化性能提升的方法,采用延迟提交方法的步骤如下:
步骤一:首先根据开始描述的方法找到CUDA程序中的循环体,然后判断该循环体中是否包含CUDAAPI;
步骤二:如果在该循环体中不包括CUDA函数,则继续寻找下一个循环体;如果在该循环体中含有CUDA函数,那么接着就判断在已知的这个循环体中是否有参数变化;
步骤三:如果在已知的循环体中发现没有参数变化且没有数据依赖,则使用第一种延迟提交方法;如果在已知的循环体中没有参数变化但有数据依赖,则采用第三种延迟提交方法;
步骤四:如果在已知的循环体中有参数变化但没有数据依赖,则采用第二种延迟提交方法;
步骤五:如果在已知的循环体中有参数变化且有数据依赖,则可以采用与第三种延迟提交类似的方法,首先将循环次数也作为参数表达式中的一个变量,对其系数进行待定。
通过上面过程后,采用对应的延迟发送的方法,GPU执行后,再通过相关的接口统一将数据发送至含GPU的虚拟机,根据内存共享,传送至对应的虚拟机。
本发明根据具体情况来选择使用这三种延迟发送方法来降低发送的次数,通过延迟发送指令的方法来充分利用GPU物理资源,使虚拟机几乎达到跟实体机同样的效果。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (8)

1.一种基于延迟发送机制的GPU虚拟化性能提升的方法,使用GPU独占和API重定向相结合的GPU虚拟化方法,通过减少指令传输的次数来提高GPU虚拟化性能;其特征在于,所述方法具体包括以下步骤:
步骤一:首先找到CUDA程序中的循环体,然后判断该循环体中是否包含CUDAAPI;
步骤二:如果循环体中不包含CUDAAPI,则继续寻找下一个循环体;如果循环体中包含有CUDAAPI,接着判断该循环体中是否有参数变化;
步骤三:如果该循环体没有参数变化且没有数据依赖,则使用第一种延迟提交方法,该方法为,每次循环时,不需要将循环体中的有关函数名和参数信息缓存,只要将有关信息缓存一次即可;如果该循环体没有参数变化但有数据依赖,则采用第三种延迟提交方法,该方法为,在缓存循环中CUDAAPI的函数名和参数信息时,将那些没有数据依赖的参数,直接缓存其参数值,对于那些有数据依赖的参数,采用不直接缓存参数,而是缓存参数表达式系数的方法,等待GPU根据已知计算得出数据,传回,然后等循环结束后再一次性将缓存的信息传给GPU独占设备虚拟机;
步骤四:如果该循环体有参数变化但没有数据依赖,则采用第二种延迟提交方法,该方法为,每次将循环时的信息都进行缓存,等到循环结束后再一次性将这些信息传给图形设备虚拟机执行;
步骤五:如果该循环体有参数变化且有数据依赖,则采用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定。
2.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的采用GPU独占和GPUAPI重定向相结合的GPU虚拟化方法,利用其KVM下对GPUpass-though的支持,实现GPU对某一虚拟机的绑定,构建独占GPU的虚拟机,通过调用该驱动可充分实现GPU的全部特性;含GPU的虚拟机与需要GPU资源的虚拟机利用虚拟机之间共享数据和指令存储空间来使用物理GPU资源;GPU虚拟化后的虚拟机对图形操作任务交由GPU来处理。
3.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的三种延迟提交方法均将交互次数降低到一次。
4.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的步骤一中,判断循环体,找到CUDA程序中可以采用延迟提交的循环体,利用CUDAAPI来对这些循环体进行标记,也就是在循环体开始之前和结束之后调用这些CUDAAPI,从而得出哪些循环体需要延迟提交。
5.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的步骤二中,循环体中存在CUDAAPI函数,判断其参数是否有变化,还是随着循环变化函数与函数之间参数构成数据依赖。
6.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的步骤三中,通过判断循环体中CUDAAPI的参数和数据依赖,在得到循环体中没有参数变化,也没有数据依赖的情况下,使用第一种延迟提交方法;如果不断循环体后有数据依赖,而没有参数变化的情况下,使用第三种延迟提交方法。
7.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的步骤四中,通过判断循环体中CUDAAPI的参数变化和数据依赖,得到循环体中存在参数变化,但是循环中不存在数据依赖,使用第二种延迟提交方法。
8.根据权利要求1所述的基于延迟发送机制的GPU虚拟化性能提升的方法,其特征在于,所述的步骤五中,在判断循环体有参数变化又有数据依赖的情况下,使用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定,通过GPU利用相关系数结合变量当时的值来计算出参数值,将交互次数降低到一次。
CN201510818290.5A 2015-11-24 2015-11-24 一种基于延迟发送机制的gpu虚拟化性能提升的方法 Active CN105487915B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510818290.5A CN105487915B (zh) 2015-11-24 2015-11-24 一种基于延迟发送机制的gpu虚拟化性能提升的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510818290.5A CN105487915B (zh) 2015-11-24 2015-11-24 一种基于延迟发送机制的gpu虚拟化性能提升的方法

Publications (2)

Publication Number Publication Date
CN105487915A true CN105487915A (zh) 2016-04-13
CN105487915B CN105487915B (zh) 2018-11-27

Family

ID=55674911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510818290.5A Active CN105487915B (zh) 2015-11-24 2015-11-24 一种基于延迟发送机制的gpu虚拟化性能提升的方法

Country Status (1)

Country Link
CN (1) CN105487915B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406977A (zh) * 2016-08-26 2017-02-15 山东乾云启创信息科技股份有限公司 一种gpu虚拟化实现系统及方法
CN107003892A (zh) * 2016-12-29 2017-08-01 深圳前海达闼云端智能科技有限公司 Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102981807A (zh) * 2012-11-08 2013-03-20 北京大学 一种基于cuda并行环境的gpu程序优化方法
US20130191817A1 (en) * 2009-12-28 2013-07-25 Hyperion Core, Inc. Optimisation of loops and data flow sections
CN103955394A (zh) * 2014-04-03 2014-07-30 北京大学 一种基于推迟提交的gpu虚拟化优化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130191817A1 (en) * 2009-12-28 2013-07-25 Hyperion Core, Inc. Optimisation of loops and data flow sections
CN102981807A (zh) * 2012-11-08 2013-03-20 北京大学 一种基于cuda并行环境的gpu程序优化方法
CN103955394A (zh) * 2014-04-03 2014-07-30 北京大学 一种基于推迟提交的gpu虚拟化优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
石林: "GPU通及计算虚拟化方法研究", 《万方数据知识服务平台》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406977A (zh) * 2016-08-26 2017-02-15 山东乾云启创信息科技股份有限公司 一种gpu虚拟化实现系统及方法
CN106406977B (zh) * 2016-08-26 2019-06-11 山东乾云启创信息科技股份有限公司 一种gpu虚拟化实现系统及方法
CN107003892A (zh) * 2016-12-29 2017-08-01 深圳前海达闼云端智能科技有限公司 Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
WO2018119951A1 (zh) * 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品

Also Published As

Publication number Publication date
CN105487915B (zh) 2018-11-27

Similar Documents

Publication Publication Date Title
CN106406977B (zh) 一种gpu虚拟化实现系统及方法
CN102591702B (zh) 虚拟化处理方法及相关装置和计算机系统
US10635468B2 (en) Displaying graphics for local virtual machine by allocating and mapping textual buffer
CN105122210B (zh) Gpu虚拟化的实现方法及相关装置和系统
CN107223264A (zh) 一种渲染方法及装置
CN103763173B (zh) 数据传输方法和计算节点
US9311169B2 (en) Server based graphics processing techniques
CN102819449A (zh) 一种显卡重定向方法及系统
CN111158866A (zh) 一种引擎系统及其渲染方法
CN106020929A (zh) 一种虚拟化环境下支持3d应用的系统和方法
US9542715B2 (en) Memory space mapping techniques for server based graphics processing
CN111966504B (zh) 图形处理器中的任务处理方法及相关设备
US20180121220A1 (en) Gpu simulation method
US20160132346A1 (en) Memory Space Mapping Techniques for Server Based Graphics Processing
CN111209115A (zh) 云桌面vGPU超分配方法
CN104503825A (zh) 一种基于kvm混合式设备虚拟化方法
US9613390B2 (en) Host context techniques for server based graphics processing
CN110442389B (zh) 一种多桌面环境共享使用gpu的方法
US11784946B2 (en) Method for improving data flow and access for a neural network processor
WO2017045272A1 (zh) 虚拟机迁移方法和装置
CN105487915A (zh) 一种基于延迟发送机制的gpu虚拟化性能提升的方法
CN111274044A (zh) Gpu虚拟化资源限制处理方法及装置
CN117389694B (zh) 基于virtio-blk技术提升虚拟存储IO性能的方法
CN109388435A (zh) 实现app同时多次开启操作的方法和装置
WO2013112145A1 (en) User generated data center power savings

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant