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.rhkb.cn/news/370908.html

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

相关文章

计算机如何存储浮点数

浮点数组成 在计算机中浮点数通常由三部分组成:符号位、指数位、尾数位。IEEE-754中32位浮点数如下: 上图32bit浮点数包含1bit的符号位,8比特的指数位和23bit的尾数位。对于一个常规浮点数,我们来看看它是如何存储和计算的。这里…

数据库系统原理 | 查询作业2

整理自博主本科《数据库系统原理》专业课自己完成的实验课查询作业,以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方,欢迎各位斧正。 专业课本: ​ ​ ———— 本次实验使用到的图形化工具:Heidi…

CTF常用sql注入(一)联合注入和宽字节

0x01 前言 给自己总结一下sql注入的常用姿势吧,记录一下学习 0x02 联合 联合注入的关键词是union SQL的union联合注入原理是联合两个表进行注入攻击,使用union select关键词来进行联合查询。 那么为什么我们在题目中一般是只写一个呢 因为 $sql &quo…

SwiftData 模型对象的多个实例在 SwiftUI 中不能及时同步的解决

概览 我们已经知道,用 CoreData 在背后默默支持的 SwiftUI 视图在使用 @FetchRequest 来查询托管对象集合时,若查询结果中的托管对象在别处被改变将不会在 FetchedResults 中得到及时的刷新。 那么这一“囧境”在 SwiftData 里是否也会“卷土重来”呢?空说无益,就让我们在…

redis 如何使用 scan, go语言

建议用方案乙 文章目录 场景方案方案甲方案乙 拓展 场景 redis 中存在大量 key。 其中有一部分是用户登陆的 session_id, 结构是 : session_id:1session_id:2session_id:3需求: 有多少用户在线 方案 方案甲 keys session_id:*这种方式简…

FlinkSQL 开发经验分享

作者:汤包 最近做了几个实时数据开发需求,也不可避免地在使用 Flink 的过程中遇到了一些问题,比如数据倾斜导致的反压、interval join、开窗导致的水位线失效等问题,通过思考并解决这些问题,加深了我对 Flink 原理与机…

华为云简介

前言 华为云是华为的云服务品牌,将华为30多年在ICT领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,赋能应用、使能数据、做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心…

鸿蒙应用笔记

安装就跳过了,一直点点就可以了 配置跳过,就自动下了点东西。 鸿蒙那个下载要12g个内存,大的有点吓人。 里面跟idea没区别 模拟器或者真机运行 真机要鸿蒙4.0,就可以实机调试 直接在手机里面跑,这个牛逼&#xf…

深度学习与CV入门

文章目录 前言历史 前言 历史 tensorflow可以安装Tensorboard第三方库用于展示效果 TensorFlow工作流程:p6-4:20 使用tf.data加载数据。使用tf.data实例化读取训练数据和测试数据模型的建立与调试:使用动态图模式Eager Execution和著名的神经网络高层API框架Ker…

[笔记] 卷积 - 02 滤波器在时域的等效形式

1.讨论 这里主要对时域和频域的卷积运算的特征做了讨论,特别是狄拉克函数的物理意义。 关于狄拉克函数,参考这个帖子:https://zhuanlan.zhihu.com/p/345809392 1.狄拉克函数提到的好函数的基本特征是能够快速衰减,对吧&#xf…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01—短信/邮件/异常/MD5

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01 环境搭建验证码倒计时短信服务邮件服务验证码短信形式:邮件形式: 异常机制MD5参考 环境搭建 C:\Windows\System32\drivers\etc\hosts 192.168.…

HackTheBox----Editorial

Editorial 测试过程 1 信息收集 NMAP端口扫描 nmap -sC -sV 10.10.11.20服务器开启了 22、80 端口 80 端口测试 服务器只开启了 22 和 80 端口,先从 80 端口开始进行测试 echo "10.10.11.20 editorial.htb" | sudo tee -a /etc/hostspublish with us…

Scrapy框架的基本使用教程

1、创建scrapy项目 首先在自己的跟目录文件下执行命令: PS D:\BCprogram\python_pro\bigdata> scrapy startproject theridion_grallatorscrapy startproject 项目名 具体执行操作如下:1、创建项目目录:Scrapy会在当前工作目录下创建一…

001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数

函数指针是一种特殊的指针 001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数 文章目录 函数指针是一种特殊的指针前言总结 前言 这是ai回答的标准答案 下面我们…

bash条件判断基础adsawq1`1nn

判断的作用 判断后续操作的提前条件是否满足如果满足执行一种命令不满足则执行另一种指令 条件测试类型: 整型测试字符测试文字测试 整数测试:比较两个整数谁大谁小,是否相等; 二元测试: num1 操作符 num2 -eq: 等于…

Alt与Tab切换窗口时将Edge多个标签页作为一个整体参与切换的方法

本文介绍在Windows电脑中,使用Alt与Tab切换窗口时,将Edge浏览器作为一个整体参与切换,而不是其中若干个页面参与切换的方法。 最近,需要将主要使用的浏览器由原本的Chrome换为Edge;但是,在更换后发现&#…

基于RK3588的8路摄像头实时全景拼接

基于RK3588的8路摄像头实时全景拼接 输入:2路csi转8路mpi的ahd摄像头,分辨率1920 * 1080 8路拼接结果: 6路拼接结果: UI界面: UI节目设计原理

Lua、AB包热更新总结

1.AB包热更新 (1)AB包是一种特定的压缩文件,可以放模型贴图音效等等 (2)Resources目录下打包时只读 无法修改;而AB包存储的位置是自定义的,能够动态更新,同时可以决定资源包初始的大…

huggingface笔记:gpt2

0 使用的tips GPT-2是一个具有绝对位置嵌入的模型,因此通常建议在输入的右侧而不是左侧填充GPT-2是通过因果语言建模(CLM)目标进行训练的,因此在预测序列中的下一个标记方面非常强大 利用这一特性,GPT-2可以生成语法连…

人工智能时代打工人摸鱼秘籍(1)- 为啥说大模型像人?

人工智能以势不可挡的方式席卷全球。 所有公司,都在削尖脑袋想,如何在在产品、营销、运营、服务和管理上加持大人工智能的能力。 公司在卷生卷死的时候,有一批人已经偷偷在用大模型提(摸)效(鱼)…