conda虚拟环境中安装cuda方法、遇到的问题

conda虚拟环境中安装cuda方法、遇到的问题

文章目录

  • conda虚拟环境中安装cuda方法、遇到的问题
    • conda虚拟环境中安装cuda
    • cuda.h和cuda_runtime.h
    • pytorch运行时的CUDA版本
    • 其他问题
      • 检查包冲突
      • nvcc -V和nvidia-smi显示的版本不一致
      • cuda路径

conda虚拟环境中安装cuda

参考文章:使用conda管理CUDA。

在跑深度学习项目时,很多时候CUDA版本没达到要求,重新安装 CUDA 太麻烦,更何况一般都没有 root 权限。因此,需要调用 conda 自己安装的 CUDA 版本。

  1. 创建 conda 环境,并激活
# 创建虚拟环境环境
conda create -n 自己输入名称 python=版本号
# 激活虚拟环境
conda activate 名称
  1. 安装指定 CUDA 版本,例如 11.8:
conda install cudatoolkit==11.8 -c nvidia
  1. 安装支持 CUDA 的 PyTorch(需要去PyTorch官网找到对应版本),例如 2.4.1:
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1  pytorch-cuda=11.8 -c pytorch -c nvidia
  1. 安装 cuda-nvcc:
conda install nvidia::cuda-nvcc

可以去https://anaconda.org/搜索所有cuda版本的nvcc。
在这里插入图片描述
注意
其中第 4 步是最容易遗漏的,也很少有博客提到。实测不安装 cuda-nvcc 会导致调用系统自带的 CUDA

以上步骤完成后,conda就会将cuda添加到该虚拟环境的环境变量中,可以使用echo $PATH查看环境变量:
在这里插入图片描述

cuda.h和cuda_runtime.h

参考文章:conda环境中安装cuda.h和cuda_runtime.h。

在conda的虚拟环境中安装cuda后,在运行项目时可能会提示缺少cuda.h和cuda_runtime.h文件:
在这里插入图片描述
解决方法:
在该虚拟环境中使用如下命令:

conda install nvidia::cuda-cudart-dev
# cudart是cuda runtime的缩写

亦可去https://anaconda.org/搜索cuda-cudart-dev对应于cuda的版本:
在这里插入图片描述

如提示还缺少cusparse.hcusparse_v2.h,可以去https://anaconda.org/搜索libcusparse-dev对应于cuda的版本:
在这里插入图片描述
也可以直接下载文件:
在这里插入图片描述
下载下来后可以看到其中有这两个文件,复制到虚拟环境cuda路径下:.h文件在 conda/envs/虚拟环境名include文件夹下。
在这里插入图片描述

还可能会说缺少以下文件:
在这里插入图片描述
只要找到对应cuda版本的文件,复制到虚拟环境cuda路径下即可。.h文件在 conda/envs/虚拟环境名include文件夹下。

pytorch运行时的CUDA版本

查看cuda 运行版本 和 编译时的版本:

# Pytorch 实际使用的运行时的 cuda 目录
import torch.utils.cpp_extension
torch.utils.cpp_extension.CUDA_HOME
# 编译该 Pytorch release 版本时使用的 cuda 版本
import torch
torch.version.cuda 

在这里插入图片描述

参考文章:一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系。

参考文章:python_deep_study系列。

(1)查看pytorch版本:

import torch
print(torch.__version__)

在这里插入图片描述
(2)查看Pytorch release 版本时使用的 cuda 版本:

import torch
print(torch.version.cuda)

在这里插入图片描述

(3)查看 Pytorch 实际使用的运行时的 cuda 目录,可以直接输出 cpp_extension.py 中的 CUDA_HOME 变量:

import torch
import torch.utils
import torch.utils.cpp_extension
print(torch.utils.cpp_extension.CUDA_HOME)

在这里插入图片描述

其他问题

检查包冲突

