如何安装多版本CUDA?

在这篇文章中,我们不仅要安装好CUDA,还有安装多版本的CUDA

首先聊一个题外话:前几天在csdn上看到的一个话题”安装pytorch一定要去nvidia官网下载安装cuda和cudnn吗?“

我相信任何一个刚开始接触或者从事深度学习的炼丹者都会从安装cuda开始,现在网上随便一搜如何安装pytorch,蹦出来教程提及到的流程基本上都是先安装cuda,cudnn , 然后安装pytorch。但是现在完全没有必要,现在的pytorch都已经预构建了cuda以及cudnn,换言之,下载好了gpu版本的pytorch,pytorch默认用的都是自己附带的cuda。如果只是用pytorch训练、推理深度学习模型,完全没有必要再去额外安装完整版的cuda cudnn ,现在版本的pytorch都附带了不完整的cuda,这对于训练模型、模型推理等完全够用了,除非你触及到了cuda编程、cuda编译构建项目这个层面(国内深度学习从业者难有20%会触及到这个层面)此时才需要安装完整的英伟达cuda。因此对于刚开始接触或者从事深度学习的小白,特别是刚入门的学生党,基本上不会接触到这个层面,因此没有特别大的必要去英伟达官方下载安装完整版的cuda。直接下载Pytorch就可以直接使用了。

利用Pytorch等深度学习框架进行模型训练是”打怪升级“的第一阶段,今天我想谈一下,”打怪升级“的第二阶段:模型多环境推理部署和加速推理 的过程中 会遇到的一个实际问题:多版本CUDA

举一个典型的案例:生产环境下,我们要求项目具有低延迟、高吞吐,使用pytorch训练出来的原始模型往往满足不了这样的要求的,因此模型部署的时候不会采用pytorch训练出来的原始模型,在英伟达平台下,我们都会采用Tensorrt推理对项目进行深度加速,tensorrt加速也离不开CUDA,并且对cuda版本要求较为严格。假设项目A用的是Tensorrt10.x 需要CUDA12.X,项目B用的是Tensorrt 8.x,需要CUDA11.X。现在需要在本地测试一下两个项目,需要多版本CUDA怎么办?

所以如果可以灵活地在不同cuda版本间切换将是非常方便的。anaconda就可以实现这个功能。我们可以在conda创建的不同虚拟环境中安装不同的cuda和cudnn版本,以此来实现不同cuda版本间的切换。

一、通过Anaconda安装CUDA

我们可以通过anaconda安装CUDA。以cuda12.2为例,详细的安装步骤在nvidia官网也都有介绍CUDA Toolkit Documentation 12.2 (nvidia.com)

我这里直接给出简要步骤:

首先anaconda源更换为conda-forge,然后使用conda search命令可以查看可用的cuda版本

conda search cuda -c nvidia

我们可以直接通过下面的命令安装CUDA 

conda install cuda -c nvidia

但是上面的命令是安装最新版本CUDA。截止到24.06.27是CUDA12.5.0。一般我们安装时往往不是安装最新版本的,而是安装指定版本的,因此需要添加 -c nvidia/label/cuda-x 来指定具体的版本,例如我需要安装CUDA12.2。则使用下面的命令 

conda install cuda -c nvidia/label/cuda-12.2.0

例如,我在cuda12.2的anaconda虚拟环境下安装CUDA12.2 

安装好之后,在anaconda虚拟环境名为cuda12.2验证cuda版本,可以看到cuda版本号为12.2 

 由此,成功通过anaconda在虚拟环境中安装好了CUDA。如果还需要安装另外一个版本的CUDA,新建一个虚拟环境按照上面的步骤重复操作一次即可。由此实现了虚拟环境下多版本CUDA

 二、在Anaconda环境中通过pip安装CUDA

我们不仅可以使用anaconda安装CUDA,还可以使用pip安装CUDA。以CUDA11.6为例,详细的安装步骤在nvidia都有介绍

Installation Guide Linux :: CUDA Toolkit Documentation (nvidia.com)

 下面以pip安装cuda11.6为例,我们需要安装下面的wheel包

