近期在医学图像分割验证模型性能工作中,需要安装mmcv,但是有报错
ImportError: /DATA/home/zyw/anaconda3/envs/ljh/lib/python3.9/site-packages/mmcv/_ext.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZN2at4_ops4view4callERKNS_6TensorEN3c108ArrayRefIlEE
中间过程中由于一开始安装的mmcv版本不同,这里报错无法识别的符号也不一样。
undefined symbol: _ZN2at4_ops4view4callERKNS_6TensorEN3c108ArrayRefIlEE
在网上找了很多可能解决问题的方法,但是也没有顺利解决,同时也遇见
AssertionError: MMCV==2.1.0 is used but incompatible. Please install mmcv>=[1, 1, 4], <=[1, 3, 0].
这类报错。
这类问题可能说明mmcv的版本和已经安装的cuda以及torch版本不兼容,总归来说,如果碰到上述的两种问题,可以尝试以下面的方式来解决。
首先使用以下命令先把自己下载过的mmcv卸载
pip uninstall mmcv
首先查看自己的CUDA和torch版本
python -c 'import torch;print(torch.__version__);print(torch.version.cuda)'
比如我的版本是
说明我的torch是1.8.0,CUDA版本是11.1
这里你可以先尝试用
https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
/cu111/torch1.8.0/
按照你的这两个版本号修改链接查看
可以看到符合CUDA和torch版本的mmcv。
这里面有很多mmcv版本,但是不一定都会符合你的系统的需要如果下载的mmcv版本不正确可能会出现文章开头的不兼容问题。这时候再查看这类报错,可以看到系统要求
AssertionError: MMCV==2.1.0 is used but incompatible. Please install mmcv>=[1, 1, 4], <=[1, 3, 0].
mmcv>=[1, 1, 4], <=[1, 3, 0].我这里只有mmcv-full-1.3.0符合要求,可以直接运行脚本下载
pip install mmcv-full==1.3.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
/cu111/torch1.8.0/文章来源:https://www.toymoban.com/news/detail-859572.html
这里的111和1.8.0按照你的实际情况修改,找到符合你系统的mmcv版本源,查看都有什么版本的mmcv根据系统要求再修改这条命令中的mmcv-full==1.3.0,我这里是mmcv-full==1.3.0而不是mmcv==1.3.0是因为版本源中直接用mmcv=x.x.x的只有2.0.0版本以上的,但是都不影响mmcv的使用。文章来源地址https://www.toymoban.com/news/detail-859572.html
到了这里,关于关于使用mmcv时解决ImportError: /xx/mmcv/_ext.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZN2at4**的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!