Skip to main content

安装指导

MT vGPU 驱动软件包

软件包名称软件包描述
MT_vGPU_HOST_DKMS_v2.9.1适⽤DKMS的deb包和rpm包,Host端使⽤,驱动GPU,可将物理GPU切分成多个虚拟GPU(vGPU),并发支持多个虚拟机使用
MT_vGPU_WINDOWS_GUEST_v2.9.1GPU Windows Guest驱动安装包,Guest端使⽤
MT_vGPU_LINUX_GUEST_v2.9.1GPU Linux Guest驱动安装包,Guest端使⽤
MT_vGPU_GMI_v2.9.1摩尔线程GPU管理工具使用手册
MT_vGPU_MTML_v2.9.1GPU管理函数库
MT_vGPU_DirectStream_v2.9.1屏幕抓取及GPU硬件编码SDK,在Windows Guest中工作,调用GPU的硬件能力对数据进行编码
MT_vGPU_MTAPI_v2.9.1virtual display、⾃定义分辨率等设置⼯具,Guest端使⽤
DCGM 0.1.1GPU健康状态检查工具,Host端使⽤

驱动获取请联系:developers@mthreads.com

准备工作

服务器 BIOS 设置

  • 超4G地址空间译码:开启;详细设置方法参考对应服务器操作手册

  • VMX(Intel)/ SVM(AMD):开启;详细设置方法参考对应服务器操作手册

  • Intel VT-d(IOMMU):开启;详细设置方法参考对应服务器操作手册

  • SR-IOV:开启;详细设置方法参考对应服务器操作手册

    注:如果BIOS有ARIForwarding配置项需要将其Enable

操作系统设置

  1. 更新操作系统grub文件,开启iommu,以intel服务器为例

在/etc/default/grub 中添加 intel_iommu=on

GRUB_CMDLINE_LINUX="...... intel_iommu=on"

  1. 更新grub,方法根据当前操作系统手动更新

grub2-mkconfig -o /boot/efi/EFI/$(vendor)/grub.cfg

注-o目录需要根据当前系统实际启动方式(uefi/legacy)修改,legacy启动时为/boot/grub2/grub.cfg

更新后重启服务器

PCIe 设备基本信息查询

  • 为确保服务器和操作系统已经识别 MTT S系列GPU,在 Host 操作系统中输入 lspci -d 1ed5: 命令查询设备 ID

    # MTT S3000
    $ lspci -d 1ed5:
    03:00.0 3D controller: Moore Threads Technology Co.,Ltd MTT S3000
    03:00.1 Multimedia audio controller: Moore Threads Technology Co.,Ltd MTT HDMI/DP Audio

    正常情况下,对应显卡的显示内容应该如上所示

驱动安装和使用

安装 Host 端显卡驱动

Host驱动分为GOLDEN和DKMS两种驱动,DKMS驱动所有用户都可以安装,GOLDEN驱动为针对某个内核版本的定制驱动,二者功能无差异,选择其一即可

操作

  1. DKMS通用驱动安装

    $ rpm -ivh ~/xxx_xxx_dkms_mtvgpu_2.9.1_amd64.rpm
    Verifying... ################################# [100%]
    Preparing... ################################# [100%]
    Updating / installing...
    1:mtvgpu-2.9.1-1 ################################# [100%]
    Loading new mtgpu-2.9.1-000 DKMS files...
    Building for 4.18.0-193.14.2.el8_2.x86_64
    Building initial module for 4.18.0-193.14.2.el8_2.x86_64
    Done.

    mtgpu.ko.xz:
    Running module version sanity check.

    Running the pre_install script:

    - Original module
    - No original module exists within this kernel
    - Installation
    - Installing to /lib/modules/4.18.0-193.14.2.el8_2.x86_64/kernel/drivers/gpu/drm/mthreads/

    Running the post_install script:

    depmod....

    DKMS: install completed.
    Starting postinst...

    postinst finished.

    注:dkms驱动需要先安装dkms工具

验证

  1. 列出所有当前加载的包含内核模块,过滤输出,只显示包含 mtgpu 字符串的行
$ lsmod | grep "mtgpu"
mtgpu 1634304 0
mdev 24576 2 mtgpu,vfio_mdev
drm_kms_helper 184320 3 mtgpu
kvm 663552 2 mtgpu,kvm_intel
drm 491520 3 mtgpu,drm_kms_helper

看到上述内容表示内核驱动已经加载。

  1. 使用摩尔线程GPU管理工具mthreads-gmi确认内核驱动模块已经工作
$ mthreads-gmi -cf
Wed Jul 31 03:13:00 2024
---------------------------------------------------------------
mthreads-gmi:2.0.4 Driver Version:2.9.1-000
---------------------------------------------------------------
ID Name |PCIe |%GPU Mem
Device Type |Pcie Lane Width |Temp MPC Capable
| ECC Mode
+-------------------------------------------------------------+
0 MTT S3000 |00000000:5e:00.0 |58% 30094MiB(32768MiB)
MPC Parent |16x(16x) |57C YES
| N/A
---------------------------------------------------------------

