当前位置: 首页 > article >正文

windows11 实现Hyper-v ubuntu22.04 GPU虚拟化(GPU分区、GPU-P)教程

注:1、本文提到的vGPU、GPU分区都是指的微软的GPU-P技术。
2、在实操过程中,发现网上的很多文章要么记录不全,要么描述不清楚,导致的结果就是根本没法走通。希望通过该文章能解决小伙伴们在实操中遇到的一些坑。

前提说明

1、物理机需要支持SR-IOV,在主板BIOS中可以通过搜索SR-IOV,并打开SR-IOV。

2、物理机需要CPU支持IOMMU,Inter的cpu 需要在bios里开启VT-x,Amd的cpu需要在bios里 开启 AMD-V。

2、显卡驱动需要支持WDDM2.4以上版本“基于IOMMU的GPU隔离(在windows的搜索框中输入 “dxdiag”然后确定,可查看驱动支持的WDDM版本)。

3、虚拟机和宿主机的系统(或wsl里的系统)版本需要一致,同时必须从宿主机(或wsl里的系统)提取显卡驱动程序到虚拟机。如果宿主机升级了驱动程序,那么虚拟机必须也跟着升级。

4、涉及到显存分配操作,所以虚拟机的检查点,自动停止,内存动态分配这些都不可用。

5、本教程wsl和虚拟机里的来宾操作系统都必须为 Ubuntu 22.04。

6、本文中提到的宿主机指的是windows11操作系统。本文中的wsl指的都是wsl2。

7、Powershell必须以“以管理员身份运行“。

一、安装wsl2及Ubuntu 22.04

具体安装方法详见专栏里的另外一篇文章: Windows10安装wls、ubuntu22.04以及解决无法访问互联网的问题

二、安装虚拟化工具Hyper-V

在windows搜索框中输入“启用或关闭windows功能”,然后选中打开。
在这里插入图片描述
打开后勾选“Hyper-V”,点击确定,系统会自动安装Hyper-V,安装完成后重启电脑。
在这里插入图片描述

三、hyper-v安装ubuntu

新建hyper-v 二代虚拟机。虚拟机名称:ubuntu2204, 安装的是ubuntu server22.04版本。该版本必须与wsl里的linux系统版本一致,同时关闭虚拟机的安全启动、动态内存和检查点。
具体安装方法详见:Windows10/11 hyper-v安装ubuntu22.04
在这里插入图片描述

四、验证宿主机GPU是否正常

1、验证宿主机GPU驱动是否正常

nvidia-smi

如果驱动程序安装成功,会返回如下信息:

在这里插入图片描述

2、验证wsl2 ubuntu上的GPU驱动是否正常

nvidia-smi

如果驱动程序安装成功,会返回如下信息:

在这里插入图片描述

3、查看宿主机上的支持 GPU 分区的GPU

以管理员身份运行powershell,输入以下命令。

Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts

下面是 Get-VMHostPartitionableGpu 命令的示例输出,其中显示此服务器上安装了两个可分区的 GPU 驱动程序。 第一个 GPU 配置的分区计数为 32,第二个 GPU 配置的分区计数为 32。
在这里插入图片描述

通过windows的设备管理器,查看每个位置对应的到底是哪张卡。
在这里插入图片描述

五、为hyper-v 的虚拟机添加Gpu分区

输入以下代码(添加GPU分区后无法修改内存分配大小。

如果需要更改内存分配,先执行Remove-VMGpuPartitionAdapter -VMName $vmName再修改, 修改后再执行下面的代码)

先查看宿主机显卡的参数,根据查询到的信息再去修改分配给虚拟机的参数

Get-VMHostPartitionableGpu

比如本文查询到的参数是:

Name                          : \\?\PCI#VEN_10DE&DEV_1E07&SUBSYS_12A410DE&REV_A1#4&7d659fe&0&0009#{064092b3-625e-43bf-9
                                eb5-dc845897dd59}\GPUPARAV
ValidPartitionCounts          : {32}
PartitionCount                : 32
TotalVRAM                     : 1000000000
AvailableVRAM         

http://www.kler.cn/a/427776.html

相关文章:

  • 《【机器学习】窥数据之序,悟算法之道:机器学习的初心与远方》
  • 《Java核心技术I》volatile字段
  • 【数据库】MySQL的安装与卸载
  • 让服务器更“隐身”的秘密武器:端口敲门技术
  • XSS(DOM)-HIGH错误总结
  • CVPR和其他2024顶会论文阅读(资源整理【1】)
  • element-plus的el-tree的双向绑定
  • 【MySQL 进阶之路】InnoDB引擎详解
  • 3D 生成重建015-Feature 3DGS理解3DGS场景内的一切
  • 软件工程——期末复习(4)
  • 同道猎聘Q3营收降利润增,AI或成估值重塑关键词
  • JAVA设计模式,工厂模式
  • gitlab-cicd部署安装与具体操作
  • 在visio2021 中插入MathType公式
  • 【bug】pymysql.err.OperationalError: (1046, ‘No database selected‘)
  • React16搭建-GPT回答
  • 游戏引擎学习第36天
  • [Flutter]Json序列化json_serializable使用属性全介绍
  • 嵌入式蓝桥杯学习4 lcd移植
  • 【Linux】09 -- Linux下的shell编程(一)