转载请注明:

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

经过这些步骤后,问题终于得到解决。

转载于:https://www.cnblogs.com/luruiyuan/p/10720581.html

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

  1. cuda多版本管理和分类、运行时cuda、驱动cuda

    简单的信息查看和调试命令 运行时只会采用虚拟环境里面的cuda运行时版本,所以不用显示切换cuda版本,只要支持即可. 查看cuda版本 ls -l /usr/local | grep cuda 这里 ...

  2. tomcat之一:指定tomcat运行时JDK版本

    tomcat作为日常开发的web应用服务器,给开发测试带来了很多便利,tomcat的运行依赖JDK的支持,在安装JDK时经常会配置环境变量:JAVA_HOME.CLASSPAT,且需要添加path变量 ...

  3. 安装GPU版本的pytorch(解决pytorch安装时默认安装CPU版本的问题)保姆级教程

    1.安装anaconda anaconda官网:www.anaconda.com 2.修改下载源为清华源 由于pytorch的服务器在国外,直连下载的话很慢,所以选用清华镜像源下载 # 添加清华镜像 ...

  4. 交叉编译指定运行时库路径_运行时vs编译时类路径

    交叉编译指定运行时库路径 这确实应该是一个简单的区别,但是我一直在回答有关Stackoverflow的许多类似问题,并且经常有人误解此事. 那么,什么是类路径? 应用程序所需的一组所有类(以及带有类的 ...

  5. Windows Java JavaFX IntelliJ IDEA 开发环境搭建 创建工程 编译运行 打包分发 自定义运行时

    博文目录 文章目录 本文说明 JavaFX 简单说明 JavaFX 版本说明 JavaFX 与 JDK 的关系 JavaFX 与 JDK Modular (JDK 9 模块化系统) JavaFX 模块 ...

  6. 通过设置PYTORCH_CUDA_ALLOC_CONF中的max_split_size_mb解决Pytorch的显存碎片化导致的CUDA:Out Of Memory问题

    问题的出现 最近在基友的带动下开始投身ai绘画的大潮,于是本地部署了stable diffusion web ui,利用手上的24G显存开始了愉快的跑高分辨率图片之旅.然而某天在用inpaint功能修 ...

  7. 解决caffe编译时//usr/lib/x86_64-linux-gnu/libSM.so.6: undefined reference to `uuid_unparse_lower@UUI

    我在编译安装RefineDet的caffe版遇到//usr/lib/x86_64-linux-gnu/libSM.so.6: undefined reference to `uuid_unparse_ ...

  8. 解决vs2013编译时scanf报错的方法

    前言 在使用VS2013时可能会遇到scanf函数报错的问题,这里提供一种解决方法 步骤 1.找到VS2013的安装路径,找到此界面,打开VC文件夹 2.打开下图中的文件夹 3.下载一个Notepad ...

  9. 解决 Debug编译时,警告:warning LNK4099: 未找到 PDB“vc90.pdb”

    警告:warning LNK4099: 未找到 PDB"vc90.pdb" 当多个Project是分开编译的,主项目和子项目的pdb文件名相同(默认都是vc90.pdb或vc100 ...

最新文章

  1. Google Brain大牛Jeff dean视频
  2. r语言绘制精美pcoa图_如何绘制精美的PCoA图形?
  3. Shell脚本的调试技术
  4. Arduino 各种模块篇 DHT11 温度湿度 数字模块 单总线
  5. oracle两个date相减_从 Oracle 到 PostgreSQL:从 Uptime 到数据库实例运行时间
  6. 带有Angular 11前端的ASP.NET Core微服务
  7. 日本研发投篮机器人,隔着半个球场都能百发百中,虐翻人类职业球员
  8. GithubPage自定义腾讯404界面
  9. 多片段时序数据建模预测实践
  10. mysql2000清除挂起工具,安装SQL提示挂起操作解决方法
  11. 毕业季:我和未来有个对话
  12. python读书笔记2000_python高级编程读书笔记(一)
  13. 有了AI智能绘画,我也可以成为绘画大师——全球最大规模中文跨模态生成模型ERNIE-ViLG
  14. 015.路径总和 路径总和II
  15. WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web appli
  16. iphone计算机历史信息,“领先业界5年!” 苹果iPhone历史回顾
  17. 【UE5 水体系统】
  18. 华为为什么和中兴竞争,水火不容,势不两立?
  19. 2019-06-17问答系统项目落地调研
  20. 5.30 USB接口的定义 (10分)

热门文章

  1. 以假乱真,大学生用 GPT-3 生成伪文章成功骗过众人
  2. AHB总线技能提升版
  3. [转]Eureka常用配置
  4. 3. 什么是计算机的性能?
  5. 不同的总线结构对计算机性能影响,总线结构对计算机性能的影响
  6. *使用C#创建控制台应用程序的基本步骤
  7. [答疑]门诊挂号分析序列图
  8. 基于Python的人脸表情管理系统设计与实现
  9. linux美国华盛顿时间,centos系统时间与硬件时间不一致
  10. 论周星驰电影及爱与死之关系