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


轉載請注明:

 

仰望高端玩家的小清新 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.

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM