原來的配置是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以上版本