• WSL2上Docker打包的镜像迁移到Ubuntu服务器上无法使用GPU


    WSL2子系统上Docker打包的镜像迁移到Linux服务器后,启动容器输入命令nvidia-smi,没有输出预期的显卡和驱动信息,而是报错:

    ```
    NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system.
    Please also try adding directory that contains libnvidia-ml.so to your system PATH.
    ```
    
    • 1
    • 2
    • 3
    • 4

    从报错的信息来看,是无法检索到libnvidia-ml.so文件,所以要找到这个文件的路径(如果存在的话),建立正确的软连接。解决问题的方法:

    • 检查软链接是否有问题

      ldconfig
      
      • 1

      如果输出很多***empty,说明软链接确实有问题。

    • 查询系统中文件名开头为“libnvidia-ml”的文件路径

      find  -name libnvidia-ml*
      
      • 1

      可以看到文件在路径 /usr/lib/x86_64-linux-gnu下面

    • 建立软链接

      进入 /usr/lib/x86_64-linux-gnu,建立正确的软链接。

      # 在容器中运行以下命令,注意下面的450.102.04是驱动版本信息,应当根据实际情况修改
      cd /usr/lib/x86_64-linux-gnu
      # 建立软链接 libcuda.so > libcuda.so.1
      cp libcuda.so libcuda.so.backup
      rm libcuda.so
      ln -s libcuda.so.1 libcuda.so
      
      # 建立软链接 libcuda.so.1 > libcuda.so.450.102.04
      cp libcuda.so.1 libcuda.so.1.backup
      rm libcuda.so.1
      cp libcuda.so.450.102.04 libcuda.so.1
      
      # 建立软链接 libnvidia-ml.so.1 > libnvidia-ml.so.450.102.04
      cp libnvidia-ml.so.1 libnvidia-ml.so.1.backup
      rm libnvidia-ml.so.1
      ln -s libnvidia-ml.so.450.102.04 libnvidia-ml.so.1
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    • 有网友提出了另外一种解决方法,就是在WSL2子系统的Docker上启动容器不添加--gpus all配置参数,即不使用GPU。等配置好环境后,打包镜像,在服务器上再使用GPU来跑代码。这个方法我还没验证过,但看起来可行。

    参考文章

  • 相关阅读:
    产品经理需求文档(PRD)怎么写?
    什么是死锁、定位和修复
    JavaWeb基础面试题
    汇编指令转机器码
    py0_二十一天计划书
    天池:数据分析达人赛1:用户情感可视化分析
    【UOJ 494】DNA序列(贪心)(Lyndon分解)
    js滚动条触底加载更多#js懒加载数据#步骤条布局懒加载
    Django之模版层
    .NET C# 读写CSV及转换DataTable
  • 原文地址:https://blog.csdn.net/Leeoo_lyq/article/details/126137416