配置 Singularity 进行无头渲染/使用 OpenGL/glxgears/glxinfo

配置 Singularity 进行无头渲染/使用 OpenGL/glxgears/glxinfo

我想在没有 root 权限的服务器上进行无头渲染。因此,我创建了一个 Singularity 容器,如下所示:

Bootstrap: docker
From: nvidia/cuda:9.0-runtime-ubuntu16.04

%post
    apt-get update &&  apt-get -y install \
    python3-pip \
    python3-tk \
    libgtk2.0-dev \
    libgl1-mesa-glx \
    xvfb \
    mesa-utils \
    xserver-xorg \
    nvidia-settings \

    touch /usr/bin/nvidia-smi
    touch /usr/bin/nvidia-xconfig  # not working

执行容器后:

singularity exec --nv rendering.img bash

我想检查一切是否正常:

export DISPLAY=:99.0
Xvfb :99 -screen 0 640x480x24 &

Xvfb :99 -screen 0 640x480x24 &
[1] 20059
XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.

glxinfo | grep "OpenGL version"
Error: couldn't find RGB GLX visual or fbconfig

当我这样做时:nvidia-smi一切正常(驱动程序应该没问题)。我这里遗漏了什么?

答案1

nvidia-smi 执行时不运行 openGL,

目录 /tmp/.X11-unix 具有用于 X 服务器通信的 unix 套接字。

由于某种原因,您没有在 /tmp/.X11-unix 中写入的权限,因为 Xvfb 需要在此目录中创建一个套接字。

相关内容