Omniverse Developer Guide » Linux Troubleshooting
在 Linux 上运行 Omniverse-kit 或 Omniverse-Create 时解决问题的说明。
Q1) 如何安装驱动程序
始终安装 .run 可执行驱动程序文件。例如从以下地址下载:https://www.nvidia.com/Download/Find.aspx
不要安装 PPA 驱动程序。PPA 驱动程序与 Linux 发行版打包在一起,并通过 add-apt 或软件和更新安装。这些驱动程序不容易卸载或清理。需要手动清除它们并清理 Vulkan ICD 文件。
驱动程序安装步骤:
进入 TTYs 模式 (CRL + ALT + F3),或使用 systemctl 方法。
卸载所有以前的驱动程序:
sudo nvidia-uninstall
仅当您有 PPA 驱动程序的残留时,才需要执行以下清理步骤:
sudo apt-get remove --purge nvidia-*
sudo apt autoremove
sudo apt autoclean
重新启动计算机,然后从登录屏幕进入 TTYs 模式:
sudo chmod +x NVIDIA-Linux-x86_64-460.67.run
sudo ./NVIDIA-Linux-x86_64-460.67.run
如果内核无法编译,请确保在安装驱动程序之前下载与 Linux 内核相关的头文件和镜像文件。
忽略与缺少 32 位库相关的错误,如果需要确认,则构建任何缺少的库。
通过 SSH 在远程机器上安装驱动程序:
停止 X,使用 NVIDIA 驱动程序安装程序安装驱动程序,然后重新启动 X。
在 Ubuntu 18.04 上停止 X,运行以下命令,然后等待一段时间,确保 X 未运行。例如:运行 ps auxfw 并验证没有 X 或窗口管理器进程正在运行。
sudo systemctl isolate multi-user.target
要重新启动 X,请运行:
sudo systemctl isolate graphical.target
在已配置 HP Anyware 的系统上安装驱动程序应该同样有效。但是,首次安装 HP Anyware 需要在安装 NVIDIA 驱动程序之前按照其说明进行操作。
Q2) Omniverse kit 日志仅列出了我的一个 GPU,但 nvidia-smi 显示多个 GPU
如何在 Vulkan 中支持枚举多个 GPU
多 GPU 系统需要 xserver-xorg-core 1.20.7 或更新版本。否则,Vulkan 应用程序无法看到多个 GPU。
Ubuntu 20.04 默认附带 Xorg 1.20.8。已知 Ubuntu 20 可以工作,但 Omniverse QA 尚未进行全面测试。
不支持 Ubuntu 16。
如何更新 xorg:
通过软件更新将 Ubuntu 18.04.x LTS 更新到最新的 Ubuntu 18.04.5 LTS。
安装 LTS Enablement Stacks 以升级 xorg:https://wiki.ubuntu.com/Kernel/LTSEnablementStack
Q3) 如何使用 vulkaninfo 或 vulkaninfoSDK 实用程序验证正确的 Vulkan 设置
从 https://vulkan.lunarg.com/sdk/home 下载最新的 Vulkan SDK tar.gz 并解压缩。
除非您知道 Omniverse 支持的确切版本,并且需要验证层进行调试(参考 readme.md),否则不要通过 apt-install 安装 Vulkan SDK。只需下载 zip 文件即可。
从解压缩的包中执行以下实用程序。
bin/vulkaninfo
它应该枚举所有 GPU。如果失败,则您的驱动程序或所需的 xorg 安装不正确。不要安装 vulkan-utils 或其他 MESA 工具来修复驱动程序,因为它们可能会安装旧的不兼容验证层。
nvidia-smi GPU 表与 Vulkan 驱动程序报告的 GPU 列表无关。
Q4) 我只有一个 GPU,但在 Omniverse kit 日志中看到报告了多个相同类型的 GPU
您可能除了从 .run 驱动程序包安装的驱动程序之外,还有其他 PPA 驱动程序的残留组件。
您可以通过检查 vulkaninfo 是否仅显示单个 GPU 来确认这一点。应清理这些额外的 ICD 文件。
这些额外的文件不会影响 nvidia-smi 的输出,因为这是 Vulkan 驱动程序问题。
清理重复 ICD 文件的步骤:
如果您看到以下两个文件夹都有一些 json 文件,例如 nvidia_icd.json,则从 /usr/share/vulkan/ 路径中删除重复的 icd.d 文件夹。
“/etc/vulkan/icd.d”:从非 Linux 发行版提供的包安装的 ICD 的位置
“/usr/share/vulkan/icd.d”:从 Linux 发行版提供的包安装的 ICD 的位置
运行 vulkaninfo 而不是 nvidia-smi 来验证修复。
Q5) 启动失败,出现:VkResult: ERROR_DEVICE_LOST
启动时设备丢失通常是系统设置错误。潜在的错误:
驱动程序安装不正确。
卸载并重新安装。
当您有不同的 GPU 型号时,460.67 驱动程序之前的驱动程序存在错误。例如 Turing + Ampere GPU。
解决方案:安装 460.67 或更高版本的驱动程序,其中包含错误修复。
旧驱动程序的解决方法:移除非 RTX 卡,并在移除任何 GPU 后重新安装驱动程序。
已知此问题会导致其他光线追踪应用程序崩溃。但是,常规光栅化 Vulkan 应用程序不会受到影响。
如果您有多个 GPU,–/renderer/activeGpu=1 设置无法更改此行为。
文件夹中留有旧的着色器缓存
删除文件夹 /home/USERNAME/.cache/ov/Kit/101.0/rendering 的内容
已知使用未从源代码构建的 omniverse-kit SDK 包,或未使用 omniverse 安装程序删除缓存。
Q6) 启动失败,出现:GLFW initialization failed
这是驱动程序或显示问题:
必须将物理显示器连接到您的 GPU,除非您正在使用 --no-window 进行流式传输来运行无头 kit/Create。如果没有显示器和可呈现的交换链,则无法在 X11 窗口上进行可视化渲染。
使用以下命令测试显示设置。echo $DISPLAY 如果没有返回任何内容,请设置环境。
按如下方式持续设置显示环境 export DISPLAY=:0.0 完成后重新启动。
echo $DISPLAY 在重新启动后再次验证。
如果上述步骤没有帮助,请重新安装驱动程序。
Q7) 启动失败,出现:Failed to find a graphics and/or presenting queue
您的 GPU 未连接到物理显示器。除非在 --no-windows 模式下运行无头 Kit/Create,否则必需。
您的 GPU 已连接到物理显示器,但未在 xorg 中设置为 Ubuntu GUI 渲染的默认 GPU:
选择要用于 Ubuntu UI 和 Omniverse 渲染以将输出呈现到屏幕的 GPU。
按如下方式设置其 busid 并重新启动:sudo nvidia-xconfig --busid PCI:103:0:0
busid 采用十进制格式,从 NVIDIA X Server Settings 中获取
将物理显示器连接到该 GPU 并启动。
如果您有多个 GPU,–/renderer/activeGpu=1 设置无法更改要运行的 GPU。必须在 xorg 配置中设置 busid,然后如果不是零,则应将 activeGpu 设置为同一设备。
NVIDIA Colossus 涉及更多工作。请参阅 Issac 设置。
Q8) carb::glinterop 启动失败,出现 X Error of failed request: GLXBadFBConfig
在最新版本中,OpenGL Interop 支持对 RTX 渲染器是可选的,仅 Storm 渲染器需要。但是,此类故障通常会揭示可能影响 Vulkan 应用程序的其他系统设置问题。
几个潜在问题:
不支持的驱动程序或硬件。目前,最低要求是 OpenGL 4.6。
卸载 OpenGL 实用程序(如 Mesa-utils)并重新安装 NVIDIA 驱动程序。
Q9) 如何指定在哪些 GPU 上运行 Omniverse 应用程序
单 GPU 模式:按照 Q8 说明设置所需的主 GPU 进行呈现,然后如果不是零,则在启动期间使用以下选项设置该 GPU 的索引。 --/renderer/activeGpu=1
多 GPU 模式:按照 Q8 说明操作,然后在启动期间使用以下选项设置所需 GPU 的索引。列表中的第一个设备执行呈现,应在 Xorg 配置中设置。 --/renderer/multiGpu/activeGpus=‘1,2’
注意
始终验证您所需的 GPU 在 omniverse .log 文件的 [gpu.foundation] 下的 GPU 表中设置为 Active 并带有"Yes"。上述选项中的 GPU 索引来自此表,而不是来自 nvidia-smi。
CUDA_VISIBLE_DEVICES 和其他 CUDA 命令无法更改 Vulkan 应用程序要运行的 GPU。
Q10) 视口是灰色的,没有渲染任何内容
这意味着 RTX 渲染器失败,失败原因将以错误的形式打印在完整的 .log 文件中,例如不支持的驱动程序、硬件等。日志文件通常位于 /home/USERNAME//logs//*.log
Q11) 出现许多类似以下的失败:Failed to create change watch for xxx: errno=28, No space left on device
这是 Linux 上的文件更改监视器限制,通常设置为 8k。要么关闭使用监视器的其他应用程序,要么将 max_user_watches 增加到 512k。请注意,这将增加系统 RAM 使用量。
要查看当前的监视器限制:
cat /proc/sys/fs/inotify/max_user_watches
要更新监视器限制:
编辑 /etc/sysctl.conf 并添加 fs.inotify.max_user_watches=524288 行。
加载新值:sudo sysctl -p
您可以按照 Visual Studio Code Watcher 限制中列出的完整说明进行操作
Q12) 如何增加 Linux 上的文件描述符限制以在 2 个以上的 GPU 上进行渲染
如果您使用多个 GPU 进行渲染,则需要增加文件描述符限制。默认限制为 1024,但对于 2 个以上 GPU 的系统,我们建议使用更高的值,如 65535。没有这个,Omniverse 应用程序将在创建共享资源(例如 Vulkan fence)期间失败,并导致启动时崩溃。
要增加文件描述符限制
修改 /etc/systemd/user.conf 和 /etc/systemd/system.conf,添加以下行。这将处理图形登录:DefaultLimitNOFILE=65535
修改 /etc/security/limits.conf,添加以下行。这将处理非 GUI 控制台登录:hard nofile 65535 soft nofile 65535
重新启动计算机以使更改生效。