pip check #检查使用pip安装的包在当前环境中的兼容性# 可以检查特定包的兼容性
pip check numpy #检查numpy在当前环境中的兼容性

在这里插入图片描述

nvcc -V和nvidia-smi显示的版本不一致

参考文章:【CUDA】nvcc和nvidia-smi显示的版本不一致?。

nvcc 属于CUDA的编译器,将程序编译成可执行的二进制文件,nvidia-smi 全称是 NVIDIA System Management Interface ,是一种命令行实用工具,旨在帮助管理和监控NVIDIA GPU设备。

CUDA有 runtime api 和 driver api,两者都有对应的CUDA版本, nvcc -V 显示的就是前者对应的CUDA版本,而 nvidia-smi显示的是后者对应的CUDA版本。

用于支持driver api的必要文件由 GPU driver installer 安装,nvidia-smi就属于这一类API;而用于支持runtime api的必要文件是由 CUDA Toolkit installer 安装的。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本,并不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。

CUDA Toolkit Installer通常会集成了GPU driver Installer,如果你的CUDA均通过CUDA Tooklkit Installer来安装,那么runtime api 和 driver api的版本应该是一致的,也就是说, nvcc -V 和 nvidia-smi 显示的版本应该一样。否则,你可能使用了单独的GPU driver installer来安装GPU dirver,这样就会导致 nvidia-smi 和 nvcc -V 显示的版本不一致了。

通常,driver api的版本能向下兼容runtime api的版本,即 nvidia-smi 显示的版本大于nvcc --version 的版本通常不会出现大问题。

cuda路径

机器的cuda路径在/usr/local下。

conda虚拟环境的cuda路径在conda/envs/虚拟环境名libinclude文件夹下。

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

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

相关文章

【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯迈向AGI的新跨越💯BoT与CoT的技术对比技术原理差异推理性能提升应用范围和通用性从错误中学习的能力总结 💯BoT的工作流程和机制初始化过程生成推…

layaair获取组件里的脚本

获取脚本用getComponents方法,但是这个方法里的参数不是脚本的名称。而是组件类型。如果你需要获取脚本,则类型为Laya.Script。挺坑的。我在官网找都没找到这个是这么用的。我猜测的。没想到试了一下成功了。 property(Laya.Node)public img1: Laya.Node…

碰一碰支付系统搭建怎么做?头部公司源码大测评!

随着碰一碰支付dai li骗局的曝光,越来越多的人开始选择将目光转向碰一碰支付系统搭建这一入局方式,连带着与之相关的多个话题,如碰一碰支付系统搭建怎么做等也成为了当前的一大热点。 毕竟,相较于dai li 模式的与第三方公司合作、…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26 前言 本期相关论文可以从“下载” 资源中获取,如果有感兴趣的问题,欢迎交流探讨! 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26前言目…

【C++进阶】C++11(上)

【C进阶】C11(上) 🥕个人主页:开敲🍉 🔥所属专栏:C🥭 🌼文章目录🌼 1. C11的发展史 2. 列表初始化 2.1 C98的传统{} 2.2 C11中的{} 2.3 C11中的std::initializer_list 3. 右值引用…

Kaggle竞赛——灾难推文分类(Disaster Tweets)

目录 1. 准备工作2. 资源导入3. 数据处理4. 绘制词云图5. 数据可视化5.1 词数和字符数可视化5.2 元特征可视化5.3 类别可视化 6. 词元分析6.1 一元语法统计6.2 多元语法统计 7. 命名实体识别8. 推文主题提取9. 构建模型9.1 数据划分与封装9.2 模型训练与验证 10. 模型评估11. 测…

jvm虚拟机介绍

Java虚拟机(JVM)是Java语言的运行环境,它基于栈式架构,通过加载、验证、准备、解析、初始化等类加载过程,将Java类文件转换成平台无关的字节码,并在运行时动态地将其翻译成特定平台的机器码执行。 JVM的核心…

App测试环境部署