nvidia-nvml-dev-cu116
nvidia-cuda-nvcc-cu116
nvidia-cuda-runtime-cu116
nvidia-cuda-cupti-cu116
nvidia-cublas-cu116
nvidia-cuda-sanitizer-api-cu116
nvidia-nvtx-cu116
nvidia-cuda-nvrtc-cu116
nvidia-npp-cu116
nvidia-cusparse-cu116
nvidia-cusolver-cu116
nvidia-curand-cu116
nvidia-cufft-cu116
nvidia-nvjpeg-cu116

pip安装的时候需要添加nivida源 

--extra-index-url https://pypi.ngc.nvidia.com

例如pip安装CUDA11.6的命令如下 

pip install nvidia-nvml-dev-cu116 nvidia-cuda-nvcc-cu116 nvidia-cuda-runtime-cu116 nvidia-cuda-cupti-cu116 nvidia-cublas-cu116 nvidia-cuda-sanitizer-api-cu116 nvidia-nvtx-cu116 nvidia-cuda-nvrtc-cu116 nvidia-npp-cu116 nvidia-cusparse-cu116 nvidia-cusolver-cu116 nvidia-curand-cu116 nvidia-cufft-cu116 nvidia-nvjpeg-cu116 --extra-index-url https://pypi.ngc.nvidia.com

如果需要安装其他版本的CUDA,则把最后的版本号修改一下即可。例如CUDA11.4的安装命令是

 pip install nvidia-nvml-dev-cu114 nvidia-cuda-nvcc-cu114 nvidia-cuda-runtime-cu114 nvidia-cuda-cupti-cu114 nvidia-cublas-cu114 nvidia-cuda-sanitizer-api-cu114 nvidia-nvtx-cu114 nvidia-cuda-nvrtc-cu114 nvidia-npp-cu114 nvidia-cusparse-cu114 nvidia-cusolver-cu114 nvidia-curand-cu114 nvidia-cufft-cu114 nvidia-nvjpeg-cu114 --extra-index-url https://pypi.ngc.nvidia.com

但是在指定英伟达pip源https://pypi.ngc.nvidia.com的情况下,通过pip安装似乎安装不了最新版本的CUDA。截止到2024.6.27,我发现能够安装的只有CUDA11.7及以下版本,CUDA11.8和CUDA12.X都会提示不存在。推荐大家通过Anaconda配置多版本CUDA

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

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

相关文章

java中break和continue的标签使用

break标签的使用 break label是退出label对应的循环 //BreakDetail.java //2024.06.29 public class BreakDetail{public static void main(String[] args) {label1:for(int j 0; j < 4; j){label2:for(int i 0; i < 10; i){if(i 2){//break; //情况1//break label2…

五、Pentium 微处理器保护模式存储管理,《微机系统》第一版,赵宏伟

一、分段存储管理 Pentium支持分段存储管理、分页存储管理和段页式存储管理。 1.1 分段存储管理的基本思想 一个程序由多个模块组成。 每一个模块都是一个特定功能的独立的程序段。 段式管理&#xff1a;把主存按段分配的存储管理方式。 程序模块→段→段描述符→段描述符…

热题系列章节7

剑指 Offer 04. 二维数组中的查找 题目描述&#xff1a; 在一个二维数组中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数…

Chrome浏览器web调试(js调试、css调试、篡改前置)

目录 1. 打开开发者工具(Dev Tool) 2. 打开命令菜单 截图 3. 面板介绍 4. CSS调试 右键检查快速到达元素处 查找DOM数 利用面板Console查找DOM节点 内置函数查找上一个选择点击的元素 5. 调试JS代码(Javascript调试) 日志调试 选择查看日志等级 眼睛观测变量 …

创新前沿:Web3如何颠覆传统计算机模式

随着Web3技术的快速发展&#xff0c;传统的计算机模式正面临着前所未有的挑战和改变。本文将深入探讨Web3技术的定义、原理以及它如何颠覆传统计算机模式&#xff0c;以及对全球科技发展的潜在影响。 1. 引言&#xff1a;Web3技术的兴起与背景 Web3不仅仅是技术创新的一种&…

可编程定时计数器8253/8254 - 8253入门

时钟-给设备打拍子 概述 在计算机系统中&#xff0c;为了使所有设备之间的通信井然有序&#xff0c;各通信设备间必须有统一的节奏&#xff0c;不能各干各的&#xff0c;这个节奏就被称为定时或时钟 时钟并不是计算机处理速度的衡量&#xff0c;而是一种使设备间相互配合而避…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件&#xff0c;它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持&#xff0c;用户无需重新启动电脑即可在Mac上运行Windows应用程序&#xff0c;实现了真正的无缝切换。 二…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)

