[GH-ISSUE #39] RTXVideoSuperResolution always returns an all-zero (black) tensor on Linux, no exception raised #29

Open
opened 2026-10-26 22:28:10 +00:00 by bsakaguchi · 5 comments
Owner

Originally created by @sucubus666 on GitHub (Aug 31, 2026).
Original GitHub issue: https://github.com/Comfy-Org/ComfyUI_Nvidia_VFX_Nodes/issues/39

Summary

RTXVideoSuperResolution (and the underlying nvvfx.VideoSuperRes from the nvidia-vfx pip package) runs without raising any exception, but always returns an all-zero tensor (black output) on Linux, for every quality level (LOW/MEDIUM/HIGH/ULTRA) and both resize_type options tested.

Reproduced outside ComfyUI (standalone Python)

import torch, nvvfx
frame = torch.rand(3, 704, 1280, device='cuda')
with nvvfx.VideoSuperRes(nvvfx.effects.QualityLevel.MEDIUM) as sr:
    sr.output_width = 2560
    sr.output_height = 1408
    sr.load()
    out = sr.run(frame).image
    t = torch.from_dlpack(out)
    print(t.shape, t.dtype)
    print(t.min().item(), t.max().item(), t.mean().item())

Output:

torch.Size([3, 1408, 2560]) torch.float32
0.0 0.0 0.0

No exception anywhere in the call chain (sr.load(), sr.run(), DLPack conversion all "succeed"), just an all-zero result.

Environment

  • OS: Linux (Ubuntu-based), driver 595.84, CUDA 13.2
  • GPU: NVIDIA GeForce RTX 5060 Ti (16GB), confirmed as the default CUDA device (torch.cuda.current_device() → RTX 5060 Ti). A second GPU (GTX 1660 Super) is present in the system but not selected by default.
  • nvidia-vfx package: initially got a broken metadata-only install from PyPI (import nvidia_vfx → ModuleNotFoundError, despite pip show reporting it as installed). Reinstalled via pip install nvidia-vfx --extra-index-url https://pypi.nvidia.com, which pulled the real ~597MB wheel. The real module name is nvvfx (not nvidia_vfx), which is not obvious from the pip package name — might be worth a note in the README/install docs.
  • After the reinstall, import nvvfx works and the module loads fine (no import errors), but inference output is all zeros as shown above.
  • SageAttention was ruled out: same black-output result with --use-sage-attention on and off, and with the node isolated in a minimal workflow (LoadImage → RTXVideoSuperResolution → PreviewImage, no other nodes).

Suspected root cause

libnvidia-ngx-vsr.so (bundled inside the nvvfx wheel) appears to depend on the NGX model store (the same system used by DLSS) being initialized on the machine. Checked for it under typical Linux paths (~/.local/share, /usr/share/nvidia, etc.) — nothing found. nvidia-ngx-updater (present at /usr/bin/nvidia-ngx-updater) runs with exit code 0 but produces no visible output and does not appear to create any NGX model tree on this Linux install. No .trt/.engine/.onnx files ship inside the nvvfx wheel itself, so the actual super-resolution model seems to need to come from NGX at runtime — and on this system that step silently produces nothing usable, with the SDK still reporting success.

Question

Is there a documented way to manually initialize/download the NGX model store for VideoSuperRes on Linux, or is Linux NGX support for this specific effect still incomplete? Happy to test further if there's a diagnostic step to check.

Originally created by @sucubus666 on GitHub (Aug 31, 2026). Original GitHub issue: https://github.com/Comfy-Org/ComfyUI_Nvidia_VFX_Nodes/issues/39 ## Summary `RTXVideoSuperResolution` (and the underlying `nvvfx.VideoSuperRes` from the `nvidia-vfx` pip package) runs without raising any exception, but always returns an all-zero tensor (black output) on Linux, for every `quality` level (LOW/MEDIUM/HIGH/ULTRA) and both `resize_type` options tested. ## Reproduced outside ComfyUI (standalone Python) ```python import torch, nvvfx frame = torch.rand(3, 704, 1280, device='cuda') with nvvfx.VideoSuperRes(nvvfx.effects.QualityLevel.MEDIUM) as sr: sr.output_width = 2560 sr.output_height = 1408 sr.load() out = sr.run(frame).image t = torch.from_dlpack(out) print(t.shape, t.dtype) print(t.min().item(), t.max().item(), t.mean().item()) ``` Output: ``` torch.Size([3, 1408, 2560]) torch.float32 0.0 0.0 0.0 ``` No exception anywhere in the call chain (`sr.load()`, `sr.run()`, DLPack conversion all "succeed"), just an all-zero result. ## Environment - OS: Linux (Ubuntu-based), driver 595.84, CUDA 13.2 - GPU: NVIDIA GeForce RTX 5060 Ti (16GB), confirmed as the default CUDA device (`torch.cuda.current_device()` → RTX 5060 Ti). A second GPU (GTX 1660 Super) is present in the system but not selected by default. - `nvidia-vfx` package: initially got a broken metadata-only install from PyPI (`import nvidia_vfx` → `ModuleNotFoundError`, despite `pip show` reporting it as installed). Reinstalled via `pip install nvidia-vfx --extra-index-url https://pypi.nvidia.com`, which pulled the real ~597MB wheel. The real module name is `nvvfx` (not `nvidia_vfx`), which is not obvious from the pip package name — might be worth a note in the README/install docs. - After the reinstall, `import nvvfx` works and the module loads fine (no import errors), but inference output is all zeros as shown above. - SageAttention was ruled out: same black-output result with `--use-sage-attention` on and off, and with the node isolated in a minimal workflow (LoadImage → RTXVideoSuperResolution → PreviewImage, no other nodes). ## Suspected root cause `libnvidia-ngx-vsr.so` (bundled inside the `nvvfx` wheel) appears to depend on the NGX model store (the same system used by DLSS) being initialized on the machine. Checked for it under typical Linux paths (`~/.local/share`, `/usr/share/nvidia`, etc.) — nothing found. `nvidia-ngx-updater` (present at `/usr/bin/nvidia-ngx-updater`) runs with exit code 0 but produces no visible output and does not appear to create any NGX model tree on this Linux install. No `.trt`/`.engine`/`.onnx` files ship inside the `nvvfx` wheel itself, so the actual super-resolution model seems to need to come from NGX at runtime — and on this system that step silently produces nothing usable, with the SDK still reporting success. ## Question Is there a documented way to manually initialize/download the NGX model store for `VideoSuperRes` on Linux, or is Linux NGX support for this specific effect still incomplete? Happy to test further if there's a diagnostic step to check.
Author
Owner

@sucubus666 commented on GitHub (Aug 31, 2026):

Found the real root cause with NGX debug logging enabled (__NGX_LOG_LEVEL=3, __NGX_ENABLE_OVERRIDE_LOG_PATH=1, __NGX_LOG_PATH_OVERRIDE=<path>):

[nvmlArchToNGX:46] Blackwell detected, chip is 59
...
[CreateKernel:531] error: cuModuleLoadData failed no kernel image is available for execution on the device

GPU detection is correct (Blackwell, chip 59), libraries load fine, but the bundled CUDA kernel binaries (cubins) in libnvidia-ngx-vsr.so.1.8.2 don't include a compiled image for this architecture. cuModuleLoadData fails, and instead of surfacing that as an exception, the SDK silently falls through and returns an all-zero tensor.

This looks like RTX 50-series (Blackwell, sm_120) simply isn't in the precompiled kernel set for VSR 1.8.2 yet — not a config/environment issue on my end. Anyone on Blackwell hitting this: enabling NGX debug logging (env vars above, writes nvsdk_ngx.log + nvngx_VSR_*.log to the override path) will show the same cuModuleLoadData failure and confirm it.

<!-- gh-comment-id:5477473405 --> @sucubus666 commented on GitHub (Aug 31, 2026): Found the real root cause with NGX debug logging enabled (`__NGX_LOG_LEVEL=3`, `__NGX_ENABLE_OVERRIDE_LOG_PATH=1`, `__NGX_LOG_PATH_OVERRIDE=<path>`): ``` [nvmlArchToNGX:46] Blackwell detected, chip is 59 ... [CreateKernel:531] error: cuModuleLoadData failed no kernel image is available for execution on the device ``` GPU detection is correct (Blackwell, chip 59), libraries load fine, but the bundled CUDA kernel binaries (cubins) in `libnvidia-ngx-vsr.so.1.8.2` don't include a compiled image for this architecture. `cuModuleLoadData` fails, and instead of surfacing that as an exception, the SDK silently falls through and returns an all-zero tensor. This looks like RTX 50-series (Blackwell, sm_120) simply isn't in the precompiled kernel set for VSR 1.8.2 yet — not a config/environment issue on my end. Anyone on Blackwell hitting this: enabling NGX debug logging (env vars above, writes `nvsdk_ngx.log` + `nvngx_VSR_*.log` to the override path) will show the same `cuModuleLoadData` failure and confirm it.
Author
Owner

@sucubus666 commented on GitHub (Aug 31, 2026):

Root cause confirmed from NVIDIA's own official SDK repo (NVIDIA-Maxine/Maxine-VFX-SDK):

  • Supported architectures explicitly include Blackwell (Turing/Ampere/Ada/Blackwell, with Tensor Cores) — so RTX 50-series is in scope architecturally.
  • But: "Windows OS supported: 64-bit Windows 10 or later" — no Linux mention anywhere in the official SDK docs.
  • Critically: "To download the models and runtime dependencies required by the features, you need to run the SDK Installer" from NVIDIA's redistributables page — the actual inference models/kernels are NOT bundled in the open-source repo or, apparently, in the nvidia-vfx pip wheel either. They're fetched by the Windows SDK Installer specifically.

This matches exactly what I found by enabling NGX debug logging: the pip wheel loads and correctly detects Blackwell, but cuModuleLoadData fails because the actual compiled kernel for this architecture was never delivered — there's no Linux-side installer step that provides it.

So this isn't a config/driver issue on Linux — the model/kernel distribution channel for this SDK appears to be Windows-only by design, at least as of the current nvidia-vfx wheel (0.1.0.1, the only version on pypi.nvidia.com). Would be great to get confirmation from a maintainer on whether a Linux-compatible model distribution is planned.

<!-- gh-comment-id:5477845930 --> @sucubus666 commented on GitHub (Aug 31, 2026): Root cause confirmed from NVIDIA's own official SDK repo (NVIDIA-Maxine/Maxine-VFX-SDK): - Supported architectures explicitly include Blackwell (Turing/Ampere/Ada/Blackwell, with Tensor Cores) — so RTX 50-series is in scope architecturally. - But: **"Windows OS supported: 64-bit Windows 10 or later"** — no Linux mention anywhere in the official SDK docs. - Critically: **"To download the models and runtime dependencies required by the features, you need to run the SDK Installer"** from NVIDIA's redistributables page — the actual inference models/kernels are NOT bundled in the open-source repo or, apparently, in the `nvidia-vfx` pip wheel either. They're fetched by the Windows SDK Installer specifically. This matches exactly what I found by enabling NGX debug logging: the pip wheel loads and correctly detects Blackwell, but `cuModuleLoadData` fails because the actual compiled kernel for this architecture was never delivered — there's no Linux-side installer step that provides it. So this isn't a config/driver issue on Linux — the model/kernel distribution channel for this SDK appears to be Windows-only by design, at least as of the current `nvidia-vfx` wheel (0.1.0.1, the only version on pypi.nvidia.com). Would be great to get confirmation from a maintainer on whether a Linux-compatible model distribution is planned.
Author
Owner

@sucubus666 commented on GitHub (Aug 31, 2026):

Full picture now, after checking the official NVIDIA-Maxine/VFX-SDK-Samples repo and the Linux install docs (https://docs.nvidia.com/maxine/vfx/latest/LinuxVFXSDK/InstalltheVFXSDK.html):

Linux is officially supported by the VFX SDK — my earlier comment saying it looked Windows-only was wrong, sorry for the noise. But the real model/kernel distribution path on Linux is completely separate from the nvidia-vfx pip wheel this node depends on:

  1. Download the SDK Core .tgz from NGC, extract to /usr/local (creates /usr/local/VideoFX) — this directory doesn't exist on my system, confirming the pip wheel alone never provides it.
  2. Run /usr/local/VideoFX/features/install_feature.sh --gpu <gpu> --feature nvvfxvideosuperres --ngc-org ... --ngc-team ... with an NGC API key to actually fetch the per-architecture compiled kernel.

The --gpu flag's documented value list is datacenter-only: t4, a100, a30, a2, a10, a16, a40, l4, l40, h100, b100, b200, b40 — no GeForce/RTX consumer entries at all. So even following the full official Linux install path, it's unclear there's a valid --gpu value for a GeForce card (Blackwell or otherwise).

So the pip-only install this ComfyUI node relies on never receives the actual VSR kernel on Linux, and the documented official path (NGC + install_feature.sh) appears to target datacenter GPUs specifically, not GeForce/RTX cards. Would be good to know if there's a GeForce-specific way to fetch this feature on Linux, or if this node's VSR effect is effectively datacenter-only there for now.

<!-- gh-comment-id:5477862129 --> @sucubus666 commented on GitHub (Aug 31, 2026): Full picture now, after checking the official NVIDIA-Maxine/VFX-SDK-Samples repo and the Linux install docs (https://docs.nvidia.com/maxine/vfx/latest/LinuxVFXSDK/InstalltheVFXSDK.html): Linux **is** officially supported by the VFX SDK — my earlier comment saying it looked Windows-only was wrong, sorry for the noise. But the real model/kernel distribution path on Linux is completely separate from the `nvidia-vfx` pip wheel this node depends on: 1. Download the SDK Core `.tgz` from NGC, extract to `/usr/local` (creates `/usr/local/VideoFX`) — **this directory doesn't exist on my system**, confirming the pip wheel alone never provides it. 2. Run `/usr/local/VideoFX/features/install_feature.sh --gpu <gpu> --feature nvvfxvideosuperres --ngc-org ... --ngc-team ...` with an NGC API key to actually fetch the per-architecture compiled kernel. The `--gpu` flag's documented value list is datacenter-only: `t4, a100, a30, a2, a10, a16, a40, l4, l40, h100, b100, b200, b40` — no GeForce/RTX consumer entries at all. So even following the full official Linux install path, it's unclear there's a valid `--gpu` value for a GeForce card (Blackwell or otherwise). So the pip-only install this ComfyUI node relies on never receives the actual VSR kernel on Linux, and the documented official path (NGC + `install_feature.sh`) appears to target datacenter GPUs specifically, not GeForce/RTX cards. Would be good to know if there's a GeForce-specific way to fetch this feature on Linux, or if this node's VSR effect is effectively datacenter-only there for now.
Author
Owner

@HugoGR-7 commented on GitHub (Oct 20, 2026):

Same issue here, with a same-machine A/B that points to the GPU rather than the setup:

  • RTX 5060 Ti 16GB → all-black output, no error or exception
  • RTX 2070 Super 8GB (same PC, same ComfyUI install, same workflow, launched with CUDA_VISIBLE_DEVICES) → works correctly

Environment:

  • Ubuntu 26.04 LTS
  • NVIDIA driver 610.xx (open kernel modules)
  • PyTorch 2.13.0+cu130 (CUDA 13.0)
  • nvidia-vfx 0.2.0.0

So this still happens on nvidia-vfx 0.2.0.0, and the install and dependencies seem fine; the failure looks specific to the 5060 Ti. Since it fails silently, it would help a lot if the node or SDK raised an error when the kernel can't load on the device instead of returning zeros. Happy to run more tests if useful.

<!-- gh-comment-id:6289481296 --> @HugoGR-7 commented on GitHub (Oct 20, 2026): Same issue here, with a same-machine A/B that points to the GPU rather than the setup: - **RTX 5060 Ti 16GB** → all-black output, no error or exception - **RTX 2070 Super 8GB** (same PC, same ComfyUI install, same workflow, launched with `CUDA_VISIBLE_DEVICES`) → works correctly Environment: - Ubuntu 26.04 LTS - NVIDIA driver 610.xx (open kernel modules) - PyTorch 2.13.0+cu130 (CUDA 13.0) - nvidia-vfx 0.2.0.0 So this still happens on nvidia-vfx 0.2.0.0, and the install and dependencies seem fine; the failure looks specific to the 5060 Ti. Since it fails silently, it would help a lot if the node or SDK raised an error when the kernel can't load on the device instead of returning zeros. Happy to run more tests if useful.
Author
Owner

@sucubus666 commented on GitHub (Oct 20, 2026):

Tengo el mismo problema, con una prueba A/B en la misma máquina que apunta a la GPU en lugar de a la configuración:

  • RTX 5060 Ti 16GB → salida completamente negra, sin errores ni excepciones.
  • RTX 2070 Super de 8 GB (mismo PC, misma instalación de ComfyUI, mismo flujo de trabajo, iniciado con CUDA_VISIBLE_DEVICES) → funciona correctamente

Ambiente:

  • Ubuntu 26.04 LTS
  • Controlador NVIDIA 610.xx (módulos de kernel abiertos)
  • PyTorch 2.13.0+cu130 (CUDA 13.0)
  • nvidia-vfx 0.2.0.0

Esto sigue ocurriendo en nvidia-vfx 0.2.0.0, y la instalación y las dependencias parecen estar bien; el fallo parece ser específico de la 5060 Ti. Dado que falla silenciosamente, sería de gran ayuda que el nodo o el SDK generaran un error cuando el kernel no pueda cargarse en el dispositivo, en lugar de devolver ceros. Con gusto realizaré más pruebas si resulta útil.

Lo pude solucionar, los drivers de nvdia no se instalan correctamente para la gpu secundaria, si tienes la 2070 para monitores, esa es la que recibe el driver que permite usar super resolution. Lo hizo claude, no recuerdo los detalles. Mi solucion, cambiar en los pci el orden de las gpu, porque mi bios no permite especificar que gpu es la principal. intercambie las gpu de orden en los pci, no veo el inicio de video hasta que linux no da señal, pero no me preocupa, ahora la rtx 5060 esta como gpu principal y me funciona super resolution. Espero que me haya explicado lo suficiente.

<!-- gh-comment-id:6295626635 --> @sucubus666 commented on GitHub (Oct 20, 2026): > Tengo el mismo problema, con una prueba A/B en la misma máquina que apunta a la GPU en lugar de a la configuración: > > * **RTX 5060 Ti 16GB** → salida completamente negra, sin errores ni excepciones. > * **RTX 2070 Super de 8 GB** (mismo PC, misma instalación de ComfyUI, mismo flujo de trabajo, iniciado con `CUDA_VISIBLE_DEVICES`) → funciona correctamente > > Ambiente: > > * Ubuntu 26.04 LTS > * Controlador NVIDIA 610.xx (módulos de kernel abiertos) > * PyTorch 2.13.0+cu130 (CUDA 13.0) > * nvidia-vfx 0.2.0.0 > > Esto sigue ocurriendo en nvidia-vfx 0.2.0.0, y la instalación y las dependencias parecen estar bien; el fallo parece ser específico de la 5060 Ti. Dado que falla silenciosamente, sería de gran ayuda que el nodo o el SDK generaran un error cuando el kernel no pueda cargarse en el dispositivo, en lugar de devolver ceros. Con gusto realizaré más pruebas si resulta útil. Lo pude solucionar, los drivers de nvdia no se instalan correctamente para la gpu secundaria, si tienes la 2070 para monitores, esa es la que recibe el driver que permite usar super resolution. Lo hizo claude, no recuerdo los detalles. Mi solucion, cambiar en los pci el orden de las gpu, porque mi bios no permite especificar que gpu es la principal. intercambie las gpu de orden en los pci, no veo el inicio de video hasta que linux no da señal, pero no me preocupa, ahora la rtx 5060 esta como gpu principal y me funciona super resolution. Espero que me haya explicado lo suficiente.
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/ComfyUI_Nvidia_VFX_Nodes#29
No description provided.