看这篇就够了——ubuntu系统中的cuda cudnn cudatookit及pytorch使用

这篇具有很好参考价值的文章主要介绍了看这篇就够了——ubuntu系统中的cuda cudnn cudatookit及pytorch使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.基本概念

1.1 nvidia独立显卡

独立显卡是指以独立板卡形式存在,可在具备显卡接口的主板上自由插拔的显卡。独立显卡具备单独的显存,不占用系统内存,而且技术上领先于集成显卡,能够提供更好的显示效果和运行性能。显卡作为电脑主机里的一个重要组成部分,对于喜欢玩游戏和从事专业图形设计的人来说显得非常重要。以前民用显卡图形芯片供应商主要包括ATI和NVIDIA两家。

ubuntu需要自己安装nvidia驱动才能使用nvidia,安装nvidia驱动程序,可以让系统正确识别nVIDIA的图形显示卡,,进行2D/3D渲染,发挥显示卡应有的效能。

1.2 CUDA

        CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

一个电脑里可以拥有两个CUDA API,一个是dirver CUDA(显示屏幕用的),一个是runtime CUDA(加速深度学习)

安装nvidia驱动后,在终端输入nvidia-smi会出现下面界面,其中的CUDA Version是11.4,这里的CUDA是dirverCUDA。也就是说现在电脑里有CUDA但只是显示屏幕用的,所以不能深度学习加速。那么想要加速深度学习需要再安装runtime CUDA,可以通过两种方式,一个是conda环境中安装,另一个是安装cudatoolkit,后面进行详解。

ubuntu cuda,ubuntu各种奇怪问题,pytorch,ubuntu,深度学习,Powered by 金山文档

1.3 CUDA Toolkit (nvidia)

  CUDA Toolkit (nvidia)是 CUDA完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。简单来讲就是CUDA Toolkit包含了dirver CUDA和runtimeCUDA。

所以一般意义上的ubuntu安装CUDA实际上是安装CUDA Toolkit,但一般我们会先安装nvidia显卡驱动(带有dirverCUDA),所以再安装CUDA Toolkit时会将Driver前面的X去掉,也就是不安装,因为电脑中已经有dirver CUDA了。

ubuntu cuda,ubuntu各种奇怪问题,pytorch,ubuntu,深度学习,Powered by 金山文档

由上图可以看到一个完整的cuda toolkit包括

  1. Driver:显卡驱动

  1. Toolkit: 提供一些像profiler,debuggers等工具和科学库和实用程序库

  • cudart: CUDA Runtime

  • cudadevrt: CUDA device runtime

  • cupti: CUDA profiling tools interface ion

  • nvml: NVIDIA management library

  • nvrtc: CUDA runtime compilation

  • cublas: BLAS (Basic Linear Algebra Subprograms,基础线性代数程序集)

  • cublas_device: BLAS kernel interface

  1. CUDA Samples: 演示如何使用各种CUDA和library API的代码示例。

  1. CUDA documentat

1.4 CUDA Toolkit (Pytorch)

我们在pytorch环境中常使用如下指令去安装cudatoolkit,这里我们称为CUDA Toolkit (pytorch)

conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple

Torchvision 是 PyTorch 的一个与计算机视觉相关的软件包,提供了一些有用的工具和函数,可以帮助您方便地加载和预处理图像和视频数据集,进行数据增强,构建和训练深度神经网络模型,并进行模型评估和可视化等。主要功能包括

Torchaudio 是 PyTorch 的一个与音频信号处理相关的软件包,提供了一些有用的工具和函数,可以帮助您方便地加载和预处理音频数据集,进行声音特征提取,构建和训练深度神经网络模型,并进行模型评估和可视化等。主要功能包括

这是CUDA不完整的工具安装包,其主要包含在使用 CUDA 相关的功能时所依赖的动态链接库。不会安装驱动程序。个人理解就是只安装了runtime cuda,这种安装方式可以在多个conda环境中安装不同的cudatoolkit版本以适用深度学习代码。

1.5 cudnn

cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算,再安装cudatoolkit(pytorch)时候,cuDNN会自动安装。安装cudatoolkit(nvidia)时候需要自己安装cuDNN

1.6 pytorch

pytorch是基于CUDA的深度学习框架,因此,pytorch的版本必须依赖于cuda toolkit的版本。由于我们经常使用别人的代码,所以常会感觉是根据pytorch版本来选择CUDA版本。

二.这一堆到底怎么选

2.1 nvcc -V与nvidia-smi

不少人都会产生这种疑惑,为什么nvcc -V和nvidia-smi输出的CUDA版本号不同,相信看过上面的基本概念就清楚了,因为一个显示的是runtime CUDA(用于计算) 一个是 dirver CUDA(用于显示),而我们总是将两者分开两次独立进行安装。

