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驱动