【架构】GPU虚拟化

  1. GPU虚拟化方法
    1. 远程调用API
    2. 半虚拟化和全虚拟化
    3. 硬件划分
  2. 挑战和方向
    1. 轻量级虚拟化
    2. 可扩展性
    3. 安全性
  3. 参考

GPU虚拟化方法

远程调用API

半虚拟化和全虚拟化



硬件划分


局限:授权付费

    1. Hardware Partition:Ampere 架构的 A100 GPU 所支持的 MIG,即是一种 Hardware Partition。它的问题是不灵活: 只有高端 GPU 支持;只支持 CUDA 计算;A100 只支持 7 个 MIG 实例。
    1. nVidia MPS:它通过将多个进程的 CUDA Context,合并到一个 CUDA Context 中,省去了 Context Switch 的开销,也在 Context 内部实现了算力隔离。导致了额外的故障传播,在工业界和多租户场景不常使用。
    1. Time Sharing:不管是哪一代的 GPU,其 Engine 都是支持多任务调度的。一个 OS 中同时运行多个 CUDA 任务,这些任务就是在以 Time Sharing 的方式共享 GPU。鉴于 MIG 的高成本和不灵活、MPS 故障隔离方面的致命缺陷,事实上就只剩下一种可能:Time Sharing。唯一的问题是,如何在原厂不支持的情况下,利用 Time Sharing 支持好算力隔离、以保证 QoS。

挑战和方向

轻量级虚拟化

容器提供了进程级的轻量级虚拟化,不需要额外的包装库,虚拟化能接近原始性能,需要高效的调度配合使用。

可扩展性

虚拟化目的是提高资源利用率和减少使用者的开销,一个物理机器中整合大量VM可以达成目的,但是CPU和GPU大的整合能力不同,需要从GPU设备内存、GPU上下文切换频率和缓存占用等方面研究VGPU数量对性能的影响。

安全性

hypervisor提供安全隔离,防止一个VM映射到其他VM的地址空间;还有拒绝服务攻击,有文章检查可疑VM并kill来解决,这会导致部分正常VM服务暂停;为了避免GPU重置,需要细粒度的访问控制机制,有方法使用远程API调用,vCUDA,VOCL等,但没有实现隔离,存在安全问题。

参考

[1] https://www.zhihu.com/zvideo/1359813304349667328
[2] https://dl.acm.org/doi/pdf/10.1145/3068281


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论

×

喜欢就点赞,疼爱就打赏