带有 CUDA 和 Nvidia 卡的 PyTorch:RuntimeError:CUDA 错误:所有支持 CUDA 的设备都忙或不可用,但 torch.cuda.is_available() 为 T
Posted
技术标签:
【中文标题】带有 CUDA 和 Nvidia 卡的 PyTorch:RuntimeError:CUDA 错误:所有支持 CUDA 的设备都忙或不可用,但 torch.cuda.is_available() 为 True【英文标题】:PyTorch with CUDA and Nvidia card: RuntimeError: CUDA error: all CUDA-capable devices are busy or unavailable, but torch.cuda.is_available() is True 【发布时间】:2021-12-23 10:34:23 【问题描述】:问题:
在 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 可用,但我不能在它的内存上放任何东西。当我重新启动计算机时,错误消失了。我似乎无法让错误持续出现。
【问题讨论】:
【参考方案1】:当我在 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 |
+-----------------------------------------------------------------------------+
如果我终止进程(使用PID
=18805
),通过运行kill -9 18805
,该进程将不再出现在nvidia-smi
中,并且错误不会再次出现。
非常欢迎任何关于更好解决方案的见解,或者如何首先避免这个问题。
【讨论】:
以上是关于带有 CUDA 和 Nvidia 卡的 PyTorch:RuntimeError:CUDA 错误:所有支持 CUDA 的设备都忙或不可用,但 torch.cuda.is_available() 为 T的主要内容,如果未能解决你的问题,请参考以下文章
在具有不同 CUDA SDK 版本的同一服务器上的虚拟机上使用 NVIDIA K20 卡
在 Ubuntu Linux 中使用 Nvidia 卡的 OpenCL 中出现 -1001 错误
如何使用 NVIDIA 驱动程序/CUDA(支持 tensorflow-gpu)和带有 pip 的 Python3 为图像制作 Dockerfile?