1. 程式人生 > >如何解決pytorch 編譯時CUDA版本與運行時CUDA版本不對應

如何解決pytorch 編譯時CUDA版本與運行時CUDA版本不對應

cti exp 因此 conf pip uninstall 保持 font tle

轉載請註明:

仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/

如何解決pytorch 編譯時CUDA版本與運行時CUDA版本不對應

如果pytorch的編譯時CUDA版本和運行時CUDA版本不一致時,由於不同的 nvcc 編譯器會生成不同的動態函數代碼,由此會導致自己編寫的 CUDA 函數無法正確運行。

常見的錯誤有:

undefined symbol: __cudaRegisterFatBinaryEnd (運行時為CUDA10.1,編譯時CUDA版本<10.1)

undefined symbol: __cudaPopCallConfiguration (運行時為CUDA10.0,編譯時CUDA<10.0)

由此思路有2個:

1. 重新編譯 pytorch 使得編譯時CUDA能夠與運行時CUDA保持一致

2. 重新安裝CUDA使得其與pytorch編譯的版本一致。

服務器涉及多用戶,因此采用了方案一避免引入其他問題:

具體的細節可以見我再github的討論:issue

重新編譯安裝pytorch的腳本整理如下:

pip uninstall pytorch #  conda uninstall pytorch, if you use conda
nvcc -V # 查看 nvcc 版本

sudo rm -f /usr/local/cuda # optional, only if
you already have this symlink sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda # 將如下路徑加入環境變量,如~/.bashrc export CUDA_HOME=/usr/local/cuda export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64" export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda/lib64" source ~/.bashrc # 確保路徑被加載 # 編譯並安裝 pytorch conda
install numpy pyyaml mkl=2019.3 mkl-include setuptools cmake cffi typing conda install -c pytorch magma-cuda100 # optional step # clone the pytorch source code git clone --recursive https://github.com/pytorch/pytorch cd pytorch make clean # make clean is needed in my case export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} sudo python setup.py install # sudo is needed in my case.

經過這些步驟後,問題終於得到解決。

如何解決pytorch 編譯時CUDA版本與運行時CUDA版本不對應