报错 RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED
表示在调用 cuDNN 库(CUDA 深度神经网络加速库)时,出现了执行失败的问题。这个问题通常与 CUDA 环境、cuDNN 库的版本不匹配、GPU 显存不足或其他硬件配置问题有关。
------------------
最终禁用cudnn之后有用,但是禁用后跑的很慢,需要进一步探讨怎么解决cudnn的问题
-------------------
解决步骤:
1. 检查 GPU 显存是否不足:
CUDNN_STATUS_EXECUTION_FAILED
常常是由于显存不足导致的。你可以通过命令检查 GPU 的显存使用情况:nvidia-smi
- 如果显存不足,可以尝试减小
batch_size
参数,例如将批量大小从 24 减小为 16 或 8:python train_classification.py --model pointnet_cls --log_dir pointnet_cls --batch_size 16
2. 更新或重装 CUDA 和 cuDNN:
- 确保安装的 CUDA 版本与 PyTorch 和 cuDNN 版本兼容。你可以使用以下命令检查当前的 CUDA 和 PyTorch 版本:
import torch print(torch.version.cuda) print(torch.backends.cudnn.version())
- 如果版本不匹配,可能需要重新安装合适的 CUDA 和 cuDNN 版本。参考 PyTorch 官网 获取正确的安装命令。
3. 禁用 cuDNN(有效):
- 如果你怀疑是 cuDNN 的问题,可以尝试禁用 cuDNN 以排除问题。添加以下代码禁用 cuDNN:
torch.backends.cudnn.enabled = False
- 你可以在
train_classification.py
文件的开头添加这行代码来禁用 cuDNN。
4. 更新 PyTorch 版本:
- 如果你使用的 PyTorch 版本较旧,可能存在与 cuDNN 的兼容性问题。可以尝试升级 PyTorch:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
5. 使用 CPU 模式进行调试:
- 如果以上方法都无法解决问题,你可以尝试先使用 CPU 模式来调试代码,确认模型代码是否有其他问题:
python train_classification.py --model pointnet_cls --log_dir pointnet_cls --use_cpu
总结:
这个错误主要与 CUDA 或 cuDNN 相关,常见原因包括显存不足或 CUDA/cuDNN 版本不匹配。你可以从调整 batch_size
开始,逐步排查是否是硬件资源问题或库版本问题。