GPU虚拟化技术详解(附讲解视频)

简介: GPU虚拟化技术详解(附讲解视频)

GPU虚拟化技术:


1 GPU 和软件架构


GPU可以用于图形渲染,GPU 作为加速图形绘制的芯片时,它主要面向的产品主要是会集中在 PC 和游戏两个市场。也能够用于高性能计算领域(GPGPU)和编解码场景(子模块)等。

下图将软件系统中的 GPU 子系统抽象了几层概念,在 GPU 上的经典软件架构(不含虚拟化),分别适用到 通用计算领域图形渲染领域 两类场景。


image.png

图:GPU 的典型软件架构(不含虚拟化)


2 GPU 和虚拟化


虚拟化使用软件在计算机硬件上创建抽象层,能够将单个计算机的硬件元素(包括处理器、内存、存储器等)分成多个虚拟计算机,通常称为虚拟机 (VM)。 GPU 虚拟化是系统软硬件模拟 GPU 资源,以支持虚拟机方案。


3 GPU 虚拟化需求


体现在资源共享和资源隔离两方面

资源共享的需求:GPU 性能越来越强大,需要多租户(多容器和多虚机)共享资源。应用场景如多屏车机、本地桌面虚机、远程桌面(桌面虚拟化)、云 GPU 虚机。

资源隔离的需求:要保证多租户互不影响,应用场景如显存隔离、算力隔离、故障隔离。

4 GPU 虚拟化技术


虚拟化技术实现体现三个层次,即用户层、内核层和硬件层。然后在根据技术的应用场景分为隔离场景(容器和虚机)和硬件场景(虚拟桌面、渲染和 AI 计算)两个维度,不同的技术可能仅适用它对应的的场景。技术实现可分类为:

  • 用户层:API 拦截和 API forwarding
  • 内核层:GPU 驱动拦截
  • 内核层:GPU 驱动半虚拟化:Para Virtualization
  • 硬件层:硬件虚拟化:Virtualization
  • 硬件层:SRIOV:Single Root I/O Virtualization
  • 硬件层:Nvidia MIG:Multi-Instance GPU

image.png

5 GPU 用户层虚拟化

1)本地 API 拦截和 API forwarding

  • 在用户态实现一个函数库,假设叫 libwrapper ,它要实现底层库的所有 API
  • 让 APP 调用这个 libwrapper => 如何实现?底层动态库 + 用dlopen打开
  • libwrapper 拦截用户的函数调用,对函数进行解析,然后使用参数去调用实际的底层库相同名称的函数
  • 调用完成后,libwrapper 把结果返回给 APP

image.png

2)远程 API forwarding

  • libwrapper 通过网络,去调用不同机器上的底层库
  • libwrapper 变成两部分,client 用于转发,和 server 用于接收和调用
  • 可以实现 GPU 池化(即多个 GPU 可以组成调用池,由多个 client 来调用),可以做到不具备 GPU 的机器能实现 GPU 的功能

image.png

3)半虚拟化 API forwarding

  • APP 和 libwrapper 运行在虚机中
  • libwrapper 通过半虚拟化方式(virtio)进行通讯,调用宿主机的底层库
  • 虚机的内核要实现 virtio frontend => 优化点? 虚机和宿主机共享内存加速数据传递
  • 宿主机的 hypervisor 实现 virtio backend
  • 宿主机完成底层库的调用


6 GPU 内核层虚拟化


1)内核模块通过设备文件拦截

内核拦截模块模拟一个设备文件,内核拦截模块将用户进程的访问转发到(真实的)驱动软件,然后将对应内核函数的返回解析,再返回用户态。

  • 通常底层库通过设备文件访问 GPU 驱动的功能,假设为 /dev/realgpu
  • 实现一个内核模块,输出模拟的设备文件给用户空间,假设为 /dev/realgpu
  • 把模拟的设备文件 bind mount 到容器里,伪装成真的设备文件 /dev/realgpu
  • APP 和底层库都在容器里运行,底层库访问伪装的设备文件 /dev/realgpu,此时所有访问被内核模块拦截

2)驱动半虚拟化

image.png

