ubuntu16.04 安装多版本cuda(原10.0,新安装10.1),实现任意切换

2023-10-29

@[TOC](ubuntu16.04 安装多版本cuda(原10.0,新安装10.1),实现任意切换)


前言

需求:单位需要使用yolo-v5训练模型,可所需的pytorch对cuda的依赖版本较高,而仅仅安装单个高版本的cuda又会与原先的项目产生矛盾,所以纠结一下,研究了安装双cuda步骤,记录一下


一、下载cuda地址:

cuda官方下载地址: https://developer.nvidia.com/cuda-toolkit-archive
cudnn官方下载地址:https://developer.nvidia.com/rdp/cudnn-download
我使用的cuda版本与cudnn版本如下所示:
在这里插入图片描述
下图是英伟达显卡驱动与cuda的版本对照:
在这里插入图片描述
英伟达显卡驱动需要由较高cuda版本对应的显卡驱动来确定;更新英伟达显卡驱动可以在安装cuda时选择安装,但是本人多次尝试都失败告终,最后使用ubuntu的自带的更新功能成功,如下界面:
在这里插入图片描述
在这里插入图片描述

二、安装cuda10.1

sudo chmod +x cuda_10.1.105_418.39_linux.run  # 为 cuda添加可执行权限
sudo ./cuda_10.1.105_418.39_linux.run  # 安装

稍等片刻后会出现如下安装提示:
在这里插入图片描述
在这里插入图片描述
3、如果之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选n,因为指定该链接后会将cuda指向这个新的版本
在这里插入图片描述
4. cuda环境设置:

sudo gedit ~/.bashrc

打开后在末尾添加以下语句

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

以上的路径都是指向/usr/local/cuda 软连接,并没有写死指向某一个cuda版本,后面切换时不用改路径了,只改软连接指向就可以。
保存关闭后:

source ~/.bashrc

三、cuda版本切换

切换/usr/local/目录

sudo rm -rf cuda             #删除之前的软链接(原本指向10.0)
sudo ln -s /usr/local/cuda-10.1 /usr/local/cuda  #生成新的软链接,指向10.1

在/usr/local/ 目录下,以下四行命令均可以查看当前cuda软链接指向的哪个cuda版本

stat cuda  # stat /usr/local/cuda 
cat  /usr/local/cuda/version.txt
nvcc --version
nvcc -V 
ls -al  # 在/usr/local目录下查看

在这里插入图片描述

当需要cuda10.0时,只需要执行以下语句,将软连接指向cuda10.0即可:

sudo rm -rf cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda

补充问题:

1、nvcc -V显示有误

已经切换到了cuda10.1,用stat cuda查看正常,但用nvcc -V 查看的时候仍然显示10.0版本。可能原因是nvcc默认是你以前deb安装时候其他版本的,所以就算操作按上面一步步来,nvcc –V结果还是没变。所以我们可以找到nvcc位置,然后创建/usr/local/cuda/bin/nvcc软链接到原先nvcc位置,操作如下:

which nvcc  # 找到nvcc位置,我的在/usr/local/cuda-10.0/bin/nvcc
sudo ln -s /usr/local/cuda/bin/nvcc /usr/local/cuda-10.0/bin/nvcc # 创建软链接链接到当前cuda的nvcc
nvcc -V # 显示当前cuda版本

在创建软连接时可能还会遇到这个问题,显示ln: 无法创建符号链接’/usr/local/cuda-10.0/bin/nvcc’: 文件已存在
此时,可以把cuda10.0/bin下的nvcc备份一下,然后删除重新创建软连接。

sudo rm -f nvcc  # 在/usr/local/cuda-10.0/bin下删除

2. nvcc -V找不到

nvcc -V  # 出现以下提示

Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit

可能是cuda 装好了,但是 nvcc 所在路径没有加入系统路径中,所以系统找不到 nvcc 。如果cuda 安装好了, nvcc 程序应该在路径 /usr/local/cuda/bin 中,可以直接在该路径下执行:

./nvcc -V

3、卸载掉cuda

1、如果安装的cuda是10.0(使用runfile文件包安装),则使用以下方法卸载

sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl

卸载之后,如有一些残留的文件夹,之前安装的是CUDA 10.0。可以一并删除:

sudo rm -rf /usr/local/cuda-10.0/

2、如果安装的cuda是10.1(使用runfile文件包安装),则使用以下方法卸载

cd /usr/local/cuda/bin
sudo ./cuda-uninstaller

3、如果cuda是由deb包安装,则执行以下指令

sudo apt-get remove cuda 
sudo apt autoremove

四、安装cudnn

下载好后直接解压,得到文件夹 cuda,然后复制lib64和include文件夹到usr/local/cuda-10.1

sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h /usr/local/cuda-10.1/lib64/libcudnn*

确认是否成功安装:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如下所示:
在这里插入图片描述

补充:在安装完毕后,安装tensorflow后,终端可以正常导入tensorflow包,但是在pycharm导入tensorflow可能会出现以下报错:

ImportError: libcublas.so.10.0:cannot open shared object file:No such file or director

分析原因:
pycharm无法继承.bashrc里面的环境变量,因此才会出现这种问题
解决方法:
打开pycharm,进行如下修改:
Run------>Edit Configuration
在这里插入图片描述
即:

PYTHONUNBUFFERED=1;LD_LIBRARY_PATH=/usr/local/cuda/lib64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu16.04 安装多版本cuda(原10.0,新安装10.1),实现任意切换 的相关文章