那可以让它们显示的版本相同吗?答案是可以,只需要安装完整版的CUDAtookit(nvidia)一次性安装,就是把CUDA Toolkit安装时Driver前面的X加上,在这之前如果安装过nvidia驱动需要将它卸载,否则会安装失败,失败原因是两个driver CUDA冲突。

那两者版本有什么关系呢?通常情况如果先安装了显卡驱动,nvidia-smi显示的版本要比nvcc-V的高,在选择runtime CUDA时需要查看显卡的型号和pytorch的需要版本确定,并没有特别严格必须一个版本的限制,也就是说一个电脑上conda每个环境都可以拥有不同版本的cuda。

2.2 只加速深度学习

如果你的目的是用CUDA只加速深度学习,深度学习往往不同代码需要不同的cuda版本,如果安装cudatookit(nvidia)电脑上只有一个版本是不方便的,因此针对深度学习,安装的策略是:

nvidia显卡驱动+cudatoolkit(pytorch)

不需要在电脑上再安装cudatoolkit(nvidia)就能加速深度学习,遇到需要新版本的cuda加速就再建立一个conda环境安装。

conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
或者
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple
#使用 Conda 安装 PyTorch 更为简单和方便,而使用 pip 则更加灵活和自由。

2.3 全都用

如果你不止在pytorch中使用,还想在C++中使用,那就需要安装cudatoolkit(navidia),一般的步骤是1、安装nvidia驱动2、安装cudatoolkit(去掉driver)3、conda 安装cudatoolkit(pytorch)

这样可以理解为你的ubuntu系统中有一个driverCUDA和多个runtimeCUDA,那么这时在pytorch环境运行代码是会报错的,也很好理解因为有多个runtimeCUDA产生了冲突,报错。

OSError: /home/cxl/anaconda3/envs/yolo/lib/python3.8/site-packages/nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtGetStatusString, version libcublasLt.so.11

那么最简单的做法就是把bashrc中cuda的环境配置注释掉,打开一个新终端就可以重新运行了。

1.打开bashrc
sudo gedit ~/.bashrc
2.注释cuda环境配置
#export PATH=$PATH:/usr/local/cuda-11.3/bin
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64
#export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.3/lib64
3.source ~/.bashrc

在运行别的代码时再将bashrc中的cuda环境配置恢复。我们可以理解为在bashrc中的cuda是全局cuda,而在conda环境中的cuda是局部cuda。

三. 安装

3.1 显卡驱动

关于显卡驱动的安装在我之前的博客写的已经很清楚

https://blog.csdn.net/HUASHUDEYANJING/article/details/128838393?spm=1001.2014.3001.5502

3.2 cudatoolkit(nvidia)

1.从nvidia官网选择cudatoolkit

https://developer.nvidia.com/cuda-toolkit-archive

版本的选择一般低于nvidia-smi中的版本,选择runfile的安装包

ubuntu cuda,ubuntu各种奇怪问题,pytorch,ubuntu,深度学习,Powered by 金山文档

2.安装cuda

首先安装一些依赖

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

安装cuda

wget https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux.run
# 若出现CUDA段错误(核心已转储)通常由于栈溢出导致
ulimit -a
# 发现stack size为8192
# 修改栈限制为无限
# 然后从-c错误处继续下载
wget -c https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
--2023-02-21 20:21:22--  https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
ulimit -s unlimited
sudo sh cuda_11.4.4_470.82.01_linux.run
#若出现Ensure there is enough space in /tmp and that the installation package is not corrupt
#自己建一个tmp文件
sudo sh cuda_10.0.130_410.48_linux.run --tmpdir=[YOUR TMP DIR]
ubuntu cuda,ubuntu各种奇怪问题,pytorch,ubuntu,深度学习,Powered by 金山文档
在这一步将driver去掉X

3.配置bashrc

1.打开bashrc
sudo gedit ~/.bashrc
2.添加cuda环境配置
export PATH=$PATH:/usr/local/cuda-11.3/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.3/lib64
3.source ~/.bashrc

3.3 cudatoolkit(pytorch)

直接使用命令安装文章来源地址https://www.toymoban.com/news/detail-798119.html

conda create -n torch
conda activate torch
conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
#或者用pip一键安装
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple

