揭秘GPU虚拟化,算力隔离,和最新技术突破qGPU

作者:jikesong,腾讯 CSIG 腾讯云异构计算研发副总监
〇、本文写作背景大约 2 年前,在腾讯内网,笔者和很多同事讨论了 GPU 虚拟化的现状和问题 。从那以后,出现了一些新的研究方向,并且,有些业界变化,可能会彻底颠覆掉原来的一些论断 。
但这里并不是要重新介绍完整的 GPU 虚拟化的方案谱系 。而是,我们将聚焦在英伟达 GPU + CUDA 计算领域,介绍下我们最新的技术突破 qGPU,以及它的意义究竟是什么 。关于 GPU 虚拟化的历史性介绍,我将直接摘抄当时的讨论 。
这也不是一篇介绍 TKE qGPU 产品特性的文章 。而是,我们将潜入到前所未有的深度,去探索 GPU 调度和 QoS 的本质 。本文也不是巨细靡遗的系统性探索,但你可以在这里看到别处不曾出现过的知识 。
本文涉及对一些厂商的推测性技术介绍,不保证准确性 。
一、术语介绍GPU ————— Graphics Processing Unit,显卡
CUDA ———— Compute Unified Device Architecture,英伟达 2006 年推出的计算 API
VT/VT-x/VT-d — Intel Virtualization Technology 。-x 表示 x86 CPU,-d 表示 Device 。
SVM ————— AMD Secure Virtual machine 。AMD 的等价于 Intel VT-x 的技术 。
EPT ————— Extended Page Table,Intel 的 CPU 虚拟化中的页表虚拟化硬件支持 。
NPT ————— Nested Page Table,AMD 的等价于 Intel EPT 的技术 。
SR-IOV ——— Single Root I/O Virtualization 。PCI-SIG 2007 年推出的 PCIe 虚拟化技术 。
PF ————— Physical Function,亦即物理卡
VF ————— Virtual Function,亦即 SR-IOV 的虚拟 PCIe 设备
MMIO ——— Memory MApped I/O 。设备上的寄存器或存储,CPU 以内存读写指令来访问 。
CSR ———— Control & Status Register,设备上的用于控制、或反映状态的寄存器 。CSR 通常以 MMIO 的方式访问 。
UMD ———— User Mode Driver 。GPU 的用户态驱动程序,例如 CUDA 的 UMD 是 libcuda.so
KMD ———— Kernel Mode Driver 。GPU 的 PCIe 驱动,例如英伟达 GPU 的 KMD 是 nvidia.ko
GVA ———— Guest Virtual Address,VM 中的 CPU 虚拟地址
GPA ———— Guest Physical Address,VM 中的物理地址
HPA ———— Host Physical Address,Host 看到的物理地址
IOVA ———— I/O Virtual Address,设备发出去的 DMA 地址
PCIe TLP —— PCIe Transaction Layer Packet
BDF ———— Bus/Device/Function,一个 PCIe/PCI 功能的 ID
MPT ———— Mediated Pass-Through,受控直通,一种设备虚拟化的实现方式
MDEV ——— Mediated Device,linux 中的 MPT 实现
PRM ———— Programming Reference Manual,硬件的编程手册
MIG ———— Multi-Instance GPU,Ampere 架构高端 GPU 如 A100 支持的一种 hardware partition 方案
 
二、GPU 虚拟化的历史和谱系2.1 GPU 能做什么GPU 天然适合向量计算 。常用场景及 API:

揭秘GPU虚拟化,算力隔离,和最新技术突破qGPU

文章插图
 
此外还有加解密、哈希等场景,例如近些年来的挖矿 。渲染是 GPU 诞生之初的应用: GPU 的 G 就是 Graphics —— 图形 。
桌面、服务器级别的 GPU,长期以来仅有三家厂商:
  1. 英伟达:GPU 的王者 。主要研发力量在美国和印度 。
  2. AMD/ATI:ATI 于 2006 年被 AMD 收购 。渲染稍逊英伟达,计算的差距更大 。
  3. Intel:长期只有集成显卡,近年来开始推独立显卡 。
2006 这一年,GPU 工业界发生了三件大事: ATI 被 AMD 收购;nVidia 黄仁勋提出了 CUDA 计算;Intel 宣布要研发独立显卡 。
日光之下并无新事 。如同经常发生的,这些事有成功有失败: Intel 很快就放弃了它的独立显卡,直到 2018 才终于明白过来自己到底放弃了什么,开始决心生产独立显卡;AMD 整合 ATI 不太成功,整个公司差点被拖死,危急时公司股票跌到不足 2 美元;而当时不被看好的 CUDA,则在几年后取得了不可思议的成功 。
从 2012 年开始,人工智能领域的深度学习方法开始崛起,此时 CUDA 受到青睐,并很快统治了这个领域 。
2.2 系统虚拟化和 OS 虚拟化系统虚拟化演化之路,起初是和 GPU 的演化完全正交的:


推荐阅读