随机推荐

  • springboot整合七牛云对象存储

    目录 一 测试 二 整合 一 测试 注册七牛云账号 并进行邮箱绑定和实名认证 七牛云每个月送10G完全够我们开发 创建一个空间 存储区域哪里离你近选哪里 访问控制一定要公开 创建完成后 后期上传的静态资源 可以根据域名 文件名直接访问 自定
  • Java中正则表达式的使用

    Java中正则表达式的使用 在Java中 我们为了查找某个给定字符串中是否有需要查找的某个字符或者子字串 或者对字符串进行分割 或者对字符串一些字符进行替换 删除 一般会通过if else for 的配合使用来实现这些功能 如下所示 Jav
  • MMdetection之train_detector 源码解析

    目录 一 构建 data loaders mmdet datasets builder py 2 构建分布式处理对象 3 构建优化器 4 创建 EpochBasedRunner 并进行训练 一 构建 data loaders mmdet d
  • react hook+Typescript+一个ts项目

    说到Hook 少不了react16的新生命周期 https segmentfault com a 1190000018413163 关于getDerivedStateFromProps钩子 怎么在里面进行异步 判断是由state还是prop
  • 100天精通Python(可视化篇)——第89天:Bokeh库绘图可视化基础入门(参数说明+案例实战)

    文章目录 专栏导读 一 Bokeh是什么 二 安装与导入 三 Bokeh接口介绍 四 创建图表 五 添加自定义渲染器 切换主题 添加图例 图例位置 图例方向 图例背景和边界 图例文本的外观 行列布局 网格布局 书籍推荐 包邮送书5本 专栏导
  • Spring Cloud Nacos

    1 Spring Cloud Alibaba的功能 1 流控制和服务降级 支持WebServlet WebFlux OpenFeign RestTemplate Dubbo访问限制和降级流的功能 它可以在运行时通过控制台实时修改限制和降级流
  • Linux 安装 vmware workstation

    1 下载vmware workstation 下载地址 https my vmware com cn group vmware info slug desktop end user computing vmware workstation
  • iOS Xcode 7.2 以及各种版本Xcode工具下载地址

    https developer apple com download more 这里面有所有版本的Xcode dmg文件供大家下载
  • Anaconda学习

    Anaconda conda 创建 激活 退出 删除虚拟环境 Anaconda超详细教程2023 7 10 windows 网络连接错误 1 首先学习anaconda是什么 Anaconda 官方网站 就是可以便捷获取包且对包能够进行管理
  • 人人都是产品经理?

    产品经理顾名思义就是产品 经理 那么只要搞懂产品是什么 经理又什么什么 就明白了产品经理是什么 产品是什么 产品是满足需求的载体 能被市场 人们使用和消费 并能满足人们某种需求 创造价值 的任何东西 包括有形的实物和无形的服务 同时 产品也
  • 数据结构: 线性表(带头双向循环链表实现)

    文章目录 1 链表的分类 2 带头双向循环链表 2 1 带头双向循环链表的定义 2 2 接口函数 3 接口函数的实现 3 1 创建并返回链表的头结点 ListCreate 3 2 双向链表打印 ListPrint 3 3 双向链表尾插 Li
  • 不用nvm切换node版本,用volta管理node版本

    1 什么是volta 2 volta是一个node js的版本管理工具 你的电脑上安装了很多个node版本 volta可以让你在不同的项目中使用不同版本的node js 并且可以切换node js版本 3 volta是一个安装包 安装在电脑
  • python日志的使用

    一 日志的使用 import logging 创建一个记录器对象 logger logging getLogger 设置日志级别 logger setLevel logging INFO 设置日志的保存路径 logfile path dat
  • HDS USP存储培训简明笔记

    名词解释 DKU 扩展柜 DKC 控制柜 DKA 后端端口 CHA 前端端口 CSW 交换卡 SVP 内置服务PC 另一个含义是服务程序 与Storage Navigator功能一致 CM Cache Memory数据内存 SM Share
  • 如何提交代码到github

    要提交代码到GitHub 可以按照以下步骤进行操作 首先 确保你已经在本地对代码做了相应的修改和更改 打开命令行终端或者使用Git图形用户界面 如GitHub Desktop 导航到你的项目目录 可以使用命令查看修改情况 git statu
  • JDK8新特性详解Lambda、StreamAPI、Optional等

    JDK8学习笔记 学习视频地址 https www bilibili com video BV1k64y1R7sA 操作代码 https gitee com rederic study jdk8 git 一 JDK8新特性 1 Lambda
  • 会linux基本命令是脚本语言吗,shell脚本语言与linux命令的联系与区别

    使用linux肯定是要会使用命令的 就算提供有用户界面 绝大部分功能还是要通过命令行去操作的 而shell脚本语言也是运行在linux上的脚本语言 对于服务器运维人员也是几乎必须要掌握的 而shell脚本语言和linux命令有什么联系 有什
  • 毕设——代码5中Keras TensorFlow配置

    问题 pip安装成功两个包后 cmd窗口进行python的import包操作正常 返回到pycharm环境中仍然报错ModuleNotFoundError No module named sklearn datasets 解决办法 step
  • Python基础知识学习:从零到100

    Python基础知识学习 从零到100 基础知识 1 变量 2 控制流 条件语句 3 循环 迭代器 4 列表 集合 数组 数据结构 5 字典 键值数据结构 6 迭代 遍历数据结构 7 类和对象 8 Python 面向对象编程模式 开启 9
  • ubuntu16.04 安装多版本cuda(原10.0,新安装10.1),实现任意切换

    TOC ubuntu16 04 安装多版本cuda 原10 0 新安装10 1 实现任意切换 前言 需求 单位需要使用yolo v5训练模型 可所需的pytorch对cuda的依赖版本较高 而仅仅安装单个高版本的cuda又会与原先的项目产生