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.
```

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

  • 检查软链接是否有问题

    ldconfig
    

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

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

    find  -name libnvidia-ml*
    

    可以看到文件在路径 /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
    
  • 有网友提出了另外一种解决方法,就是在WSL2子系统的Docker上启动容器不添加--gpus all配置参数,即不使用GPU。等配置好环境后,打包镜像,在服务器上再使用GPU来跑代码。这个方法我还没验证过,但看起来可行。

参考文章

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要将WSL 2子系统迁移到D盘,您可以按照以下步骤操作: 1. 首先,确保已经安装并启用了WSL 2。如果尚未完成此操作,请参考官方文档进行安装和配置。 2. 打开命令提示符或PowerShell,并输入以下命令以查看已安装的WSL子系统列表: ``` wsl --list ``` 3. 选择要迁移WSL子系统,并记录下其名称。 4. 输入以下命令以停止该WSL子系统: ``` wsl --terminate <子系统名称> ``` 5. 输入以下命令以将该WSL子系统导出为tar文件: ``` wsl --export <子系统名称> <导出路径\导出文件名.tar> ``` 例如,可以使用以下命令将子系统导出到D盘根目录下的wsl.tar文件中: ``` wsl --export <子系统名称> D:\wsl.tar ``` 6. 导出完成后,输入以下命令以删除该WSL子系统: ``` wsl --unregister <子系统名称> ``` 7. 输入以下命令以导入之前导出的tar文件,并创建一个新的子系统: ``` wsl --import <新子系统名称> <新子系统安装路径> <tar文件路径> ``` 例如,可以使用以下命令将之前导出的wsl.tar文件导入到D盘根目录下的wsl_new目录中,并命名为"new_wsl": ``` wsl --import new_wsl D:\wsl_new D:\wsl.tar ``` 8. 输入以下命令以启动新的WSL子系统: ``` wsl -d <新子系统名称> ``` 现在,您应该已成功将WSL 2子系统迁移到D盘上的新路径。请确保替换命令中的`<子系统名称>`,`<导出路径\导出文件名.tar>`,`<新子系统名称>`,`<新子系统安装路径>`和`<tar文件路径>`为实际的值。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值