用户进程通过系统虚拟化层(hypervisor)提供的虚拟化接口,访问(真实的)虚拟化接口。

  • APP 和底层库都在虚机里
  • 虚机的 GPU 驱动实现半虚拟化接口,通过类似 hypercall 的方式,调用宿主机实际的 GPU 驱动
  • hypercall 切换 guest 到 hypervisor, hypervisor 通过内核中的驱动代理来访问实际的 GPU 驱动

例如,车机中的 GPU 虚拟化。基于 type 1 的 hypervisor 虚拟化技术,支持多个 Guest。


7 GPU 硬件层虚拟化


虚拟化需要软件和硬件结合才能实现,其中需要硬件的支持的部分包括

  • 支持 CPU 和内存的硬件虚拟化
  • 支持 IOMMU
  • DMA remapping和Interrupt remapping
  • 硬件隔离和页表机制


8 GPU 全虚拟化


该方案实现了将整个 GPU 透传给虚拟,严格来说不算虚拟化领域,因为无法实现 GPU 资源共享。

  • 虚机的 GPU 驱动,不需要做任何修改,基本上访问的是真实的硬件资源
  • 整个 GPU 透传给虚机,性能损耗最小
  • 因为无法实现 GPU 资源共享,一般认为不属于GPU 虚拟化

9 参考资料


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
2月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
500 61
|
3月前
|
人工智能 并行计算 Linux
斯坦福黑科技让笔记本GPU也能玩转AI视频生成!FramePack:压缩输入帧上下文长度!仅需6GB显存即可生成高清动画
斯坦福大学推出的FramePack技术通过压缩输入帧上下文长度,解决视频生成中的"遗忘"和"漂移"问题,仅需6GB显存即可在普通笔记本上实时生成高清视频。
658 19
斯坦福黑科技让笔记本GPU也能玩转AI视频生成!FramePack:压缩输入帧上下文长度!仅需6GB显存即可生成高清动画
|
3月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
8月前
|
存储 安全 虚拟化
虚拟化技术:实现资源高效利用和灵活管理的利器
虚拟化技术作为实现资源高效利用和灵活管理的重要手段,在数字化时代背景下,正逐步改变传统IT架构模式。本文概述了虚拟化技术的概念、原理及其在数据中心管理、云计算平台、企业信息化建设、科研教育及医疗行业的应用,并探讨了其面临的挑战与未来发展趋势。
510 3
|
4月前
|
存储 虚拟化 Docker
|
4月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
5月前
|
存储 人工智能 算法
Magic 1-For-1:北大联合英伟达推出的高质量视频生成量化模型,支持在消费级GPU上快速生成
北京大学、Hedra Inc. 和 Nvidia 联合推出的 Magic 1-For-1 模型,优化内存消耗和推理延迟,快速生成高质量视频片段。
323 3
Magic 1-For-1:北大联合英伟达推出的高质量视频生成量化模型,支持在消费级GPU上快速生成
|
4月前
|
安全 大数据 虚拟化
随着云计算和大数据技术的发展,Hyper-V在虚拟化领域的地位日益凸显
随着云计算和大数据技术的发展,Hyper-V在虚拟化领域的地位日益凸显。作为Windows Server的核心组件,Hyper-V具备卓越的技术性能,支持高可用性、动态迁移等功能,确保虚拟机稳定高效运行。它与Windows深度集成,管理便捷,支持远程管理和自动化部署,降低管理成本。内置防火墙、RBAC等安全功能,提供全方位安全保障。作为内置组件,Hyper-V无需额外购买软件,降低成本。其广泛的生态系统支持和持续增长的市场需求,使其成为企业虚拟化解决方案的首选。
|
5月前
|
人工智能 云计算 数据中心
阿里云当选UALink联盟董事会成员,推进新一代GPU互连技术!
阿里云当选UALink联盟董事会成员,推进新一代GPU互连技术!
175 2
|
7月前
|
安全 Linux KVM
Linux虚拟化技术:从Xen到KVM
Xen和KVM是Linux平台上两种主要的虚拟化技术,各有优缺点和适用场景。通过对比两者的架构、性能、安全性、管理复杂性和硬件依赖性,可以更好地理解它们的适用场景和选择依据。无论是高性能计算、企业虚拟化还是云计算平台,合理选择和配置虚拟化技术是实现高效、稳定和安全IT环境的关键。
337 8

热门文章

最新文章