GPU虚拟化是什么意,具体怎么实现?

丽台中国


1。主要看到公有云的主要规格是cpu,内存和存储,没有gpu,但大家提到CPU计算能力和gpu计算能力有很大差异,有必要归入不同的资源,也应该提供不同的虚拟化资源。但是目前还没看到,为什么? 2。如果应用者编写了某些基于神经网络的算法,希望利用gpu运行,那是否在目前公有云租用的虚拟主机或集群里是实现不了的? 3。另外当前主流服务商如aws,微软,提供的数据挖掘算法服务,这些服务是在传统的CPU资源上运行,还是有后台的gpu资源支撑运行。


404err


GPU虚拟化指的就是显卡虚拟化,这种显卡并不是一般的显卡,通常是服务器专用的显卡,比如英伟达的tesla系列显卡。

要实现GPU虚拟化还需要虚拟化产品的支持,只有在虚拟化环境里才能实现GPU虚拟化。它可以把一块显卡虚拟成多个显卡供虚拟机使用,虚拟环境也可以把显卡直通给虚拟机使用,这样性能更强。

GPU虚拟化通常是用在桌面云环境里,现在常用的桌面云环境有:华为桌面云、VMware桌面云、Citrix桌面云,实现技术大同小异。


技术宅在家


显卡虚拟化(GPU虚拟化)

显卡虚拟化就是将显卡进行切片,并将这些显卡时间片分配给虚拟机使用的过程。由于支持显卡虚拟化的显卡一般可以根据需要切分成不同的规格的时间片,因此可以分配给多台虚拟机使用。

其实现原理其实就是利用应用层接口虚拟化(API remoting),API重定向是指在应用层进行拦截与GPU相关的应用程序编程接口(Application ProgrammingInterface,API),通过重定向(仍然使用GPU)的方式完成相应功能,再将执行结果返回应用程序

我们现在使用3D桌面虚拟化解决方案中,大部分是使用NVIDIA公司提供的显卡虚拟化技术,即是vCUDA(virtual CUDA)技术,前面我们说过了CUDA框架。vCUDA采用在用户层拦截和重定向CUDA API的方法,在虚拟机中建立物理GPU的逻辑映像――虚拟GPU,实现GPU资源的细粒度划分、重组和再利用,支持多机并发、挂起恢复等虚拟机高级特性。

其vCUDA的实现原理大概如下:包括三个模块:CUDA客户端、CUDA服务端和CUDA管理端。以XenServer为例,在物理硬件资源上运行着一个VMM用于向上提供硬件映像,在VMM上运行着若干个虚拟机。其中一个虚拟机为特权虚拟机(Host VM),即为XenServer中的Domain 0,在虚拟机中运行的操作系统称为

Host OS。Host OS能够直接控制硬件,系统内安装着原生的CUDA库以及GPU驱动,使得Host OS可以直接访问GPU和使用CUDA。其它的虚拟机属于非特权虚拟机(Guest VM),其上运行的操作系统(Guest OS)不能直接操纵GPU。在这里我们将CUDA客户端称之为客户端驱动,CUDA服务端称之为宿主机的驱动,CUDA管理端称之为GPU管理器。


分享到:


相關文章: