使用虚拟环境conda安装不同版本的cuda,cudnn,pytorch

news2024/10/6 8:30:12

背景:在学习深度学习时,我们不可避免的需要跑多个神经网络,而不同的神经网络环境都不一样,所以必须要使用到虚拟环境(如conda)去做环境隔离,安装属于自己的环境。在这环境中,大多神经网络都必须要用到cuda,cudnn。不同的神经网络需求版本不同,所以也需要另行安装,这与前面一篇文章pip安装包的方式还不太一样。

一.cuda安装

1.确定当前平台cuda可以安装的版本

安装好显卡驱动后,使用nvidia-smi命令可以查看这个显卡驱动可以安装的最高的cuda版本是多少,如下:
在这里插入图片描述
Driver Version: 525.89.02 表明当前显卡驱动版本是525.89.02
CUDA Version: 12.0 表明当前的显卡驱动可以安装的cuda最高版本是12.0

2.conda环境中安装cuda(cudatoolkit)

注意:我所使用的深度学习框架是pytorch,pytorch与cuda,cuda与cudnn之间的版本都有明确的对应关系,所以需要先确定pytorch的版本。

2.1 根据pytorch版本确定cuda和cudnn的版本

例如,我使用的pytorch版本是1.11.0。

  • 那么首先就可以去官方网站上,找cuda版本对应关系。如下图:
    在这里插入图片描述
    可以看到,pytorch==1.11.0版本对应的cuda可以是11.3或者10.2(GPU时)
  • 其次,我们在根据cuda的版本去确定cudnn的版本。
    如下图,加入我们安装cuda 11.3,那么可以对应找到可以安装cudnn的资源(有多个可以适用)。
    在这里插入图片描述

2.2 安装cuda

注意,此时我们已经使用conda,去激活了某一个虚拟环境。(安装了conda后,使用conda create -n xxx python==xxx和conda activate xxx 去激活xxx环境)

如一中的2.1确定的cudnn版本,然后可以使用conda来搜索仓库有哪些cudnn的版本可以安装。

# 查看都有哪些版本
conda search cudatoolkit

如果刚好有满足要求的版本,直接使用如下语句安装即可。

conda install cudatoolkit==(指定版本)

第一条命令可以查看用来安装cudatoolkit的所有版本都有哪些。

在conda环境中,可以直接用conda装cuda和cudnn,缺点是conda源中没有全部版本的cuda和cudnn,并且下载速度会比较慢,可以考虑换源。


如果换源速度也不行,那么可以考虑如下方案:

conda search cudatoolkit --info
# 查看所有列出来的cudatoolkit的详细信息,包括版本号version,文件网址url,依赖项dependencies。
# 直接conda install cudatoolkit,通常下载安装包的速度很慢,当换源都不好使的时候,因而可以用上面给出的文件网址url来用下载工具去下载这个包,再去本地安装
# 依赖项dependencies:想要使用cudatoolkit,还需要安装什么才可以使用。

本地安装离线包的命令是:

conda install --use-local 包名

如果没有满足要求的版本,那么只能去官网下载包,进行离线安装

注意:此处没有深入了解,即使装成功了,这个虚拟环境应该还需要设置环境变量才能使用,但是我暂时还不会。一般conda搜索出来的就能满足需求了。

二.cudnn安装

如一中的2.1确定的cudnn版本,然后可以使用conda来搜索仓库有哪些cudnn的版本可以安装。

# 查看都有哪些版本
conda search cudnn

1.如果刚好有满足要求的版本,直接使用如下语句安装即可。

conda install cudnn==(指定的版本)

2.如果没有满足要求的版本,那么只能去官网下载包,进行离线安装

安装命令:

conda install --use-local 本地cudnn包所在的路径

也可以复制想要安装版本的cudnn的下载地址,使用wget链接地址进行下载

三.测试安装cuda,cudnn是否成功

在虚拟环境中安装完cuda和cudnn想要测试是否安装成功,不能使用nvcc -V命令测试,需要在虚拟环境中安装pytorch包进行测试
装好pytorch后,命令行输入python,进入python的命令行,导入torch包

  • 查询cuda版本
print(torch.version.cuda)
  • 查询cudnn版本
print(torch.backends.cudnn.version())

注意:现在的pytorch官网介绍的安装命令附带了下载和安装cuda,但是没有附带cudnn,所以还需要额外安装cudnn(但是发现,跑一些开源网络的时候,按照他的步骤走,pytorch和cuda是分开安装的,不晓得为什么,所以才有上面的内容)。

参考文章:
https://blog.csdn.net/LIWEI940638093/article/details/113811563
https://blog.csdn.net/qq_43705697/article/details/121618276

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

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

相关文章

【RocketMQ】安装

文章目录 下载RocketMQ配置环境变量 下载RocketMQ 下载RocketMQ安装包 下载DashBoard 这里版本推荐选择4.9.x,因为比较稳定。 下载完毕之后,将安装包拖入到Linux环境。 之后使用unzip命令解压缩RocketMQ的安装包。 unzip ./rocketmq-all-4.9.2-bin-rel…

Springboot 实践(6)spring security配置与运用

前文讲解了springboot项目添加静态资源目录,到目前为止,项目已经建立了后台服务控制、静态资源目录等服务;项目开发是为特定用户服务的,不具备访问权限用户,不允许访问系统,那么如何对系统资源进行保护呢&a…

操作系统-笔记-第二章-进程

