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.mfbz.cn/a/780551.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何监控和分析 PostgreSQL 中的查询执行计划?

文章目录 一、为什么监控和分析查询执行计划很重要二、PostgreSQL 中用于获取查询执行计划的方法三、理解查询执行计划的关键元素四、通过示例分析查询执行计划五、优化查询执行计划的常见策略六、使用工具辅助分析七、结合实际案例的详细分析八、总结 在 PostgreSQL 数据库中&…

STM32基础篇:引脚 × 复用 × 重映射

特殊引脚与普通引脚 特殊引脚 特殊功能引脚:"迫于生活压力"被特化的引脚,即为了满足芯片运行的基本条件。 以STM32F103C8T6型号为例,其特殊功能引脚(11个)(VddVss)*3多组供电接口VDDAVSSA(A表示Analog&…

Spring IOC基于XML和注解管理Bean

IoC 是 Inversion of Control 的简写,译为“ 控制反转 ”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出 松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Java 对象…

前端使用Threejs加载机械臂并控制机械臂跳舞

1. 前言 在我的第一篇博客中,大致讲解了如何使用threejs导入机械臂模型,以及如何让机械臂模型动起来的案例,可以看一下之前的博客前端使用Threejs控制机械臂模型运动 本篇博客主要讲解的是在原来的基础上添加GSAP动画库的应用,可以通过动画,来让机械臂进行指定轨迹位姿的运动…

Java 使用sql查询mongodb

在现代应用开发中,关系型数据库和NoSQL数据库各有千秋。MongoDB作为一种流行的NoSQL数据库,以其灵活的文档模型和强大的扩展能力,受到广泛欢迎。然而,有时开发者可能更熟悉SQL查询语法,或者需要在现有系统中复用SQL查询…

STM32——Modbus协议

一、Modbus协议简介: 1.modbus介绍: Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域…

代码随想录训练第十一天|二叉树基础理论、二叉树递归遍历、二叉树迭代遍历、二叉树统一迭代法、LeetCode102.二叉树层序遍历

文章目录 二叉树理论基础二叉树种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树 二叉树存储方式二叉树遍历方式二叉树的定义总结 二叉树的递归遍历思路前序遍历后序遍历中序遍历 二叉树的迭代遍历思路前序遍历(迭代法)中序遍历(迭代法&#…

STM32-Unix时间戳和BKP备份寄存器以及RTC实时时钟

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. Unix时间戳1.1 Unix时间戳简介1.2 UTC/GMT1.3 时间戳转换 2. BKP备份寄存器2.1 BKP简介2.2 BKP基本结构2.3 BKP库函数 3. RTC实时时钟3.1 RTC简介3.2 RTC框图3.3 RTC基本结构3.4 硬件电路3.5 RTC操作注意事项3.6 R…

elementui中日期/时间的禁用处理,使用传值的方式

项目中,经常会用到 在一个学年或者一个学期或者某一个时间段需要做的某件事情,则我们需要在创建这个事件的时候,需要设置一定的时间周期,那这个时间周期就需要给一定的限制处理,避免用户的误操作,优化用户体验 如下:需求为,在选择学年后,学期的设置需要在学年中,且结束时间大…

C#反射基本应用

1、反射 反射是.NET Framework的一个特性,它允许在运行时获取类型的信息以及动态创建对象,调用方法,以及访问字段和属性。 2、代码 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy…

快速搭建发卡独立站(完全免费)

本文介绍如何使用开源项目,零成本,无需服务器的方式搭建一套自己的数字商品/发卡独立站,不需要任何开发能力,即便是小白用户也能搭建。 感兴趣可直接查看开源项目地址👉 https://github.com/iDataRiver/theme-basic …

【全面介绍下如何使用Zoom视频会议软件!】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

C语言_数据的存储

数据类型介绍 1. 整形家族 //字符存储的时候,存储的是ASCII值,是整型 //char 默认是unsigned char还是signed char标准没有规定,其他类型都默认是signed char,unsigned char,signed char short,unsigned s…

Fast R-CNN(论文阅读)

论文名:Fast R-CNN 论文作者:Ross Girshick 期刊/会议名:ICCV 2015 发表时间:2015-9 ​论文地址:https://arxiv.org/pdf/1504.08083 源码:https://github.com/rbgirshick/fast-rcnn 摘要 这篇论文提出了一…

Mobile ALOHA: 你需不需要一个能做家务的具身智能机器人

相信做机器人的朋友最近一段时间一定被斯坦福华人团队这个Mobile ALOHA的工作深深所震撼,这个工作研究了一个能做饭,收拾衣服,打扫卫生的服务机器人,完成了传统机器人所不能完成的诸多任务,向大家展示了服务机器人的美…

建投数据入选“2024年中国最佳信创企业管理软件厂商”

近日,建投数据凭借国产化自主知识产权、完备的信创资质及信创软硬件环境全栈适配能力,入选第一新声联合天眼查发布的“2024年中国最佳信创厂商系列榜单”细分行业榜之“最佳信创企业管理软件厂商”。 本次最佳信创厂商系列榜单评选,包括综合榜…

阶段三:项目开发---搭建项目前后端系统基础架构:QA:可能遇到的问题及解决方案

任务实现 常见问题1:文件监视程序的系统限制。 1、错误提示:如果在Vue项目中,使用【 npm run serve】运行kongguan_web项目时报以下错误: 2、产生原因:文件监视程序的系统产生了限制,达到了默认的上限&am…

spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter

第1坑:配置第三方仓库不生效, 提示在阿里云仓库没有找到 spring-ai-openai-spring-boot-starter 第2坑:升级jdk17后,springboot项目启动报错 Internal error (java.lang.reflect.InaccessibleObjectException): Unable to make pr…

1.Python学习笔记

一、环境配置 1.Python解释器 把程序员用编程语言编写的程序,翻译成计算机可以执行的机器语言 安装: 双击Python3.7.0-选择自定义安装【Customize installation】-勾选配置环境变量 如果没有勾选配置环境变量,输入python就会提示找不到命令…

Codeforces Round 955 E. Number of k-good subarrays【分治、记忆化】

E. Number of k-good subarrays 题意 定义 b i t ( x ) bit(x) bit(x) 为 x x x 的二进制表示下 1 1 1 的数量 一个数组的子段被称为 k − g o o d k-good k−good 的当且仅当:对于这个子段内的每个数 x x x,都有 b i t ( x ) ≤ k bit(x) \leq k…