Ubuntu 20.04下多版本CUDA的安装与切换 超详细教程

目录

  • 前言
  • 一、安装 CUDA
    • 1.找到所需版本对应命令
    • 2.下载 .run 文件
    • 3.安装 CUDA
    • 4.配置环境变量
      • 4.1 写入环境变量
      • 4.2 软连接
    • 5.验证安装
  • 二、安装 cudnn
    • 1.下载 cudnn
    • 2.解压文件
    • 3.替换文件
    • 4.验证安装
  • 三、切换 CUDA 版本
    • 1.切换版本
    • 2.检查版本

前言

当我们复现代码时,总会需要不同版本的 CUDA 。此时,我们就需要安装多个版本的 CUDA ,并实现灵活切换。

本文将在已有 CUDA11.3 的 Ubuntu20.04 下,安装 CUDA11.8 。

已经存在的CUDA环境

一、安装 CUDA

1.找到所需版本对应命令

CUDA官方下载地址

1.1 找到对应版本
在这里插入图片描述
1.2 选择对应的操作系统
Linux -> x86_64 -> Ubuntu -> 20.04 -> runfile(local)
在这里插入图片描述
可以看到有两条命令,依次对应下载和安装。

在这里插入图片描述

2.下载 .run 文件

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

在这里插入图片描述

3.安装 CUDA

(1) 运行 .run 文件进行安装

sudo sh cuda_11.8.0_520.61.05_linux.run

在这里插入图片描述
(2) 方向下键↓,选中 “Continue” ,回车 “Enter” 确认
在这里插入图片描述
(3) 输入 accept,然后回车
在这里插入图片描述

(4) 使用方向下键↓,移动到 Driver 上,回车勾选掉 Driver
由于安装的多版本 CUDA ,安装第一个 CUDA 的时候已经安装过驱动,所以不需要再重复安装。
在这里插入图片描述
(5) 使用方向下键↓,移动到 Install 上,回车开始安装
在这里插入图片描述
(6) 之后一路默认,一直敲回车即可

出现如下图的提示即是安装成功
在这里插入图片描述

4.配置环境变量

4.1 写入环境变量

(1) 打开配置文件

sudo gedit ~/.bashrc

在这里插入图片描述

(2) 写入所需的环境变量

# CUDA enviroment variable
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

在这里插入图片描述

(3) 更新环境变量

source ~/.bashrc

4.2 软连接

(1) 进入 /usr/local 目录下

cd /usr/local

在这里插入图片描述
在这里插入图片描述

(2) 删除原有的软连接

sudo rm -rf cuda

在这里插入图片描述

(3) 新建软连接,将其连接到 CUDA11.8

sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda

在这里插入图片描述

5.验证安装

nvcc -V

可以看到 CUDA 版本已经更新为 11.8
在这里插入图片描述

二、安装 cudnn

1.下载 cudnn

CUDA官方网址
选择适合自己 CUDA 版本的 cuDNN 下载
在这里插入图片描述
在这里插入图片描述

2.解压文件

(1) 进入下载目录
(2) 解压 .xz

xz -d cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz

在这里插入图片描述

(3) 解压 .tar

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar

在这里插入图片描述

3.替换文件

(1) 切换超级用户

su

(2) 复制 lib 或 lib64 文件夹下的文件到 CUDA 安装位置的 lib64 文件夹下

