代码改变世界

解决win10安装cupy包报错

2022-04-05 16:13  jym蒟蒻  阅读(4244)  评论(0编辑  收藏  举报

解决win10使用GPU跑程序遇到的一系列报错

    • 安装cupy包
    • 使用cupy包的时候报错 ImportError: DLL load failed: 找不到指定的模块。
    • 卸载cuda11.5、安装cuda10.2
    • 安装适配于cuda10.2的cudnn
    • 报错CUDA path could not be detected. Set CUDA_PATH environment variable if CuPy fails to load.
    • 报错 module 'cupy' has no attribute 'scatter_add'
    • Anaconda配cupy环境报错
    • 报错 ModuleNotFoundError: No module named 'PIL'
    • 报错 cupy.cuda.compiler.CompileException: nvrtc: error: failed to open nvrtc-buil

 

安装cupy包

用GPU跑程序用了cupy包。

pip install cupy-cuda102

使用cupy包的时候报错 ImportError: DLL load failed: 找不到指定的模块。

在这里插入图片描述

这是因为我的cuda是11.5的,为了用用cupy,尝试了以下几种方法,均不行。
1.下载cupy的cuda115版本。
2.卸载cupy的cuda115版本,下载cupy的cuda102版本,但是此时cuda还是11.5版本。
3.下载cuda10.2版本,此时电脑的cuda10.2和11.5共存,如下图所示。
在这里插入图片描述

最后发现,能成功的只有一个,那就是cuda10.2+cupy的cuda102。此时电脑只能有一个cuda版本,也就是10.2,所以需要卸载cuda11.5。

这里面有个坑也踩了。如下图所示,下载cuda10.2之前,必须要卸载完11.5!
在这里插入图片描述
不然就会出现这种情况:
在这里插入图片描述

卸载cuda11.5、安装cuda10.2

打开控制面板,卸载所有cuda11.5的文件,如下图所示
在这里插入图片描述
cuda10.2官网网址:https://developer.nvidia.com/cuda-10.2-download-archive

卸载完11.5,再下载10.2时候,竟然还会出现下面的警告:
这个时候,可以无视,因为的确是先卸载完11.5后下载的10.2。

在这里插入图片描述
然后在命令行输入:出现如下状态,表示安装成功。

nvcc -V

在这里插入图片描述
此时观察NVIDA的控制面板,竟然还是11.5,不过可以无视,因为这不影响跑程序。
在这里插入图片描述

安装适配于cuda10.2的cudnn

官网:https://developer.nvidia.com/rdp/cudnn-archive
安装包下载完解压
在这里插入图片描述
把所有解压的文件放到:NVIDA GPU Computing Toolkit 里面的V10.2下面
在这里插入图片描述

报错CUDA path could not be detected. Set CUDA_PATH environment variable if CuPy fails to load.

在这里插入图片描述
根据报错的这个路径,打开这个environment文件。
在这里插入图片描述
里面的cuda_path改成cuda的路径。

这个路径在哪,其实就在环境变量配置里面。

在这里插入图片描述
把这个路径放到environment文件里,如下图所示。报错就解决了。
在这里插入图片描述

报错 module ‘cupy’ has no attribute ‘scatter_add’

把cuda降到10.2之后,改了一大堆,程序终于能运行了,可是运行一会就报这个错。

查了半天,在stackoverflow上面找到了方法,使用下面这句话把cupy版本降低。

pip install "cupy-cuda102<8.0.0"

在这里插入图片描述
在这里插入图片描述
然后程序终于用GPU跑起来了。
在这里插入图片描述

Anaconda配cupy环境报错

一开始是全部在Anaconda里面配的环境,最后发现无论怎么弄,使用cupy包总报错。
于是直接用pip了,最后把所有需要的包又在电脑的python文件夹里装了一份。然后pycharm环境直接用了python的环境。最后能跑成。
在这里插入图片描述

报错 ModuleNotFoundError: No module named ‘PIL’

问题在于Pillow库太老了。执行以下两个命令。

pip uninstall pillow
pip install pillow

报错 cupy.cuda.compiler.CompileException: nvrtc: error: failed to open nvrtc-buil

还出现类似:找不到nvrtc64_101_0.dll的问题

这个问题是遇到最玄学的一次。

解决办法就是,重启一下电脑。

重启电脑后,就不报错了,转而报module ‘cupy’ has no attribute 'scatter_add’这个错,这个错就按照上面讲的解决就完事。

最后GPU成功跑起来了。区别可以看到,用cpu跑程序的话,cpu占用量在80%以上,用GPU跑程序,cpu占用量只有16%

在这里插入图片描述