48全连接卷积神经网络&#xff08;FCN&#xff09; 1.构造函数 import torch import torchvision from torch import nn from torch.nn import functional as F import matplotlib.pyplot as plt import liliPytorch as lp from d2l import torch as d2l# 构造模型 pretrained…

Class Constructors and Destructors (类的构造函数和析构函数)

Class Constructors and Destructors [类的构造函数和析构函数] 1. Declaring and Defining Constructors (声明和定义构造函数)2. Using Constructors (使用构造函数)3. Default Constructors (默认构造函数)4. Destructors (析构函数)5. Improving the Stock Class (改进 Sto…

香港回归庆典开序幕,蝴蝶效应集团齐献礼

6月29日,香港各界庆典委员会庆祝香港回归祖国27周年活动启动礼在维多利亚公园举行。香港特区行政长官李家超、中央政府驻港联络办主任郑雁雄、香港各界庆典委员会主席谭锦球和筹委会主席陈鸿道等出席并致辞。 作为香港物流行业推广的领军企业,香港蝴蝶效应集团也以优秀企业代表…

Go 语言切片遍历地址会发生改变吗?

引言&#xff1a;今天面试的时候&#xff0c;面试官问了一道学 Go 语言的同学都会的简单代码&#xff0c;是关于 Go 语言 for 循环问题的&#xff0c;他询问了一个点&#xff0c;循环中共享变量的地址会发生改变吗&#xff1f; 相信听到这个问题的你&#xff0c;第一反应肯定是…

分享屏幕坐标和窗口通信

简介 实现功能&#xff0c;通过url传参选择扑克牌&#xff0c;桌面同时打开两个以上该窗口&#xff0c;扑克牌可以在窗口之间移动。 在线演示 屏幕坐标和窗口通信 实现代码 <!DOCTYPE html><html><head> <meta http-equiv"Content-Type" co…

Linux_动、静态库

目录 一、静态库 1、静态库的概念 2、制作静态库的指令 3、制作静态库 4、链接静态库 二、动态库 1、动态库的概念 2、制作动态库的指令 3、制作动态库 4、链接动态库 5、动态库的加载 三、静态库与动态库的区别 结语 前言&#xff1a; 在Linux下大部分程序进…

学习笔记——动态路由——OSPF(报头信息、报文信息、三张表)

六、OSPF协议的报头信息、报文信息、三张表 OSPF的协议报文在一个广播域内进行传递&#xff0c;是直接封装在IP报文中的&#xff0c;协议号为89。 OSPF本身5种类型&#xff1a;分别是Hello报文、DD报文、LSR报文、LSU报文、LSAck报文&#xff0c;各种不同类型的LSA其实只是包含…

Jedis、Lettuce、RedisTemplate连接中间件

jedis就像jdbc一样&#xff0c;用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习&#xff1f;2. 机器学习“寻找”的函数有哪些类型&#xff1f;3. 机器学习中机器如何“寻找”函数&#xff1f;三步走3.1 第一步&#xff1a;设定函数的未知量&#xff08;Function with Unknown Parameters&#xf…

昇思25天学习打卡营第12天|ShuffleNet图像分类

1. 学习内容复盘 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&a…

C++ 数据库MySQL 学习笔记(3) - 数据库操作

C 数据库MySQL 学习笔记(3) - 数据库操作 视图操作 视图是从一个或多个表中导出来的表&#xff0c;是一种虚拟存在的表。视图就像一个窗口&#xff0c;通过这个窗口可以看到系统专门提供的数据&#xff0c;这样用户可以不看整个数据库表中的数据&#xff0c;而只关心对自己有…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考&#xff1a;https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件&#xff0c;文件路径&#xff1a; C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …

【Linux】Linux系统配置,linux的交互方式

1.Linux系统环境安装 有三种方式 裸机安装或者双系统 -- 不推荐虚拟机安装 --- 不推荐云服务器/安装简单&#xff0c; 维护成本低——推荐&#xff0c; 未来学习效果好 我们借助云服务器 云服务器&#xff08;Elastic Compute Service&#xff0c;ECS&#xff09;的标准定义…