Enabling Optix denoise requires the /usr/share/nvidia/nvoptix.bin file which is installed as part of libnvidia-gl-<ver> package but not present in containers with nvidia ctk runtime.
Workaround for Holoscan: https://github.com/nvidia-holoscan/holohub/pull/112/files
Content of libnvidia-gl-535
dpkg -L libnvidia-gl-535 | xargs -I % sh -c '[ -f "%" ] && echo "%"'
/usr/bin/nvidia-ngx-updater
/usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.535.86.05
/usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.535.86.05
/usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.535.86.05
/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-api.so.1
/usr/lib/x86_64-linux-gnu/libnvidia-egl-gbm.so.1.1.0
/usr/lib/x86_64-linux-gnu/libnvidia-eglcore.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-glsi.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-glvkspirv.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-ngx.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-rtcore.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-tls.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvidia-vulkan-producer.so.535.86.05
/usr/lib/x86_64-linux-gnu/libnvoptix.so.535.86.05
/usr/lib/x86_64-linux-gnu/nvidia/wine/_nvngx.dll
/usr/lib/x86_64-linux-gnu/nvidia/wine/nvngx.dll
/usr/lib/x86_64-linux-gnu/nvidia/xorg/libglxserver_nvidia.so.535.86.05
/usr/share/doc/libnvidia-gl-535/changelog.Debian.gz
/usr/share/doc/libnvidia-gl-535/copyright
/usr/share/egl/egl_external_platform.d/15_nvidia_gbm.json
/usr/share/glvnd/egl_vendor.d/10_nvidia.json
/usr/share/lintian/overrides/libnvidia-gl-535
/usr/share/nvidia/nvoptix.bin
/usr/share/vulkan/icd.d/nvidia_icd.json
/usr/share/vulkan/implicit_layer.d/nvidia_layers.json
/usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.0
/usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.1
/usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.2
/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
/usr/lib/x86_64-linux-gnu/libnvoptix.so.1
/usr/lib/x86_64-linux-gnu/nvidia/xorg/libglxserver_nvidia.so
/usr/lib/aarch64-linux-gnu/libEGL_nvidia.so.535.86.10
/usr/lib/aarch64-linux-gnu/libGLESv1_CM_nvidia.so.535.86.10
/usr/lib/aarch64-linux-gnu/libGLESv2_nvidia.so.535.86.10
/usr/lib/aarch64-linux-gnu/libGLX_nvidia.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-egl-gbm.so.1.1.0
/usr/lib/aarch64-linux-gnu/libnvidia-eglcore.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-glcore.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-glsi.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-glvkspirv.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-ngx.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-rtcore.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvidia-tls.so.535.86.10
/usr/lib/aarch64-linux-gnu/libnvoptix.so.535.86.10
/usr/lib/aarch64-linux-gnu/nvidia/xorg/libglxserver_nvidia.so.535.86.10
/usr/share/doc/libnvidia-gl-535/changelog.Debian.gz
/usr/share/doc/libnvidia-gl-535/copyright
/usr/share/egl/egl_external_platform.d/15_nvidia_gbm.json
/usr/share/glvnd/egl_vendor.d/10_nvidia.json
/usr/share/nvidia/nvoptix.bin
/usr/share/vulkan/icd.d/nvidia_icd.json
/usr/share/vulkan/icd.d/nvidia_layers.json
/usr/lib/aarch64-linux-gnu/libEGL_nvidia.so.0
/usr/lib/aarch64-linux-gnu/libGLESv1_CM_nvidia.so.1
/usr/lib/aarch64-linux-gnu/libGLESv2_nvidia.so.2
/usr/lib/aarch64-linux-gnu/libGLX_nvidia.so.0
/usr/lib/aarch64-linux-gnu/libnvidia-ngx.so.1
/usr/lib/aarch64-linux-gnu/libnvoptix.so.1
/usr/lib/aarch64-linux-gnu/nvidia/xorg/libglxserver_nvidia.so
Files not mounted with nvidia runtime
Run this command to test:
nv_gl_files=$(dpkg -L libnvidia-gl-535 | xargs -I % sh -c '[ -f "%" ] && echo "%"')
docker run -it --rm \
--runtime=nvidia -e NVIDIA_DRIVER_CAPABILITIES=all --gpus=all \
-e FILES="$nv_gl_files" \
ubuntu:22.04 \
bash -c '
for file in $FILES; do
[ ! -f "$file" ] && echo "Missing: $file"
done
'
Missing: /usr/bin/nvidia-ngx-updater
Missing: /usr/lib/x86_64-linux-gnu/libnvidia-api.so.1
Missing: /usr/lib/x86_64-linux-gnu/libnvidia-vulkan-producer.so.535.86.05
Missing: /usr/lib/x86_64-linux-gnu/nvidia/wine/_nvngx.dll
Missing: /usr/lib/x86_64-linux-gnu/nvidia/wine/nvngx.dll
Missing: /usr/share/doc/libnvidia-gl-535/changelog.Debian.gz
Missing: /usr/share/doc/libnvidia-gl-535/copyright
Missing: /usr/share/lintian/overrides/libnvidia-gl-535
Missing: /usr/share/nvidia/nvoptix.bin
Missing: /usr/lib/aarch64-linux-gnu/libnvidia-egl-gbm.so.1.1.0
Missing: /usr/share/doc/libnvidia-gl-535/changelog.Debian.gz
Missing: /usr/share/doc/libnvidia-gl-535/copyright
Missing: /usr/share/nvidia/nvoptix.bin
Missing: /usr/share/vulkan/icd.d/nvidia_layers.json
Observations
- Why
dll files on x86_64? /wine/nvngx.dll. Interestingly, there is no libnvidia-ngx.so.1 on x86_64 (vs aarch64).
- The missing
nvidia-ngx-updater, libnvidia-api.so.1 and libnvidia-vulkan-producer.so.535 only exist on x86_64. Expected ? Need mounting?
libnvidia-egl-gbm.so exist for both x86_64 and aarch64, but missing only in aarch64 containers.
nvidia_layers.json is in icd.d on aarch64, instead of implicit_layer.d in x86_64. The former isn't mounted, while the latter is.
Enabling Optix denoise requires the
/usr/share/nvidia/nvoptix.binfile which is installed as part oflibnvidia-gl-<ver>package but not present in containers with nvidia ctk runtime.Workaround for Holoscan: https://github.com/nvidia-holoscan/holohub/pull/112/files
Content of libnvidia-gl-535
Files not mounted with nvidia runtime
Run this command to test:
Observations
dllfiles on x86_64?/wine/nvngx.dll. Interestingly, there is nolibnvidia-ngx.so.1on x86_64 (vs aarch64).nvidia-ngx-updater,libnvidia-api.so.1andlibnvidia-vulkan-producer.so.535only exist on x86_64. Expected ? Need mounting?libnvidia-egl-gbm.soexist for both x86_64 and aarch64, but missing only in aarch64 containers.nvidia_layers.jsonis inicd.don aarch64, instead ofimplicit_layer.din x86_64. The former isn't mounted, while the latter is.