Nvidia显卡在深度学习应用中一些概念解释

news2024/11/22 16:35:36

之前一直在搞深度学习,最近又想着安装一下mamba试一下效果,可以配置环境就花了好长时间,主要还是一些概念没有弄明白,这里记录一下,方便以后查阅。

Nvidia显卡在深度学习应用中一些概念解释

  • 显卡中一些名词的解释
    • CUDA Driver
    • CUDA
    • cuDNN
    • CUDA Toolkit
    • NCVV
  • nvidia-smi 与 nvcc -V

显卡中一些名词的解释

CUDA Driver

这个就是常说的显卡驱动,比如我的电脑显卡型号是:GTX 3090,显卡驱动程序的版本:510.108.03。

在这里插入图片描述

每个版本的CUDA工具包都对应一个最低版本的CUDA Driver,也就是说如果你安装的CUDA Driver版本比官方推荐的还低,那么很可能会无法正常运行。

CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。

CUDA Toolkit 和 CUDA Driver 版本的对应情况如下:

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

在这里插入图片描述

CUDA

CUDA 英文全称是Compute Unified Device Architecture,是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

cuDNN

官网地址:https://developer.nvidia.com/rdp/cudnn-archive

cuDNN 是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。可以集成到高级的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的caffe框架、Facebook的PyTorch框架等等。

  • cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算;
  • CUDA这个平台一开始并没有安装cuDNN库,当开发者们需要用到深度学习GPU加速时才安装cuDNN库,工作速度相较CPU快很多。

CUDA与cuDNN的关系是什么呢?

CUDA看作是一个工作台,cuDNN相当于工作的工具,比如它就是个扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

CUDA Toolkit

官网地址:https://developer.nvidia.com/cuda-toolkit-archive

CUDA Toolkit 就是Nvidia 官方提供的一个完整的工具安装包,其中提供了Nvidia 驱动程序、开发CUDA 程序相关的开发工具包等可供安装的选项。

使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。

对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。

故而,Anaconda 在安装 Pytorch 等使用到 CUDA 的框架时,会自动为用户安装 CUDA Toolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。

在安装了 CUDA Toolkit 后,只要系统上存在与当前的 CUDA Toolkit所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit

NCVV

nvcc就是CUDA的编译器,可以从CUDA Toolkit的/bin目录中获取,类似于gcc就是c语言的编译器。

由于程序是要经过编译器编程成可执行的二进制文件,而CUDA程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。

nvidia-smi 与 nvcc -V

  • nvidia-smi显示的CUDA版本: 这代表了你的NVIDIA驱动内置支持的CUDA版本。这是驱动程序级别的支持,主要影响的是GPU的识别和基础驱动层面的CUDA兼容性。

  • nvcc -V显示的CUDA Toolkit版本: 这代表了安装在你的系统上的CUDA Toolkit的版本。CUDA Toolkit包括了开发和运行CUDA应用所需的编译器、库和工具。

当使用PyTorch或其他依赖CUDA的库时,库的运行时会与CUDA Toolkit进行交互,而不是直接与驱动程序内的CUDA版本交互。这意味着,只要CUDA Toolkit的版本与你使用的库兼容,并且NVIDIA驱动足够新以支持该版本的CUDA Toolkit(在你的情况下,驱动支持CUDA 12.2,因此也会支持11.8),就可以正常使用。

因此,即使nvidia-smi显示为CUDA 12.2,只要你安装了CUDA Toolkit 11.8,并且使用的PyTorch版本是为CUDA 11.8编译的,就不应该有兼容性问题。
确保你的环境变量(如PATH和CUDA_HOME)正确指向CUDA Toolkit 11.8的安装位置,这样PyTorch和其他依赖CUDA的应用程序就可以正确找到并使用它。

总结一下,只要确保以下几点,你就可以在CUDA 11.8环境下正常使用PyTorch:

  • NVIDIA驱动兼容CUDA 11.8(即支持的CUDA版本高于或等于11.8)。
  • 系统安装了CUDA Toolkit 11.8。
  • 使用的PyTorch版本是针对CUDA 11.8编译的。
  • 环境变量正确设置,以便软件能找到正确的CUDA Toolkit版本。

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

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

相关文章

ZooKeeper集群环境部署

1. ZooKeeper安装部署 1.1 系统要求 1.1.1 支持的平台 ZooKeeper 由多个组件组成。一些组件得到广泛支持,而另一些组件仅在较小的一组平台上得到支持。 客户端是 Java 客户端库,由应用程序用于连接到 ZooKeeper 集群。 服务器是在 ZooKeeper 集群节点…

服务器主要有什么用途?什么情况下需要服务器?

服务器主要用于在网络中提供各种服务和资源。它们是现代信息技术基础设施的核心组成部分,用于存储、处理和管理数据,并为客户端设备(如个人电脑、移动设备等)提供所需的服务。以下是服务器的一些主要用途: 文件共享与存…

shell 三剑客-sed