目录 二、第二章——【进程】 1、进程的概念 (1)PID & PCD 进程控制块 (2)程序段 & 数据段 (3)特征 (特性) property (4)总结 2、进程的状态 …

配置应用/配置权限提升

配置应用 配置 servera 上的应用 ex200 ,要求如下:当以用户 pandora 运行 ex200 时,它将显示 borough lively excursion nephew scarce find / | grep ex200 which ex200wim /usr/local/bin/ex200 echo borough lively excursion nephew …

【Java集合框架面试题(30道)】

文章目录 Java集合框架面试题(30道)引言1.说说有哪些常见集合? List2.ArrayList和LinkedList有什么区别?3.ArrayList的扩容机制了解吗?4.ArrayList怎么序列化的知道吗?为什么用transient修饰数组?5.快速失败&#xff0…

工厂无线安灯呼叫系统解决方案

在现代制造业中,生产线的高效运作是企业成功的关键之一。为了实现生产线的顺畅运转,安灯系统成为了制造业生产现场的必备工具。安灯系统是一个专门应用软硬件系统,旨在快速联络生产、物料、维修、主管等部门,以满足生产线的需求并…

【STM32RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)

硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、线程管理接口介绍二、任务:使用多线程的方式同时实现led闪烁和按键控制喇叭(扫描法)1. RT-Thread相关接…

根据两组相关联数据(部门 + 用户),生成列表树

文章目录 背景想要得到的数据格式业务层获取数据,部门及用户,构建树结构TreeUtil生成的格式部门实体用户实体 背景 目前拥有用户和部门两组数据,根据部门和用户的关系,生成部门树,且每个部门下拥有哪些与子部门同级的…

接口自动化测试框架搭建

为什么要做(自动化)接口测试? 1、由于现在各个系统的复杂度不断上升,导致传统的测试方法成本上升且测试效率大幅下降,而接口测试相对于UI测试更加稳定,且相对容易实现自动化持续集成,可以减少人…

Spring BeanDefinition 也分父子关系?

在 Spring 框架中,BeanDefinition 是一个核心概念,用于定义和配置 bean 的元数据,虽然在实际应用中,我们一般并不会或者很少直接定义 BeanDefinition,但是,我们在 XML 文件中所作的配置,以及利用…

数字化智慧工地云平台,劳务实名制系统、视频监控系统、环境监测系统、人员定位系统、工资代发系统、AI识别系统、视频监控系统

智慧工地概念 智慧工地是一种崭新的工程全生命周期管理理念,是指运用信息化手段,通过对工程项目进行精确设计和施工模拟,围绕施工过程管理,建立互联协同、智能生产、科学管理的施工项目信息化生态圈,并将此数据在虚拟…

RabbitMQ的5种消息队列

RabbitMQ的5种消息队列 1、七种模式介绍与应用场景 1.1 简单模式(Hello World) 一个生产者对应一个消费者,RabbitMQ 相当于一个消息代理,负责将 A 的消息转发给 B。 应用场景:将发送的电子邮件放到消息队列,然后邮件服务在队列…

LeetCode150道面试经典题-- 环形链表(简单)

1.题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&…

通过pycharm使用git和github的步骤(图文详解)

一、在Pycharm工具中配置集成Git和GitHub。 1.集成Git。 打开Pycharm, 点击File-->Settins-->Version Control-->Git 然后在 Path to Git executable中选择本地的git.exe路径。如下图: 2.集成GitHub 打开Pycharm, 点击File-->Settins-->Version…

基于Googlenet深度学习网络的信号调制类型识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 深度学习与卷积神经网络 4.2 数据预处理 4.3 GoogLeNet结构 4.4 分类器 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ............…

Qt 父子对象的关系

文章目录 前言一. Qt 对象可以存在父子关系:二. 父子关系的建立:三. Qt 对象的销毁: 总结 前言 Qt是一个流行的C框架,用于开发跨平台的图形用户界面(GUI)应用程序。Qt提供了一种强大的对象模型&#xff0c…

leetcode做题笔记83删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 输入:head [1,1,2] 输出:[1,2] 思路一:模拟题意 struct ListNode* deleteDuplicates(struct ListNode* head){i…

韦东山-电子量产工具项目:显示单元

所有代码都已通过测试跑通,其中代码结构如下: 一、include文件夹 1.1 disp_manager.h #ifndef _DISP_MANAGER_H //防止头文件重复包含,只要右边的出现过,就不会再往下编译 #define _DISP_MANAGER_H //区域结构体 typedef struct DispBuff …

机器学习样本数据划分的典型Python方法

机器学习样本数据划分的典型Python方法 DateAuthorVersionNote2023.08.16Dog TaoV1.0完成文档撰写。 文章目录 机器学习样本数据划分的典型Python方法样本数据的分类Training DataValidation DataTest Data numpy.ndarray类型数据直接划分交叉验证基于KFold基于RepeatedKFold基…

【C++】面向对象编程引入 ( 面向过程编程 | 查看 iostream 依赖 | 面向对象编程 )

文章目录 一、面向过程编程二、查看 iostream 依赖三、面向对象编程 一、面向过程编程 给定 圆 的 半径 , 求该圆 的 周长 和 面积 ; 半径为 r r r , 周长就是 2 π r 2 \pi r 2πr , 面积是 π r 2 \pi r^2 πr2 ; 使用 面向过程 的方法解决上述问题 , 只能是令程序顺序执…