到了这里,关于看这篇就够了——ubuntu系统中的cuda cudnn cudatookit及pytorch使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 关于SpringBoot框架,看这篇就够了。

    关于SpringBoot框架,看这篇就够了。

    目录 是什么 有什么优点、解决了哪些问题 创建第一个以springboot项目 starter 核心配置文件application.yml或properties application中的配置项 springboot的启动流程 自定义banner 整合日志打印 整合druid数据源 处理异常 常用的注解 Configuration Import conditional ConfigruationProperties 基于springboot的

    2024年02月06日
    浏览(25)
  • ElasticSearch自定义评分-看这篇就够了

    ElasticSearch自定义评分-看这篇就够了

    文章目录   一、适用的场景    1.基本介绍    2.使用场景     2.1根据价格评分排序     2.2根据距离评分排序     2.3根据距离价格综合评分排序     2.4自定义编写脚本   二、常用的字段解释    1.整体结构    2.function_score     2.1.qu

    2024年02月06日
    浏览(10)
  • 关于信贷评分卡模型,看这篇就够了!

    关于信贷评分卡模型,看这篇就够了!

    风险并不是所有人都能轻松看到,信贷公司同样如此。 8月4日下午15:00,顶象研发总监就评分卡模型展开分享,详细介绍了评分卡模型的原理、评分卡模型的构建过程、评分卡模型的开发投产以及顶象的评分卡模型实践。 评分卡模型原理 通常来说,我们把贷款分为抵押贷款

    2024年02月12日
    浏览(10)
  • Redis基础命令汇总,看这篇就够了

    Redis基础命令汇总,看这篇就够了

    本文首发于公众号:Hunter后端 原文链:Redis基础命令汇总,看这篇就够了 本篇笔记将汇总 Redis 基础命令,包括几个常用的通用命令,和各个类型的数据的操作,包括字符串、哈希、列表、集合、有序集合等在内的基本操作。 以下是本篇笔记目录: 通用命令 字符串命令 哈希

    2024年02月04日
    浏览(9)
  • 倾向得分匹配只看这篇就够了

    倾向得分匹配只看这篇就够了

    倾向得分匹配模型是由Rosenbaum和Rubin在1983年提出的,首次运用在生物医药领域,后来被广泛运用在药物治疗、计量研究、政策实施评价等领域。倾向得分匹配模型主要用来解决非处理因素(干扰因素)的偏差。 ‍1、基本原理——反事实推断 基本原理是 :根据处理组的特征,

    2024年02月05日
    浏览(10)
  • 自学黑客(网络安全)看这篇就够了

    自学黑客(网络安全)看这篇就够了

    写了这么多编程环境和软件安装的文章,还有很多小伙伴在后台私信说看不懂。我都有点头疼了,但是小伙伴们求学的心情我还是能理解,竟然这么多人给我反馈了,那我就再写一篇网络安全自学的教程吧!大家耐心看完,后面有惊喜。 一、自学网络安全的误区和陷阱 1.不要

    2024年02月06日
    浏览(13)
  • TensorBoard最全使用教程:看这篇就够了

    TensorBoard最全使用教程:看这篇就够了

    机器学习通常涉及在训练期间可视化和度量模型的性能。 有许多工具可用于此任务。 在本文中,我们将重点介绍 TensorFlow 的开源工具套件,称为 TensorBoard,虽然他是TensorFlow 的一部分,但是可以独立安装,并且服务于Pytorch等其他的框架。 TensorBoard 是一组用于数据可视化的工

    2024年01月17日
    浏览(21)
  • Linux ps命令详解,看这篇就够了

    Linux ps命令详解,看这篇就够了

    ps 是一个在 Unix 和 Linux 系统中常用的命令,用于查看当前运行的进程的状态。 -e :显示所有进程。 -f :全格式显示。 -l :长格式显示。 -a :显示终端上的所有进程,包括其他用户的进程。 -u :显示进程的详细状态。 -x :显示没有控制终端的进程。 -T :显示当前线程的层

    2024年03月20日
    浏览(13)
  • Java NIO全面详解(看这篇就够了)

    Java NIO全面详解(看这篇就够了)

    很多技术框架都使用NIO技术,学习和掌握Java NIO技术对于高性能、高并发网络的应用是非常关键的@mikechen NIO 中的 N 可以理解为 Non-blocking,不单纯是 New,是解决高并发、I/O高性能的有效方式。 Java NIO是Java1.4之后推出来的一套IO接口,NIO提供了一种完全不同的操作方式, NIO支持

    2024年04月27日
    浏览(9)
  • 纯小白如何进入游戏行业?看这篇就够了!

    纯小白如何进入游戏行业?看这篇就够了!

    游戏行业 一直都是一个非常 受欢迎的高薪行业 (高薪行业排名TOP.2) ,前景无量,市场广阔,发展迅速。 特别是在近年的 疫情大环境 下,游戏市场更加展现出了势头猛冲的劲儿。 潜力代表企业一览 数据来源:财经十一人 全球游戏市场玩家规模逐年稳步上升 ,游戏行业

    2024年02月10日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包