首页 > 其他分享 >Nvidia GPU虚拟化

Nvidia GPU虚拟化

时间:2023-03-31 19:12:08浏览次数:46  
标签:虚拟化 Driver CUDA Nvidia GPU 资源

1 背景

随着Nvidia GPU在渲染、编解码和计算领域发挥着越来越重要的作用,各大软件厂商对于Nvidia GPU的研究也越来越深入,尽管Nvidia倾向于生态闭源,但受制于极大的硬件成本压力,提升GPU利用率、压榨GPU性能逐渐成为基础设施领域关注的焦点。自然地,为了追求GPU上显存资源和算力资源的时分复用和空分复用,大家都开始考虑软件定义GPU,GPU虚拟化应运而生。

2 GPU虚拟化

在深度学习领域,Nvidia GPU的软件调用栈大致如下图所示,从上至下分别为: User APP:业务层,如训练或推理任务等 Framework:框架层,如tensorflow、pytorch、paddle、megengine等 CUDA Runtime:CUDA Runtime及周边生态库,如cudart、cublas、cudnn、cufft、cusparse等 CUDA User Driver:用户态CUDA Driver,如cuda、nvml等 CUDA Kernel Driver:内核态CUDA Driver,参考官方开源代码,如nvidia.ko等 Nvidia GPU HW:GPU硬件 理论上,上述每一层都可以做GPU虚拟化,但从工程化的角度来看,考虑可行性、可维护性、overhead和部署方面,在CUDA Driver或硬件层实现更合适。

2.1 用户态虚拟化

目前比较常用的方法是在用户态CUDA Driver的动态库做劫持,参考cuda hook开源代码。通过拦截CUDA Driver API的调用,实现显存资源和算力资源的隔离。不仅对用户代码零侵入,而且灵活性较高,无论是部署在Bare Metal,还是结合容器化进行部署,都比较方便。

2.2 内核态虚拟化

通过劫持CUDA Driver动态库部署,可能会存在用户篡改的风险,在公有云上一般不能容忍。而内核态的优势在于可以一定程度上防止用户篡改,但由于Nvidia的闭源性,在内核态做显存资源和算力资源的隔离,技术难度较高。目前阿里云、腾讯云和百度云已经实现部署。  

2.3 硬件虚拟化

Nvidia官方硬件虚拟化方案MIG(Multi-Instance GPU),从Ampere架构开始支持硬件层面的隔离,隔离程度更彻底,但最多只支持7个GPU实例的虚拟化环境。
 

3 其他

3.1 vGPU

Nvidia官方虚拟GPU解决方案,主要用于支持交付图形丰富的虚拟桌面和工作站,可以将GPU资源重新划分,以保证GPU资源可以在多个虚拟机之间共享,或者可以将多个GPU分配给一个虚拟机,可提升任意工作负载的性能。

3.2 MPS(Multi-Process Service)

Nvidia官方多进程context融合方案,支持将多个进程上的kernel发送到MPS server或者直接发送到GPU上计算,避免了多进程在GPU上context的频繁切换。缺点是故障率较高,特别是故障在进程间扩散一般是不能容忍的。

3.3 远程GPU

将GPU Server拉远,实现GPU池化,突破CPU与GPU的配比极限,拓展GPU虚拟化,可以最大限度地利用集群内的GPU碎片,提升GPU的利用率。趋动科技的OrionX方案,目前处于领先地位。    

标签:虚拟化,Driver,CUDA,Nvidia,GPU,资源
From: https://www.cnblogs.com/bruceleely/p/17277240.html

相关文章

  • 虚拟化云计算-numa与pci查看
    最近在部署服务器上的云应用的时候,需要查看numas上cpu核心与pci网卡插槽的对应关系,总结了一些numa和pci的知识,希望可以帮助到其他人numa概念Non-UniformMemoryAccess,非统一内存访问(NUMA),一种用于多处理器的电脑内存体设计,内存访问时间取决于处理器的内存位置。在NUMA下,处......
  • YRCloudFile V6.10.0 功能新增对 NVIDIA GPUDirect 与回收站的支持
    近日,焱融科技发布分布式文件存储产品YRCloudFile V6.10.0版本。在该版本中,YRCloudFile首次支持了NVIDIAGPUDirectStorage(GDS)、新增回收站、数据加载热层清理等产品......
  • ubuntu22.04下安装nvidia-docker
    首先需要保证dockerengine已经安装成功,具体见:https://www.cnblogs.com/devilmaycry812839668/p/17269122.html  ======================================  nvi......
  • CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理
    作者:林苍背景容器无疑已经成为新的云计算基础设施,企业私有云平台的建设重心,正在从虚拟化的计算、存储、网络的建设,转向构建以容器、微服务等为核心的云原生平台。不过......
  • pytorch cuda gpu版本与detectron2、jupyter notebook安装
    任意版本的pytorch、cuda的gpu版本与detectron2、jupyternotebook安装1.简介本文主要介绍pytorchcudagpu版本与detectron2、jupyternotebook安装,主要是基于docker......
  • 问题:tensorflow指定了gpu运行,依旧使用cpu
    1、首先检查当前环境的cpu,gpu设备信息fromtensorflow.python.clientimportdevice_libas_device_liblocal_device_protos=_device_lib.list_local_devices()devi......
  • exsi虚拟化一站式
    #情境最近,想要入一台实体机服务器,之前公司有一台柜式服务器,是怎么装的呢?他是先装了一个windows,然后在window上面安装了vmware,之后再进行虚拟化如果创建一台新的虚拟机,要么......
  • 《操作系统导论》读书笔记1——CPU虚拟化,进程
    系列文章目录和关于我一丶CPU的虚拟化一个桃子,我们称之为物理(physical)桃子。但有很多想吃这个桃子的人,我们希望向每个想吃的人提供一个属于他的桃子,这样才能皆大欢喜。......
  • Zabbix监控VMware虚拟化指南
    第1章、 方案设计1.1、 简介自Zabbix2.2.0版本开始支持VMwarevCenter或vSphere版本最低为4.1。Zabbix可以使用低级别自动发现VMware宿主机和虚拟机,并根据事先定义的......
  • KVM虚拟化
    210303124王佳琳2023.2.16云计算与虚拟化技术第⼀章:云计算相关概念1.云计算介绍云计算是⼀种按量付费的资源出租模式!云计算的底层是通过虚拟化技术来实现的!2.云计算的......