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

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

文章目录

conda虚拟环境中安装cuda

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

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

  1. 创建 conda 环境,并激活
python 复制代码
# 创建虚拟环境环境
conda create -n 自己输入名称 python=版本号
# 激活虚拟环境
conda activate 名称
  1. 安装指定 CUDA 版本,例如 11.8:
python 复制代码
conda install cudatoolkit==11.8 -c nvidia
  1. 安装支持 CUDA 的 PyTorch(需要去PyTorch官网找到对应版本),例如 2.4.1:
python 复制代码
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:
python 复制代码
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文件:

解决方法:

在该虚拟环境中使用如下命令:

python 复制代码
conda install nvidia::cuda-cudart-dev
# cudart是cuda runtime的缩写

亦可去https://anaconda.org/搜索cuda-cudart-dev对应于cuda的版本:

如提示还缺少cusparse.h和cusparse_v2.h,可以去https://anaconda.org/搜索libcusparse-dev对应于cuda的版本:

也可以直接下载文件:

下载下来后可以看到其中有这两个文件,复制到虚拟环境cuda路径下:.h文件在 conda/envs/虚拟环境名的include文件夹下。

还可能会说缺少以下文件:

只要找到对应cuda版本的文件,复制到虚拟环境cuda路径下即可。.h文件在 conda/envs/虚拟环境名的include文件夹下。

pytorch运行时的CUDA版本

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

python 复制代码
# 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版本:

python 复制代码
import torch
print(torch.__version__)

(2)查看Pytorch release 版本时使用的 cuda 版本:

python 复制代码
import torch
print(torch.version.cuda)

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

python 复制代码
import torch
import torch.utils
import torch.utils.cpp_extension
print(torch.utils.cpp_extension.CUDA_HOME)

其他问题

检查包冲突

python 复制代码
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/虚拟环境名的lib或include文件夹下。

相关推荐
数智工坊4 小时前
视觉SLAM第12讲|地图构建:单目稠密重建、RGB-D点云与八叉树地图全解析
人工智能·深度学习·矩阵·机器人
GPU实战笔记4 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
论文复现现场5 小时前
8卡4090能跑70B吗?Llama-2显存预算、QLoRA与通信瓶颈
人工智能·深度学习·分布式训练·llama·显存·qlora·算家云
用户15970637606 小时前
一文读懂淘宝店铺在售商品接口:整店商品批量拉取用于竞品研究
深度学习
布吉岛的石头6 小时前
Java 程序员第 49 阶段11:Java 接 BERT:用 ONNX Runtime 做句向量推理
java·人工智能·python·深度学习·bert·transformer
liron718 小时前
技术的诞生与演化--技术自举及其冷启动
人工智能·深度学习·神经网络·自然语言处理
喜欢打篮球的普通人9 小时前
MiniMind 学习笔记(十八):速通强化学习——从 MDP 到 PPO 的概念与算法地图
笔记·深度学习·学习
`流年づ10 小时前
VGG、AlexNet、GoogLeNet对比
人工智能·深度学习
打工仔折腾 AI10 小时前
FaceFusion本地换脸实战:Windows整合包、模型选择与遮罩调参记录
人工智能·windows·后端·python·深度学习·性能优化·ai agent 实战
数智工坊10 小时前
视觉SLAM第5讲|相机成像模型:针孔投影、畸变修正与深度感知全拆解
人工智能·深度学习·数码相机·机器人