zoukankan      html  css  js  c++  java
  • undefined symbol: __cudaRegisterFatBinaryEnd CUDA编译运行版本不匹配解决

    如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应

    在跑FPN模型时,发现本机是CUDA10.1,而pytoch==0.4.0,最高支持9.0,故安装CUDA9.0,用cuda-9.0的软连接代替cuda10.1来完成cuda版本的切换(不需要搞cudnn)

    替换称cuda9.0后,重新make.sh,便解决了undefined symbol: __cudaRegisterFatBinaryEnd。一下是详细分析

    如果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.

    对于方案二、新装CUDA9.0 后,编译执行即可

    参考:

    https://www.cnblogs.com/luruiyuan/p/10720581.html

  • 相关阅读:
    刷题-力扣-541. 反转字符串 II
    刷题-力扣-515. 在每个树行中找最大值
    刷题-力扣-513. 找树左下角的值
    刷题-力扣-404. 左叶子之和
    刷题-力扣-257. 二叉树的所有路径
    刷题-力扣-226. 翻转二叉树
    刷题-力扣-236. 二叉树的最近公共祖先
    刷题-力扣-235. 二叉搜索树的最近公共祖先
    刷题-力扣-145. 二叉树的后序遍历
    扛把子组2018092609-2 选题 Scrum立会报告+燃尽图 06
  • 原文地址:https://www.cnblogs.com/wind-chaser/p/12611503.html
Copyright © 2011-2022 走看看