首页 › 具身智能 › 11-其他辅助工具 › vulkan重要环境配置

vulkan重要环境配置

好的,这是提供的 Vulkan 安装指南的中文翻译,已保留原始 Markdown 格式。​

​

​

Vulkan​

Ubuntu​

在 Ubuntu 上安装 Vulkan:​

Bash​

​

代码块​

Plain Text

sudo apt-get install libvulkan1​

​

测试你的 Vulkan 安装:​

Bash​

​

代码块​

Plain Text

sudo apt-get install vulkan-tools​

vulkaninfo​

​

如果 vulkaninfo 未能显示关于 Vulkan 的信息,请检查以下文件是否存在:​

​

代码块​

Plain Text

/usr/share/vulkan/icd.d/nvidia_icd.json​

/usr/share/glvnd/egl_vendor.d/10_nvidia.json​

/etc/vulkan/implicit_layer.d/nvidia_layers.json (可选,但对于某些 GPU 如 A100 是必需的)​

​

如果 /usr/share/vulkan/icd.d/nvidia_icd.json 不存在,请尝试创建该文件并填入以下内容:​

JSON​

​

代码块​

Plain Text

{​

"file_format_version" : "1.0.0",​

"ICD": {​

"library_path": "libGLX_nvidia.so.0",​

"api_version" : "1.2.155"​

}​

}​

​

如果 /usr/share/glvnd/egl_vendor.d/10_nvidia.json 不存在,你可以尝试运行 sudo apt-get install libglvnd-dev。10_nvidia.json 包含以下内容:​

JSON​

​

代码块​

Plain Text

{​

"file_format_version" : "1.0.0",​

"ICD" : {​

"library_path" : "libEGL_nvidia.so.0"​

}​

​

如果 /etc/vulkan/implicit_layer.d/nvidia_layers.json 不存在,请尝试创建该文件并填入以下内容:​

JSON​

​

代码块​

Plain Text

{​

"file_format_version" : "1.0.0",​

"layer": {​

"name": "VK_LAYER_NV_optimus",​

"type": "INSTANCE",​

"library_path": "libGLX_nvidia.so.0",​

"api_version" : "1.2.155",​

"implementation_version" : "1",​

"description" : "NVIDIA Optimus layer",​

"functions": {​

"vkGetInstanceProcAddr": "vk_optimusGetInstanceProcAddr",​

"vkGetDeviceProcAddr": "vk_optimusGetDeviceProcAddr"​

​

更多讨论可以在这里找到。​

如果 Vulkan 驱动损坏,可能会发生以下错误。请尝试按照上述说明重新安装。​

​

代码块​

Plain Text

RuntimeError: vk::Instance::enumeratePhysicalDevices: ErrorInitializationFailed​

​

​

代码块​

Plain Text

​

​

代码块​

Plain Text

Segmentation fault (core dumped)​

​

如果你仍有问题,可以检查 NVIDIA 驱动。首先运行​

Bash​

​

代码块​

Plain Text

ldconfig -p | grep libGLX_nvidia​

​

如果找不到 libGLX_nvidia.so,那么很可能你安装了不正确的驱动。要在 Linux 上获取正确的驱动,建议安装 nvidia-driver-xxx (不要使用包名中带有 server 的版本),并避免使用任何其他安装方法,如 runfile。​

wsl安装的话​

​

代码块​

Plain Text

sudo -E apt-get install -y libnvidia-gl-580​

​

-E可以使用环境变量网络​

​

代码块​

Plain Text

ldconfig -p | grep libGLX_nvidia​

libGLX_nvidia.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLX_nvidia.so.0​

​

*注意:关于wsl​

If you still have some issues, you can check the NVIDIA drivers. First run​

ldconfig -p | grep libGLX_nvidia​

If libGLX_nvidia.so is not found, then it is likely that you have installed an incorrect driver. To get the right driver on linux, it is recommended to install nvidia-driver-xxx (do not use the ones with server in the package name) and to avoid using any other method of installation like a runfile​

看了官网文档。因为我是wsl,因此nvidia的driver我是没有在linux中安装的,虽然wsl上来nvidia-smi可用,但是nvcc是不可用的。因此driver和toolkit都需要安装。​

你完全理解到问题的核心了!说得非常对。​

这就是在 WSL 环境下最容易混淆的一点,你已经把它理清了:​

驱动 (Driver) 在 Windows: nvidia-smi 之所以能用,是因为你的 Windows 主机上安装了 NVIDIA 驱动。WSL2 通过一个特殊的机制直接和这个驱动通信来获取 GPU 信息,但它只提供了最基础的桥梁。​

工具包 (Toolkit) 和用户态库在 Linux: 像 nvcc (CUDA 编译器) 和 sapien/Vulkan 需要的更深层的库(比如 libcuda.so, libvulkan.so 以及我们之前找到的 nvidia_icd.json),并不会自动出现在 WSL 里。这些都需要通过在 WSL 内部安装 CUDA Toolkit for WSL 来提供。​

你引用的那段文档是针对裸机 Linux (Bare-metal Linux) 的,在那种环境下,你需要用 apt 安装 nvidia-driver-xxx。但在 WSL 里,你绝对不能这样做,否则会破坏 WSL 和 Windows 驱动之间的连接。​

所以,你的结论是完全正确的:我们需要在你的 WSL (Ubuntu) 环境里,安装官方的 NVIDIA CUDA Toolkit。 这会一并解决 nvcc 不可用和 Vulkan 驱动不兼容的问题。​

请参考wsl安装cuda驱动​