MASKRCNN+3090显卡
原来的配置是torch171+cu110,CUDA11.0,2080显卡
换到3090显卡,代码不能跑,报错:RuntimeError: CUDA error: no kernel image is available for execution on the ...
换到11.1的cuda
1. 重新安装torch版本为180+cu111
2. 从nvidia官网https://developer.nvidia.com/cuda-11.1.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=2004&target_type=runfilelocal下载11.1的CUDA。选runfile。进里面安装流程时不要选择安装驱动。
3. sudo gedit ~/.bashrc 更新下面三项为
export CUDA_HOME=/usr/local/cuda-11.1/
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64
export PATH=$PATH:/usr/local/cuda-11.1/bin
SAVE之后 source ~/.bashrc
4. 重新编译apex,cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
注意看每项编译消息的提示:[9/11] /usr/local/cuda-11.1/bin/nvcc ,注意nvcc的路径是在cuda-11.1而不是旧的11.0
5. 重新编译maskrcnn,cd maskrcnn
python setup.py build develop
OK
推理速度,3090大概比3080快25%
最后上述环境和重新编译后的apex和maskrcnn依然可以在2080上跑
++++++++++++++++++++++++++++++++++++++++++++++++++
以上均在推理环境测试过,但是到了训练阶段报错:RuntimeError: radix_sort: failed on 1st step: cudaErrorInvalidDevice: invalid device ordinal
这个帖子说的很清楚:https://blog.csdn.net/qq_55068938/article/details/121270986
于是更换到torch版本为190+cu111版本的torch
由于cuda依然是111,所以不用重新编译apex
重新编译maskrcnn即可。这里有torch的版本高于1.8,会报ImportError: cannot import name 'container_abcs' from 'torch._six'
按照https://blog.csdn.net/dou3516/article/details/121283437 简单修改即可。并且经过以上修改后,依然可以在2080显卡上运行。
简单说3090显卡应配置torch为190以上版本