vGPU 切分

vGPU 切分支持两种方式

  • mdevctl 工具
  • 直接操作设备文件

两种方式的本质都是对设备文件进行操作以达到对vGPU 设备管理的目的。MT vGPU支持的显卡切分类型参考附录 MTT S系列显卡支持的vGPU切分类型

切分方式一:推荐使用mdevctl工具对显卡进行切分操作,使用mdevctl工具切分显卡的流程如下:

  1. 查看GPU PCI设备BDF地址

    $ lspci -d 1ed5:
    03:00.0 3D controller: Moore Threads Technology Co.,Ltd MTT S3000

    03:00.0 为GPU的BDF地址

    $ virsh nodedev-list --cap pci| grep 03_00_0
    pci_0000_03_00_0

    完整的标识地址为0000:03:00.0

  2. 创建 vGPU

    $ mdevctl start -u c4f702ca-c69d-4d7d-a526-5fdcf78d3428 -p 0000:03:00.0 --type mtgpu-1101
    • c4f702ca-c69d-4d7d-a526-5fdcf78d3428是UUID,是vGPU设备的唯一标识;此ID可以是固定的ID,也可以通过uuidgen工具生成:uuidgen => xxxxxxx
    • -p GPU PCI设备的BDF地址
    • -type vGPU切分类型
  3. 查看创建的 vGPU 设备

    $ mdevctl list
    c4f702ca-c69d-4d7d-a526-5fdcf78d3428 0000:03:00.0 mtgpu-1101

切分方式2: 操作设备文件

  1. 查看并操作文件设备

    $ find /sys/ -name mdev_supported_types
    /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0

    $ echo c4f702ca-c69d-4d7d-a526-5fdcf78d3428 > /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0/mdev_supported_types/mtgpu-1101/create

    设备文件实际地址可按照这种方式去定位,/sys/class/mdev_bus/domain\:bus\:slot.function/mdev_supported_types/ ,上面的地址0000:03:00.0,则domain为0000、bus为03、slot为00、funtion为0

  2. 查看切分出的 vGPU 设备

    $ ls /sys/bus/mdev/devices/
    c4f702ca-c69d-4d7d-a526-5fdcf78d3428

安装 Guest 端显卡驱动

创建带有 MT vGPU 的 QEMU 虚拟机——方法 1

使用 QEMU 命令行的参考命令如下:

$ qemu-kvm -name 'Moore Threads GPU' \
-machine q35,accel=kvm,usb=on \
-cpu host -smp 4,sockets=1 -m 4G \
-hda win10-vdi-snapshot.qcow2 \
-usb -device usb-tablet \
-device vfio-pci,sysfsdev=/sys/bus/mdev/devices/c4f702ca-c69d-4d7d-a526-5fdcf78d3428 \
-vnc :01 \
-net user -net nic \
-device intel-hda \
-device hda-duplex

其中,-device vfio-pci,sysfsdev=/sys/bus/mdev/devices/c4f702ca-c69d-4d7d-a526-5fdcf78d3428 为增加的 vGPU 的参数

创建带有 MT vGPU 的 QEMU 虚拟机——方法 2

使用 virsh 命令行

  1. 在虚拟机的xml配置文件中添加如下配置:
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'>
<source>
<address uuid='c4f702ca-c69d-4d7d-a526-5fdcf78d3428'/>
</source>
</hostdev>
  1. 启动虚拟机:
$ virsh create vm.xml

在虚拟机中安装 vGPU 驱动

vGPU 需要安装驱动才能作为 3D 加速设备进行工作。未安装摩尔线程 Windows 驱动的 vGPU 设备如下图所示:

A

使用 MT_vGPU_PES 安装包安装方法如下

在虚拟机中,运行 PES 安装包 musa-desktop-win10-64bit_vdi.exe,安装 WIndows 10 vGPU 驱动:

B

安装成功,如下图所示:

B

安装完成后重启虚拟机,即可正常使用 vGPU 加速

附录

MTT S 系列显卡支持的 vGPU 切分类型

Type-IDType-vRAM虚拟机内vRAM大小最大分辨率建议最大分辨率虚拟显示器数量S3000/S3000E可用数量
mtgpu-11001024MB854MB1920x12001920x1080132
mtgpu-11011024MB982MB4096x21602560x1440228
mtgpu-11022048MB1734MB4096x21603840x2160216
mtgpu-11044096MB3478MB4096x21603840x216028
mtgpu-11088192MB6966MB4096x21603840x216024
mtgpu-111616384MB14870MB4096x21603840x216022
mtgpu-113232768MB30334MB7680×43203840x216021