### 文章目录
- [@[toc]](#文章目录 @[toc] RuntimeError: nms_impl: implementation for device cuda:0 not found. 问题描述: 解决方案)
- [RuntimeError: nms_impl: implementation for device cuda:0 not found.](#文章目录 @[toc] RuntimeError: nms_impl: implementation for device cuda:0 not found. 问题描述: 解决方案)
- [问题描述:](#文章目录 @[toc] RuntimeError: nms_impl: implementation for device cuda:0 not found. 问题描述: 解决方案)
- [解决方案](#文章目录 @[toc] RuntimeError: nms_impl: implementation for device cuda:0 not found. 问题描述: 解决方案)
RuntimeError: nms_impl: implementation for device cuda:0 not found.
问题描述:
使用MMDetection训练框架时,可能会遇到一个常见的错误:RuntimeError: nms_impl: implementation for device cuda:0 not found.这个错误通常发生在尝试CUDA设备上运行非极大抑制NMS操作时,系统无法找到对应的CUDA实现。具体表现为:
Pytorch能够正确识别CUDA设备;- 安装的也是
mmcv-full,但无法找到对应的NMS CUDA实现;

python
File "/miniforge/envs/mmdet/lib/python3.8/site-packages/mmcv/ops/nms.py", line 28, in forward
inds = ext_module.nms(
RuntimeError: nms_impl: implementation for device cuda:0 not found.
解决方案
安装与mmdet版本兼容的mmcv-full,或者重新编译安装mmcv-full。
python
# v2.28.1 版本的mmdet
pip uninstall mmcv-full==1.7.0
# 重新安装编译
MMCV_WITH_OPS=1 pip install mmcv-full==1.7.0
此类问题尤其出现在离线安装预编译版本。另外,mmcv-full 的安装依赖于yapf,其版本不能过高,一般0.40.1最为稳妥。
python
pip install yapf==0.40.1
mmcv-full重新编译后,对mmcls、mmdeploy没有影响,这些不需要重新安装。