sed 是Linux 系统一款非常强大的非交互式的文本编辑器,可以对文本进行增删改查操作,正则匹配文本内容。适合大文件编辑 sed 语法 sed 选项 ‘指令’ 文件 sed 选项 -f 包含sed指令的文件 文件 常用参数 -i:直接修改文件内容,而不…

用R语言运用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演…

普通人看清房价走势的简单方法

研究了很多宏观方面的房价影响因素,还是很容易被看空和看多的房地产文章左右,也容易受到各种影响。 针对普通人而言,想要看清房价走势非常简单的一个方法, 你就看看你的工作状态【或者身边找工作的人多不多】 当你能挑工作的时…

老友记台词 第一季 第十三集 Friends 113(全英版)

文章目录 113 The One With the Boobies[Scene: Monica and Rachels, Chandler walks in and starts raiding the fridge. Then Rachel comes out of the shower with a towel wrapped round her waist, drying herself with another towel. Chandler and Rachel startle each …

CSC5613C 同步降压DC/DC

CSC5613C是一款同步降压型的DCDC变换器 IC,其输入电压为8~30V,具有良好的瞬态响应和环路稳定性。CSC5613C外围元器件极少,具有线补、过流保护和热保护功能。可通过调节FB电阻比例,来调整输出电压可用于快充。CSC5613C带载启动电流与其最大输出…

地下管线三维建模工具MagicPipe3D V3.5.2发布

经纬管网建模系统MagicPipe3D,本地离线参数化构建地下管网三维模型(包括管道、接头、附属设施等),输出标准3DTiles、Obj模型等格式,支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析&…

WPF窗体动态效果

在浏览网页的时候,发现现在很多网页都采用这种效果。看起来很炫。 效果如下: 已经实现很久了,一直没写出来。今天突然想到,写出来分享一下 原理比较简单,就是在Window里面放一个MediaElement控件,播放视频…

shell命令行解释器—既陌生有熟悉的东西

今天做一个感性的认识来,用一个生活的例子。 你生活在有一条村子里面,在村的东边就是王婆,王婆呢?她主要做什么呢啊?她在村儿里面呢,也不种地啊,那她干什么呢?他主要做帮别人进行婚嫁…

人工智能时代,网络安全公司F5如何提高防护效能?

随着AI推动的应用和API数量迅速增长,企业面临着日益严峻的安全挑战,亟需采取有效措施来应对。AI正将数字体验推向一个全新的高度,它通过分布式部署数据源、模型和服务在企业内部、云端和边缘计算环境中,并依靠不断扩展的API网络实…

旋转字符串 | LeetCode-796 | 模拟 | KMP | 字符串匹配

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 🕹️KMP算法练习题 LeetCode链接:796. 旋转字符串 文章目录 1.题目描述🍑2.题解🫐2.1 暴力解法🫒2.2 模拟…

Go调度器

线程数过多,意味着操作系统会不断地切换线程,频繁的上下文切换就成了性能瓶颈.Go提供一种机制 可以在线程中自己实现调度,上下文切换更轻量,从而达到线程数少,而并发数并不少的效果,而线程中调度的就是Goroutine 调度器主要概念: 1.G:即Go协程,每个go关键字都会创建一个协程…

opencv基础的图像操作

1.读取图像,显示图像,保存图像 #图像读取、显示与保存 import numpy as np import cv2 imgcv2.imread(./src/1.jpg) #读取 cv2.imshow("img",img) #显示 cv2.imwrite("./src/2.jpg",img) #保存 cv2.waitKey(0) #让程序进入主循环(让…

Kubernetes/K8s集群1.23.6搭建

1 集群规划 HostnameIP角色centos702192.168.131.102mastercentos704192.168.131.104nodecentos705192.168.131.105node 2 安装步骤 初始操作和安装基础软件每个节点都要执行。 2.1 初始操作 2.1.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld2.1.…

单元训练06:独立按键的扩展应用

蓝桥杯 小蜜蜂 #include "stc15f2k60s2.h"// 定义LED打开 #define LED(x) \{ \P0 x; \P2 P2 & 0x1f | 0x80; \P2 P2 & 0x1f; \}// 以位数来定义第1、2至6个灯,注意&#xff…

发两张Pop!_OS 24.04-alpha版本截图

发两张Pop!_OS 24.04-alpha版本截图

《Linux运维总结:基于x86_64架构CPU使用docker-compose一键离线部署etcd 3.5.15容器版分布式集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、部署背景 由于业务系统的特殊性,我们需要面对不同的客户部署业务系统&#xff0…

flink文档刨析

flink任务运行方式 flink任务提交方式有3种 session、per-job、application三种 flink任务运行底座也有三种,Standalone、yarn、k8s 原则上一个flink任务运行的方式由3*39种,但是有些是没法搭配的 yarn:包括yarn-session 、yarn-per-job 、…

vue2+OpenLayers 天地图上凸显出当前地理位置区域(4)

凸显出当前区域 需要当前地方的json数据 这个可以在阿里的这个阿里 看下效果图 遮盖层的逃命都是可以调的 引入 下面一段代码 import sx from "/views/json/sx1.json"; // 下载的json import GeoJSON from "ol/format/GeoJSON"; // ol的一些方法 imp…