使用CUDA和Nvidia卡的PyTorch:RuntimeError:CUDA错误:所有支持CUDA的设备都忙碌或不可用,但torch.cuda.is_available()为True

zxlwwiss  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(326)

问题:

在CentOS 7上运行的Nvidia GPU上使用CUDA运行PyTorch脚本时,我偶尔会遇到以下CUDA错误。
如果我跑:

python3 -c 'import torch; print(torch.cuda.is_available()); torch.randn(1).to("cuda")'​

我得到以下输出:

True​
Traceback (most recent call last):​
  File "<string>", line 1, in <module>​
RuntimeError: CUDA error: all CUDA-capable devices are busy or unavailable​
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.​
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

PyTorch似乎认为GPU是可用的,但我不能把任何东西放到它的内存中。当我重新启动计算机时,错误消失了。我似乎不能得到的错误回来一贯。

cwtwac6a

cwtwac6a1#

当我在Python之外运行nvidia-smi时,它显示了一个在GPU上运行的进程,尽管我取消了PyTorch脚本的执行:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.27.04    Driver Version: 460.27.04    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100-PCIE...  On   | 00000000:00:06.0 Off |                    0 |
| N/A   29C    P0    33W / 250W |   1215MiB / 32510MiB |      0%   E. Process |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A     18805      C   python3                          1211MiB |
+-----------------------------------------------------------------------------+

如果我通过运行kill -9 18805杀死进程(PID = 18805),则该进程不再出现在nvidia-smi中,并且错误不会再次发生。
任何关于更好的解决方案的见解,或者如何首先避免这个问题,都是非常受欢迎的。

相关问题