Isaac Sim x86_64 headless docker WSL2 support

Hi,

I’m doing a Isaac Sim proof of technology using headless docker.

Accordingly to Isaac Sim + orbit container on A100 - Omniverse / Isaac Sim - NVIDIA Developer Forums, issue(s) will headless are known.

Regarding the GLFW initialization failure, this is actually expected since Isaac Sim’s current version doesn’t support headless operation, meaning a viable display system is required even when running without window. If you’re running it on a server, a workaround would be to use a virtual frame buffer like xvfb to trick the system into thinking it has a display.

Question1: xvfb support varies per Linux distro. Any recommendation for a xvfb rpm package which works on systemd?

The GPU environment is Photon OS 5.0 on x86_64 WSL2. Windows nvidia-smi shows up the configured GeForce RTX 4070 GPU. The setup works flawlessly e.g. for LLM purposes.

For Isaac Sim runheadless.websocket.sh is used as entrypoint.

docker pull nvcr.io/nvidia/isaac-sim:2023.1.1
docker run --name isaac-sim --entrypoint runheadless.websocket.sh -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host -e "PRIVACY_CONSENT=Y" nvcr.io/nvidia/isaac-sim:2023.1.1

The startup fails because carb.windowing.plugins-1.0.0’ initialization fails.

Question 2: Beside xvfb, are there any further challenges to be expected?

[0.881s] [ext: omni.gpu_foundation-0.0.0] startup
[0.895s] [ext: omni.rtx.shadercache.vulkan-1.0.0] startup
[0.898s] [ext: carb.windowing.plugins-1.0.0] startup
2024-01-08 21:48:38 [871ms] [Warning] [carb.windowing-glfw.plugin] GLFW initialization failed.
2024-01-08 21:48:38 [872ms] [Warning] [carb] Failed to startup plugin carb.windowing-glfw.plugin (interfaces: [carb::windowing::IGLContext v1.0],[carb::windowing::IWindowing v1.4]) (impl: carb.windowing-glfw.plugin)
[0.899s] [ext: omni.kit.renderer.init-0.0.0] startup
2024-01-08 21:48:38 [878ms] [Warning] [omni.platforminfo.plugin] failed to open the default display.  Can't verify X Server version.
2024-01-08 21:48:38 [885ms] [Error] [carb.graphics-vulkan.plugin] VkResult: ERROR_INCOMPATIBLE_DRIVER
2024-01-08 21:48:38 [885ms] [Error] [carb.graphics-vulkan.plugin] vkCreateInstance failed. Vulkan 1.1 is not supported, or your driver requires an update.
2024-01-08 21:48:38 [885ms] [Error] [gpu.foundation.plugin] carb::graphics::createInstance failed.
2024-01-08 21:48:48 [11,004ms] [Error] [carb.launcher.plugin] [parent]: timed out waiting for the child process 46 to exec {errno = -1/Unknown error -1}
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin] failed to fork the child process {errno = -1/Unknown error -1, lastErrno = 11/Resource temporarily unavailable}
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin] launch descriptor for '/usr/bin/nvidia-smi' (1 arguments)
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin]     cmd: /usr/bin/nvidia-smi
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin]     onReadStdout = 0x7f748ee11ee0
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin]     onReadStderr = 0x7f748ee11ee0
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin]     readStdoutContext = 0x7f75101f9a90
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin]     readStderrContext = 0x7f75101f9a50
2024-01-08 21:48:48 [11,005ms] [Error] [carb.launcher.plugin]     interpreter = 'bash'
2024-01-08 21:48:48 [11,005ms] [Warning] [carb.launcher.plugin] failed to launch the new process.
2024-01-08 21:48:48 [11,005ms] [Warning] [gpu.foundation.plugin] Process '/usr/bin/nvidia-smi': not launched.
2024-01-08 21:48:48 [11,005ms] [Warning] [gpu.foundation.plugin] nvidia-smi output not available.
2024-01-08 21:48:48 [11,011ms] [Error] [carb.graphics-vulkan.plugin] VkResult: ERROR_INCOMPATIBLE_DRIVER
2024-01-08 21:48:48 [11,011ms] [Error] [carb.graphics-vulkan.plugin] vkCreateInstance failed. Vulkan 1.1 is not supported, or your driver requires an update.
2024-01-08 21:48:48 [11,011ms] [Error] [gpu.foundation.plugin] carb::graphics::createInstance failed.
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin] [parent]: timed out waiting for the child process 47 to exec {errno = -1/Unknown error -1}
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin] failed to fork the child process {errno = -1/Unknown error -1, lastErrno = 11/Resource temporarily unavailable}
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin] launch descriptor for '/usr/bin/nvidia-smi' (1 arguments)
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin]     cmd: /usr/bin/nvidia-smi
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin]     onReadStdout = 0x7f748ee11ee0
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin]     onReadStderr = 0x7f748ee11ee0
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin]     readStdoutContext = 0x7f751bfffa90
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin]     readStderrContext = 0x7f751bfffa50
2024-01-08 21:48:58 [21,155ms] [Error] [carb.launcher.plugin]     interpreter = 'bash'
2024-01-08 21:48:58 [21,155ms] [Warning] [carb.launcher.plugin] failed to launch the new process.
2024-01-08 21:48:58 [21,155ms] [Warning] [gpu.foundation.plugin] Process '/usr/bin/nvidia-smi': not launched.
2024-01-08 21:48:58 [21,155ms] [Warning] [gpu.foundation.plugin] nvidia-smi output not available.
2024-01-08 21:48:58 [21,156ms] [Error] [omni.gpu_foundation_factory.plugin] Failed to create any GPU devices, including an attempt with compatibility mode.

