ECI GPU 的基本实现原理以及容器启动流程是什么样的?
大家知道,容器一般是通过内核接口访问主机上的资源。但是对于 GPU 资源,容器 无法直接通过内核接口访问到,只能通过厂商驱动与 GPU 进行交互。 那么,ECI GPU 实例是如何让用户容器实例访问到 GPU 资源的呢?本质上,ECI GPU 就是在用户容器创建时将 GPU 驱动的一些必要的动态库文件挂载到用户容器中, 从而使得用户容器可以通过这些挂载的动态库文件访问到位于 Host 端的 GPU。简单介绍一下 ECI GPU 下的容器启动流程: 1. containerd 从 ContainerAgent 中接收来自管控的创建使用 GPU 的容器的命令 并将该命令下发给 runc;2. runc 创建容器时调用 prestart hook,即 nvidia-container-runtime-hook; 3. hook 调用 libnvidia-container 将必要的 GPU 驱动动态库,如 libcuda.so、 libnvml.so 等文件,挂载到容器上; 4. 容器创建完成后,用户容器进程通过上述挂载的动态库文件访问并使用 GPU 资源。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。