conda虚拟环境中安装的cuda和服务器上安装的cuda的异同

服务器上已安装Nvidia提供的cuda,nvcc -V时会出现已安装的CUDA版本。如下图所示,服务器上已安装好的cuda版本为10.1。
在这里插入图片描述
但是当我们在Anaconda虚拟环境下安装pytorch或者paddlepaddle等深度学习框架的GPU版本时,通常会选择较高版本的cuda,这样服务器就存在两个cuda版本,但是/usr/local的目录下只有Nvidia家的cuda版本,这是为什么呢?而且使用conda命令安装cuda相比于Nvidia的cuda安装要简单很多,例如安装gpu版本的pytorch命令如下所示。

conda install pytorch == 1.12.1 torchvision == 0.13.1 torchaudio== 0.12.1 cudatoolkit=11.3 -c pytorch

Nvidia官方提供的CUDA Toolkit是一个完整的工具安装包,包含了进行CUDA相关程序开发的编译、调试等过程相关的所有组件。使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。

但是对pytorch/paddlepaddle等这样的深度学习框架而言,其本身与CUDA相关的部分已经提前编译好,在深度学习框中调用GPU只需要CUDA 的动态链接库就可支持程序的运行。所以,安装pytorch的gpu版本时,只需要安装cudatoolkit,只要系统上存在与当前的cudatooklit所兼容的nvidia驱动,就可以运行程序。

Anaconda为用户安装的cudatooklit,主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库,不会安装驱动程序。这也是为什么nvidia-smi时出现的cuda版本为服务器上已安装的cuda版本,而不是自己虚拟环境中的cuda版本。

想要安装CUDA,有两种方式:1、在英伟达官网下载CUDA Toolkit Installer,借此安装;2、在Anaconda环境中使用类似【conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch】的包括cudatoolkit的命令安装。

第一种方式安装的cuda,包括的模块更全面

第二种方式安装的cuda,用来训练模型,基本够用,但是要用到扩展功能就不行了

详见:Pytorch 使用不同版本的 cuda - yhjoker - 博客园
通过 Anaconda 安装的应用程序包位于安装目录下的 /pkg 文件夹中,如笔者的目录即为 /home/xxx/anaconda3/pkgs/ ,用户可以在其中查看 conda 安装的 cudatoolkit 的内容,如下图所示。可以看到 conda 安装的 cudatoolkit 中主要包含的是支持已经编译好的 CUDA 程序运行的相关的动态链接库。( Ubuntu 环境下 )
在这里插入图片描述
在大多数情况下,上述 cudatoolkit 是可以满足 Pytorch 等框架的使用需求的。但对于一些特殊需求,如需要为 Pytorch 框架添加 CUDA 相关的拓展时( Custom C++ and CUDA Extensions ),需要对编写的 CUDA 相关的程序进行编译等操作,则需安装完整的 Nvidia 官方提供的 CUDA Toolkit。

注意:这里记录一下,本人就是在之前使用conda安装的CUDA来跑深度学习项目没有出现问题,但是当引入一个模块需要添加扩展时就频频报错,这里大概就是在编译扩展时使用的是系统完整装的CUDA版本,而使用编译完的扩展时使用的是conda安装的扩展,这里就会出现版本不匹配因此不兼容的情况,所有频频报错。

参考链接

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值