cp lib/* /usr/local/cuda-11.8/lib64/

在这里插入图片描述

(3) 复制 include 文件夹下的全部文件到 CUDA 安装位置的 include 文件夹下

cp include/* /usr/local/cuda-11.8/include/

在这里插入图片描述

4.验证安装

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

出现下图提示即为安装成功
在这里插入图片描述

三、切换 CUDA 版本

1.切换版本

(1) 进入 /usr/local 目录下

cd /usr/local

在这里插入图片描述

(2) 删除软连接

sudo rm -rf cuda

在这里插入图片描述

(3) 新建软连接到想切换的版本

sudo ln -s /usr/local/cuda-11.3 /usr/local/cuda

在这里插入图片描述

2.检查版本

nvcc -V

可以看到版本已经切换成功
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入分析SSL/TLS服务器的证书(C/C++代码实现)

SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是网络安全领域的重要协议,它们在保护网络通信中发挥着至关重要的作用。这些协议通过加密和身份验证机制,确保数据在传输过程中的机密性和完整性…

初见:AntDB智能运维“三剑客“之ACC

前情回顾 在前两个章节中,我们介绍了 AntDB 智能运维"三剑客"的 ADC 和 MTK。 初见:AntDB智能运维"三剑客"之ADC 初见:AntDB智能运维"三剑客"之MTK 本文将继续介绍 AntDB 数据库智能运维平台 ACC。 AntDB 介绍…

minist数据集分类模型的训练

minist数据集训练 训练方法:利用pytorch来实现minist数据集的分类模型训练 训练模型如下图所示 模型代码: import torch from torch import nn from torch.nn import Flattenclass Net(nn.Module):def __init__(self):super().__init__()self.module …

ChatGPT对话:Scratch编程中一个单词,如balloon,每个字母行为一致,如何优化编程

【编者按】balloon 7个字母具有相同的行为,根据ChatGPT提供的方法,优化了代码,方便代码维护与复用。初学者可以使用7个字母精灵,复制代码到不同精灵,也能完成这个功能,但不是优化方法,也没有提高…

FairJob:促进在线广告系统公平性研究

在人工智能(AI)与人类动态的交汇处,既存在机遇也存在挑战,特别是在人工智能领域。尽管取得了进步,但根植于历史不平等中的持续偏见仍然渗透在我们的数据驱动系统中,这些偏见不仅延续了不公平现象&#xff0…

Centos新手问题——yum无法下载软件

起因:最近在学习centos7,在VM上成功安装后,用Secure进行远程登陆。然后准备下载一个C编译器,看网络上的教程,都是用yum来下载,于是我也输入了命令: yum -y install gcc* 本以为会自动下载&…

docker部署redis/mongodb/

一、redis 创建/root/redis/conf/redis.conf 全部执行命令如下 docker run -it -d --name redis -p 6379:6379 --net mynet --ip 172.18.0.9 -m 400m -v /root/redis/conf:/usr/local/etc/redis -e TXAsia/Shangehai redis redis-server /usr/local/etc/redis/redis.conf 部署…

C#——密封类详情

密封类 密封类是密封方法的扩展,用于确保某个类不会被继承。在C#中,你可以使用sealed关键字来声明一个密封类。 public sealed class SealedClass {// 类成员定义 } 如果使用密封类继承的话,程序会报错!!&#xff0…

01:spring

文章目录 一:常见面试题1:什么是Spring框架?1.1:spring官网中文1.2:spring官网英文 2:谈谈自己对于Spring IOC和AOP的理解2.1:IOCSpring Bean 的生命周期主要包括以下步骤: 2.2&…

解决微信读书和Apple Books导入epub电子书不显示图片的问题

title: 解决微信读书和Apple Books导入epub电子书不显示图片的问题 tags: 个人成长 categories:杂谈 最近找到一本很喜欢的书的电子版的epub版,发现无论是导入微信读书,还是Apple家的Books, 都无法正常显示图片。 于是我用calibre打开epub电子书&#x…

安卓虚拟位置修改

随着安卓系统的不断更新,确保软件和应用与最新系统版本的兼容性变得日益重要。本文档旨在指导用户如何在安卓14/15系统上使用特定的功能。 2. 系统兼容性更新 2.1 支持安卓14/15:更新了对安卓14/15版本的支持,确保了软件的兼容性。 2.2 路…

linux中可执行文件为什么不能拷贝覆盖

对于一个普通的文件,假如有两个文件,分别是file和file1,我们使用 cp file1 file的方式使用file1的内容来覆盖file的内容,这样是可以的。 但是对于可执行文件来说,当这个文件在执行的时候,是不能通过cp的方…

将 KNX 接入 Home Assistant 之四 功能测试

一:测试标准的KNX网关功能 测试软件识别是否正常 可以看到再ETS6和ETS5上都能正常识别 测试数据收发 可以正常发送数据 测试配置设备参数(下载配置) 可以看出,在ETS5上是可以正常下载参数的 但是 ETS6下载是失败的&#xff…

Pandas 学习笔记(四)--CSV文件

CSV文件 CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。 读取与写入 读取csv文件 i…

可视化作品集(08):能源电力领域

能源电力领域的可视化大屏,有着巨大的用武之地,不要小看它。 监控能源生产和消耗情况: 通过可视化大屏,可以实时监控能源生产和消耗情况,包括发电量、能源供应情况、能源消耗情况等,帮助管理者及时了解能…

C语言 | Leetcode C语言题解之第218题天际线问题

题目: 题解: struct pair {int first, second; };struct Heap {struct pair* heap;int heapSize;bool (*cmp)(struct pair*, struct pair*); };void init(struct Heap* obj, int n, bool (*cmp)(struct pair*, struct pair*)) {obj->heap malloc(si…

调制信号识别系列 (一):基准模型

调制信号识别系列 (一):基准模型 说明:本文包含对CNN和CNNLSTM基准模型的复现,模型架构参考下述两篇文章 文章目录 调制信号识别系列 (一):基准模型一、论文1、DL-PR: Generalized automatic modulation classification method b…

软件架构之操作系统

第 2 章操作系统 本章主要介绍操作系统的基本概念及其形成、发展历史和主要类型,并指出操作系统的5 大管理功能。掌握操作系统原理的关键在于深入理解“一个观点、两条线索”。一个观点是以资源管理的观点来定义操作系统;两条线索是指操作系统如何管理计…

【计算机毕业设计】020基于weixin小程序订餐系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

100359.统计X和Y频数相等的子矩阵数量

1.题目描述 给你一个二维字符矩阵 grid,其中 grid[i][j] 可能是 X、Y 或 .,返回满足以下条件的子矩阵数量: 包含 grid[0][0]X 和 Y 的频数相等。至少包含一个 X。 示例 1: 输入: grid [["X","Y",…