目前主流几种GPU共享技术原理

目前市面上有很多GPU共享技术,在GPU共享的模式下,在用户态共享和内核态进行共享是不一样的,根据以下视图,越往底层,共享对用户的影响越小,安全性也能对应提升。

未命名文件.jpg

下面我就来简单介绍下目前GPU共享的一些技术

1.CUDA劫持:rCUDA,vCUDA等

CUDA劫持是较多方案选择的共享方法,属于时间复用。它通过劫持对Cuda driver API的调用来做到资源隔离。共享模块一般位于在Cuda driver API之上。

优势:API开源,是非Nvidia官方技术人员能够较容易实现的共享技术。

劣势:1.CUDA库升级活跃,而当CUDA库升级时,劫持方案也需要不断适配,损耗人力。2.难以涵盖所有场景,隔离不一定准确;3.安全性低,用户可以绕过限制。4.对用户有少量影响,需要一定适配。

2.CUDA聚合:Nvidia MPS

MPS是Nvidia官方推出的GPU共享组件,属于空间复用。它通过将多个任务合并成一个上下文的方式共享GPU算力,所有任务共同使用显存。它位于Cuda driver API和Nvidia Driver之间。

优势:性能是所有技术中最好的。在多任务共享的场景下,当任务使用的资源可以同时被满足,其JCT(任务完成时间)基本没有影响。

劣势:1.错误会互相影响,如果一个任务退出(包括被使用者停止和任务本身出错等),如果该任务正在执行kernel,那么和该任务共同share IPC和UVM的任务也会一同出错退出。2.没有显存隔离,可以粗略地限制计算资源。

3.内核劫持:cGPU

cGPU是来自阿里云的GPU容器共享方案,属于时间复用。它通过新的内核驱动模块,为容器提供了虚拟的GPU设备,劫持了对Nvidia driver的调用。它可以严格限制显存,通过时间片的方式限制算力。它位于Cuda driver API和Nvidia Driver之间。

优势:1.安全性高;2.共享损耗小;3.Nvidia Driver的更新更少,改动量很小。

劣势:1.cGPU对OS设置有一定依赖;2.因为是内核模块,因此更新换代较困难;3.研发困难,对开发要求高。4.出于算力时间片的设计,对于某些模型,具有一定的性能损失。

4.虚拟机:vGPU

来自Nvidia官方的vGPU属于时间复用的共享产品。它通过vfio-mdev提供了一个隔离性非常高的的硬件环境,主要面向的是虚拟机产品。其共享模块在Nvidia driver及之下。

优势:来自Nvidia官方,可靠性高,安全性高。

劣势:1.不支持容器,虚拟机在使用上不灵活;2.无法动态调整资源比例。3.有一定的共享损耗。4.无法定制化开发。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/985.html