RuntimeError: CUDA error: unknown error

Debug this error

Posted by Sinputer on July 28, 2019

报错描述

最近我在Windows命令行环境中执行含有gpu运算的深度学习任务中时,一直会报下面的错误:

RuntimeError: CUDA error: unknown error

具体是在torch._C._cuda_init()这一步发生错误。

过程与收获

只搜索RuntimeError: CUDA error: unknown error是很难找到正确的解决方案的。谷歌和百度的前面的搜索结果大部分都认为是cuda没安好或者版本与Pytorch不匹配。使用nvidia-smi命令发现 cuda version 为10.2 但使用 conda list 命令发现和 cuda version 不一样。为cudatoolkit 10.0.130。我认为这俩不是指同一个东西,但以为俩版本可能需要一致,于是兴冲冲装了一个cuda 10.0,然后再次运行gpu运算,还是报同样的错误。一运行nvidia-smi,发现cuda version还是显示 10.2。又把Pytorch使用 conda install pytorch torchvision cudatoolkit=10.0 -c pytorch重装了一下,还是不行。我迷惑了,查了一下才发现这俩版本确实不是指同一个东西。

conda list 出来的cudatoolkit 10.0.130和在命令行执行nvcc -V都是指cuda runtime API的版本,但nvidia-smi显示的CUDA Version是指cuda driver API的版本。两者并没有太大的联系,不需要一致。而通常机器学习框架如TensorFlow、Pytorch要求的cuda 版本指的都是runtime的版本。

解决方案 Solution

所以上面这一通操作下来问题并没有得到解决。我就耐着性子看谷歌的其他结果,偶然发现了一个github closed的issue提出的在使用Pytorch的代码文件中,在import torch语句后一句加入(插入)torch.cuda.current_device(),问题解决了。注意要在后一句加上这句,虽然在稍微后面一点加可能也work,但我没测试过。

参考

solution: https://github.com/pytorch/pytorch/issues/21114

cuda version: https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi

不work的解决方案(可能适用于其他情况): https://github.com/pytorch/pytorch/issues/18999