设备基本信息
有两张卡,A800作TCC纯计算卡,P1000做WDDM图形输出。系统是Windows 11 23H2。已在Windows下正确安装两张卡的驱动,Windows下查看nvidia-smi信息如下图:
安装WSL2
版本比较新的win11(文章撰写于2023年11月)安装WSL2非常容易了。不需要在“启用或关闭Windows功能”里面勾选,直接按照微软官方的教程(安装 WSL | Microsoft Learn),在Windows中用管理员身份打开PowerShell,敲wsl --install,等它自动安装完,就会进到Unix设置账号密码的步骤,至此最新的WSL2和最新的Ubuntu就都已经装完了。但是安装过程可能会受到网络环境影响,如果安装过程报错,可以挂梯子试试。
在WSL2下GPU报错
只要显卡在Windows下安装正确(nvidia-smi能打印正确的信息),WSL2会自动获得正确的显卡驱动,不需要再次安装任何驱动。英伟达官方给出的说明(NVIDIA GPU Accelerated Computing on WSL 2)明确指出:不要再WSL2中安装任何Linux显卡驱动,否则会覆盖掉WSL2中已经正常工作的显卡驱动。
因此,安装完WSL2之后,直接在WSL2中敲wsl --install,就能够打印出正确的信息,跟Windows中一样。
但是我敲wsl --install打印不出GPU信息,报错:Unable to determine the device handle for GPU0000:01:00.0: Unknown Error。
GPU0000:01:00.0是我插的A800的位置,也就是说这张卡没有正常工作,导致wsl --install打印不出信息。
故障排查
首先怀疑是因为混插了两张不同型号的显卡,导致WSL2不支持。查阅微软官方文档(GPU accelerated ML training in WSL | Microsoft Learn),WSL2支持多显卡,但同一时间只能调用其中一张显卡,可以通过下图中的命令选择指定的显卡。
按照微软文档,选择了NVIDIA A800显卡,重启后故障依旧。
然后,怀疑是因为WSL2不支持A800、A100。仔细阅读英伟达的文档(NVIDIA GPU Accelerated Computing on WSL 2),文档中说明WSL2目前仅支持工作在图形模式(WDDM)下的GeForce和Quadro显卡,不支持工作在纯计算模式(TCC)下的Quadro卡,不支持Tesla卡。
结论
WSL2目前(2023年11月)不支持Tesla A100/A800显卡,也不支持工作在TCC模式下的Quadro显卡,以上显卡的用户安心用Linux,不要瞎折腾。