一.JDK安装 参考以下AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 二.SDK安装 安装地址:https://www.androiddevtools.cn/ 解压 环境变量配置 变量名:ANDROID_SDK_HOME 参考步骤: A…

K8s中TSL证书如何续期

TSL是什么 K8s中的作用是什么? 在 Kubernetes(K8s)中,TSL 指的是 Transport Layer Security,也就是传输层安全协议。它是用来保护在网络上传输的数据的安全性和隐私性。 TSL 在 Kubernetes 中的作用包括:…

铜业机器人剥片 - SNK施努卡

SNK施努卡有色行业电解车间铜业机器人剥片 铜业机器人剥片技术是针对传统人工剥片效率低下、工作环境恶劣及生产质量不稳定的痛点而发展起来的自动化解决方案。 面临人工剥片的诸多挑战,包括低效率、工作环境差、人员流动大以及产品质量控制不精确等问题。 人工剥片…

OSPF特殊区域及其他特性

不用的链路这状态信息没必要一直保存,要不路由器承受不了。用OSPF 特殊区域解决 1. Stub区域和Totally Stub区域 R1作为ASBR引入多个外部网段,如果Area 2是普通区域,则R3将向该区域注入5类和4类LSA。 当把Area 2配置为Stub区域后&#xff1a…

51单片机之蜂鸣器驱动

1.简介 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、 复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   压电式蜂鸣器主要…

Linux练习_2账户管理

题目描述1 建立用户组 [rootlocalhost ~]# groupadd -g 2000 shengchan [rootlocalhost ~]# groupadd -g 2001 caiwu [rootlocalhost ~]# groupadd -g 2002 jishu [rootlocalhost ~]# tail -3 /etc/group shengchan:x:2000: caiwu:x:2001: jishu:x:2002: [rootlocalhost ~]# 建…

【IC每日一题】

IC每日一题 1 组合逻辑VS时序逻辑1.1 组合逻辑1.1.1 竞争冒险1.1.2 解决方法 1.2 时序逻辑1.3 比较1.4 场景 2 计数器2.1 代码片段法2.2 实现计数器--异步复位,带clear端,计10则归0; 1 组合逻辑VS时序逻辑 1.1 组合逻辑 组合逻辑&#xff1…

SSM-Springboot笔记(2)- SpringBoot常用开发技能

1 SpringBoot常用开发技能 1.1 项目架构 创建项⽬配置启动类建⽴对应的包,先建⽴这些包,其他⽤到再补充 controller service mapper domain utils1.2 开发HTTP接⼝GET请求 GET请求 场景:⼀般的查询接⼝就是get请求 注解:GetMappin…

Android在kts中使用navigation及Args

Android在kts中使用navigation及Args 前言: ​ 之前在项目中使用过navigation,但都是以Groory的方式,最近一年多使用kts后忍不住把项目都改成kts的方式,不过其中也遇到不少坑,今天就讲解一下如何在kts中使用navigati…

MyBatis缓存详解(一级缓存、二级缓存、缓存查询顺序)

固态硬盘缺陷:无法长时间使用,而磁盘只要不消磁,只要不受到磁影响,就可以长期使用,因此绝大多数企业还是使用磁盘来存储数据 像mysql这种关系型数据库中的数据存储在磁盘中,为方便查询,减少系统…

springboot襄阳华侨城奇幻度假区服务平台-计算机毕业设计源码93560

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3 开发技术 1.3.1 B/S架构 1.3.2 Spring Boot框架 1.3.3 Java语言 1.3.4 MySQL数据库 1.4论文章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 登录流程 2.2.2数据删除流程 2.3 系统…

2024年好用不踩雷的8款图纸加密软件推荐!CAD图纸加密软件!

在2024年,随着信息安全需求的提升,特别是对于设计、建筑、制造等行业的CAD图纸保护,图纸加密软件的选择尤为重要。以下推荐了8款优质的CAD图纸加密软件,这些软件不仅提供了强大的加密功能,还在易用性和兼容性方面表现出…