nvidia-smi works flawlessly in WSL2. Configuring sudo ln -sf /mnt/c/Drivers/Nvidia_GFX/Display.Driver/nvidia-smi /usr/bin/nvidia-smi didn’t help to get detected during carb.windowing.plugins-1.0.0 startup phase.

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+
root@yourpc:/isaac-sim# /usr/bin/nvidia-smi
Mon Jan  8 20:49:56 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.36                 Driver Version: 546.33       CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 4070 ...    On  | 00000000:01:00.0 Off |                  N/A |
| N/A   49C    P8               1W /  55W |    121MiB /  8188MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

edited:
For Xvfb testing purposes, I’m using a few Fedora bits.

sudo tdnf install -y pixman libxkbcommon libxkbcommon-x11 libxt audit libunwind libxfont2 libglvnd-glx

curl -J -L -O https://kojipkgs.fedoraproject.org//packages/xkbcomp/1.4.6/7.eln133/x86_64/xkbcomp-1.4.6-7.eln133.x86_64.rpm
curl -J -L -O https://kojipkgs.fedoraproject.org//packages/libxkbfile/1.1.2/1.eln133/x86_64/libxkbfile-1.1.2-1.eln133.x86_64.rpm
curl -J -L -O https://kojipkgs.fedoraproject.org//packages/xkeyboard-config/2.40/2.eln133/noarch/xkeyboard-config-2.40-2.eln133.noarch.rpm
curl -J -L -O https://kojipkgs.fedoraproject.org//packages/xorg-x11-server/1.20.14/26.fc38/x86_64/xorg-x11-server-Xvfb-1.20.14-26.fc38.x86_64.rpm
curl -J -L -O https://kojipkgs.fedoraproject.org//packages/libXmu/1.1.4/1.fc38/x86_64/libXmu-1.1.4-1.fc38.x86_64.rpm
curl -J -L -O https://kojipkgs.fedoraproject.org//packages/xorg-x11-xauth/1.1.1/2.fc36/x86_64/xorg-x11-xauth-1.1.1-2.fc36.x86_64.rpm
curl -J -L -O https://kojipkgs.fedoraproject.org//packages/mesa/22.1.7/1.fc36/x86_64/mesa-libglapi-22.1.7-1.fc36.x86_64.rpm

sudo rpm -ivh libxkbfile-1.1.2-1.eln133.x86_64.rpm
sudo rpm -ivh xkbcomp-1.4.6-7.eln133.x86_64.rpm
sudo rpm -ivh xkeyboard-config-2.40-2.eln133.noarch.rpm
sudo rpm -ivh xorg-x11-server-common-1.20.14-26.fc38.x86_64.rpm
sudo rpm -ivh libXmu-1.1.4-1.fc38.x86_64.rpm
sudo rpm -ivh xorg-x11-xauth-1.1.1-2.fc36.x86_64.rpm
sudo rpm -ivh mesa-libglapi-22.1.7-1.fc36.x86_64.rpm
sudo rpm -ivh xorg-x11-server-Xvfb-1.20.14-1.fc36.x86_64.rpm

/bin/Xvfb --help

After a few retries with /bin/Xvfb :99 -ac &, export DISPLAY=:99 and docker [...] -e DISPLAY=$DISPLAY [...] I think the limitation comes from carb.windowing-glfw.plugin.

This warning appears first.

[Warning] [carb.windowing-glfw.plugin] GLFW initialization failed.

The implemented version from GitHub - glfw/glfw: A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input might be outdated.

Hi. We currently do not support WSL2 and Xvfb. We require Vulkan on Linux.

Hi,
How to check the functionality of vulkan for the Isaac Sim container? The docs Isaac Sim | NVIDIA NGC do not explicitly refer to vulkan. vulkansdk x86_64-1.3.268.0 is installed and vulkaninfo is available.

I’ve used the recommended docker parameters for Isaac Sim container.

docker run --name isaac-sim --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
     -e "PRIVACY_CONSENT=Y" \
     -v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
     -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
     -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
     -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
     -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
     -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
     -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
     -v ~/docker/isaac-sim/documents:/root/Documents:rw \
     nvcr.io/nvidia/isaac-sim:2023.1.1

Hi. Vulkan in used by the Hydra Engine for RTX rendering in our Kit SDK.

Currently, Vulkan is not supported on WSL.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.