什么是GPU池化
GPU池化(GPU-Pooling)的定义: 通过对物理GPU进行软件定义,融合了GPU虚拟化、多卡聚合、远程调用、动态释放等多种能力,解决GPU使用效率低和弹性扩展差的问题。 如下图所示,在不同的抽象层次,将需要加速的应用转发(Forwarding)到GPU资源池中。总的来说,越靠底层的转发性能损失越小,可操作的范围越大;但同时,编程量也越大,也越难。
GPU池化的难点:
- GPU架构种类繁多,API 繁多
运行时除了 libcudart.so 这个动态库,还涉及cuDNN、cuBLAS、cuFFT 等一系列动态库和 API,涉及数千个不同的 API 接口。
更重要的是 CUDA 运行时是闭源的,内部实现逻辑无从探究,需要进行反向工程。具体来说目前的GPU架构: F架构,K架构,P架构,V架构,T架构,A架构。 - 架构调整
需要抽象出一个中间池化层: 统一API,屏蔽不同位置(本地,远端),不同类型的GPU - GPU池化对对context管理的需求将更加严格
因此如何利用Context(时分复用)和Stream(空分复用)实现用户进程的隔离,用户购买的隔离,计费隔离,GPU算力的量化隔离将是新的问题。
以下是参考了知乎上博主稻壳特溯 对GPU-POOL的构思:
两个业界典型虚拟化方案:
1.OrionX(猎户座) 虚拟化方案
2. 百度的GPU虚拟化方案:
边缘容器产品ECK中的vGPU虚拟化能力汇总
本节我们着重介绍了GPU池化的技术难点及典型的GPU虚拟化方案等内容,下节我们将带来拓扑感知和nvlink等关于GPU最优组合的相关内容,敬请期待!
了解更多云计算相关知识可阅读:
中国电信天翼云:GPU虚拟化调研与落地(一)2 赞同 · 0 评论文章
本篇文章转载自天翼云官方网站开发者社区,了解更多云计算知识可登陆天翼云官方网站开发者社区,点击专栏查看更多技术干货,与技术大咖促膝论道!
正文完
可以使用微信扫码关注公众号(ID:xzluomor)