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

原文地址:https://www.cnblogs.com/wind-chaser/p/12611503.html

时间: 2024-08-05 14:13:05

undefined symbol: __cudaRegisterFatBinaryEnd CUDA编译运行版本不匹配解决的相关文章

Django模型迁移提示版本不匹配解决办法

Django迁移模型时提示django.core.exceptions.ImproperlyConfigured:mysqlclient 1.3.7 or newer is required; you have 0.9.3.错误解决办法 造成此错误提示是以为mysql服务器版本与Django内置的版本不一样造成的,可以通过修改源码的方式取消比对即可正常运行! 源码文件路径:你的虚拟环境目录下的lib目录下python工具包里面:比如的我python环境为dj_xm31,虚拟机位置在当前用户的.v

编译时出现莫名其妙的undefined symbol的可能原因

前言 公司里需要开发多个动态库链接在一起的程序,然而经常在一些地方出现莫名其妙的undefined symbol问题 解决方案 1.检查Makefile/CMakeList.txt,查看是否包含所有需要包含的文件/文件夹. 错误原因:有时候由于新添加了一个文件/文件夹,而该文件/文件夹又没有被Makefile/CMakeList.txt扫描到,这时候就会在实际运行时出现undefined symbol,原因是编译时找到了对应的头文件,却在链接时未找到需要的头文件. 2.查看对应函数在头文件和Cp

ssh升级以及ssh: symbol lookup error: ssh: undefined symbol: EVP_aes_128_ctr错误处理

1.解压安装openssl包:(不能卸载openssl,否则会影响系统的ssl加密库文件,除非你可以做两个软连接libcryto和libssl) # tar -zxvf openssl-1.0.1.tar.gz # cd openssl-1.0.1 #./config -fPIC threads shared # make # make test # make install # mv /usr/bin/openssl /usr/bin/openssl.OFF # mv /usr/include

win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)

win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)  用vs 2015打开 编译Release和Debug版本 看网上那个例子里面 工程里面有是三个文件夹 include(包含mxnet,dmlc,mshadow的include目录) lib(包含libmxnet.dll, libmxnet.lib,把用vs编译好的放过去) python(包含一个mxnet,setup.py, 以及buil

Cocos2d-x 3.X Qt MinGW版本编译运行

自Cocos2d-x 3.X引入了C++ 11特性,在Windows平台上的支持就仅限VS 2012,其实还可以尝试MinGW版本,GitHub上有MinGW版本的Qt Creator工程. 地址:https://github.com/sergey-shambir/cocos2d-x/tree/qtcreator           https://github.com/akof1314/cocos2d-x/tree/qtcreator Pull Request:https://github.c

超详细Windows版本编译运行React Native官方实例UIExplorer项目(多图慎入)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50661981 本文出自:[江清清的博客] (一)前言 特别说明:群里很多童鞋都在说想Windows系统官方实例,但是官方提供的文档以及网上的例子都是OS X版本.今天特意给大家更新一下Windows版本运行官方 实例(UIExporler)全过程.俗话说学习一样新东西的时候,例如这边我们要学React Native的组件使用,那么最好的学习资料就是官方提供的材料了,

fastDfs V5.02 升级到 V5.08版本后,启动报错:symbol lookup error: /usr/bin/fdfs_trackerd: undefined symbol: g_current_time

/libfastcommon-1.0.36 # ./make.sh cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o chain.o chain.c cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o shared_fu

psycopg2关于undefined symbol: lo_truncate64解决方法

今天,在centos6.5下安装psycopg2,利用Python连接PostgreSQL数据库的时候,出现了一个undefined symbol: lo_truncate6的错误: django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /mydev/pyweb/cancerdb/lib/python2.7/site-packages/psycopg2/_psycopg.so: undefined

链接libthrift.so出现带“__cxx11”的undefined symbol的问题解决

一.问题描述 项目中一个C++程序要读写hbase的数据,按thrift接口规范编写好代码,在windows平台该程序运行正常.但在移植到linux平台后,在编译链接时一直报undefined symbol错误,即使采用其它技术手段绕过这个错通过编译链接,运行时仍会出错. 经检查,出错是因为一个模块(lib_hbase_reader.so)中调用的三个接口与libthrift-0.10.0.so中提供的接口不一致引起的,使用ldd得到的信息为: $ldd -r libhbase_reader.s