使用集成显卡在云 docker 容器内进行无头渲染

Using integrated graphics for headless rendering inside a cloud docker container

简短版

如何在 Google Cloud Kubernetes Engine pod 中获得集成图形加速的无头 X 显示 运行?

背景

我正在从事一个涉及 运行 大量并行模拟环境的强化学习项目。我正在使用 Google Cloud Kubernetes Engine 和 panda3d rendering to an Xvfb 虚拟显示器进行模拟。

但是,我注意到我的 Macbook 上的模拟运行速度比 Kubernetes 上的快 2 倍,并且分析表明差异完全来自 drawing the frame。其他运算——比如线性代数——最多慢 30%。我的理论是,这是因为在我的 Macbook 上,panda3d 可以利用集成显卡,而 Xvfb 使用软件渲染。

我的猜测——在下面的链接中收集信息——诀窍是获得硬件加速的无头 X 服务器 运行,然后使用虚拟 GL 将其分叉到第二个 Xvfb 显示器上。但是主啊,我在这里已经超出了我的深度。

不确定性

有用的资源

我会按顺序回答你的问题:

  • 很可能是,但根据您提供的信息很难确定。这取决于您使用的软件和库 (panda3d) 如何处理渲染。

  • Google Cloud Compute Engine 实例没有集成显卡,但您始终可以使用 GPU(支持的 GPU 和相关区域已列出 here). You can enable virtual displays on certain instances as explained in this document.

  • 您可以在 Google 云中设置 Kubernetes 集群或节点池,其中节点配备了 Nvidia GPU,如解释的那样 here

您可以在 here 中查看一些示例,了解如何在 Google 云平台上将 Kubernetes 与 GPU 结合使用。