解决Error 500: named symbol not found报错问题

问题背景

在前面写过的一篇博客中,我们介绍过在Win11的操作系统下,通过WSL2+Docker的方案来部署MindSpore和Pytorch等GPU加速的深度学习框架。但是在后续使用的过程中,偶然一次Windows的系统更新之后,突然环境就无法使用了,提示是无法识别到GPU。如果使用Pytorch的话,会看到这种报错:

dechin@xxx:/workspace# python3 -c "import torch;print (torch.cuda.is_available())"
/opt/conda/lib/python3.11/site-packages/torch/cuda/__init__.py:182: UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 500: named symbol not found (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)
  return torch._C._cuda_getDeviceCount() > 0
False

按照网上和DeepSeek的建议,在测试多种方案之后,包括更新pytorch版本、更新cudatoolkit、更新docker镜像,更新wsl版本,全都试了一遍,都没有效果。最终定位到Win11主机显卡驱动的问题,应该是某一次的Win11自动更新之后,把显卡驱动也做了升级,进而导致这一次的问题。因此,最终的解决方案定为显卡驱动版本回退(注意!!!谨慎操作,并不确保没有延申问题)。

显卡驱动下载

首先我们需要手动下载一个合适版本的显卡驱动,我从最新的591,到之前的580和571都试了一下,都有这个问题。只有早期的552版本可以正常运行。但是Nvidia App里边没有这个版本可以回退,官网中文版也只有那几个固定的新版本,于是去搜到了一个可以用的552版本下载地址。但是这个版本在我的环境下可以正常工作,不代表适用于所有人,所以大家搜版本的时候要找到适合自己本地平台的版本号。

这个下载之后,是一个exe的可执行文件,按照其默认流程安装-重启电脑,即可使用。安装完成后,可以在Nvidia App里查看驱动的版本号:

如果这里显示版本号被更新了,那就是驱动安装成功了。一般安装成功后,最好都需要重启一下,才能正常使用完整的功能。

最终测试

还是用我们最开始的这个Pytorch的测试案例来运行一下:

dechin@xxx:/workspace# python3 -c "import torch;print (torch.cuda.is_available())"
True

这里显示为True,那就表示更新驱动以后,功能可以正常使用了[/撒花][/撒花][/撒花]。

总结概要

本文介绍了一个可能在Win11的自动更新之后出现的严重问题:由于显卡驱动被更新了,原本安装在WSL2和Docker中的GPU环境因为版本不适配的问题,会无法识别GPU(虽然在Nvidia-Smi中可以看到,也可以用nvcc编译,但正常使用会报错)。通过手动降驱动版本,可以解决该问题。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/cuda-error-500.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

posted @ 2026-01-13 10:37  DECHIN  阅读(7)  评论(0)    收藏  举报