windows安装CUDA/cuDNN

2023-11-10

零、安装包的官方链接

1.CUDA Toolkit Archive:https://developer.nvidia.com/cuda-toolkit-archive
2.torch:https://download.pytorch.org/whl/torch_stable.html

一、参考链接

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

0.概念区别

1.要安装Pytorch的二进制文件,至少需要使用两个支持的软件宝管理器中的一个:Anaconda和pip。安装了Python,pip将已经为你安装好了。
2.CUDA driver version is insufficient for CUDA runtime version
在这里插入图片描述
3.CUDA有两个主要的API:runtime(运行时) API和driver API。这两个API都有对应的CUDA版本(如9.2和10.0等)。

  • 用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。
  • 用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。(CUDA Toolkit Installer有时可能会集成了GPU driver Installer)。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本。它不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。

综上,如果driver API和runtime API的CUDA版本不一致可能是因为你使用的是单独的GPU driver installer,而不是CUDA Toolkit installer里的GPU driver installer。

3.系统安装的cuda和虚拟环境中安装的cuda的区别

  • Anaconda在安装Pytorch时,会同时用户安装cudatoolkit,如命令conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch,其主要包含应用程序在使用CUDA相关的功能时所依赖的动态链接库。conda安装只会安装一些计算库,不会安装编译工具。而官方的cuda包包含的东西会完整一些。
  • 使用 Anaconda 安装的 CUDA Toolkit 不位于 lib64 路径中,也不会产生冲突
  • CUDA Toolkit本地安装包(local)内含特定版本Nvidia显卡驱动的,当在CUDA官网下载CUDA Toolkit后进行安装时会让用户选择安装项。
  • 如果想安装其他版本的显卡驱动,则就需要在Nvidia官网自己下载并先安装好(或本机已经安装了合适版本的显卡驱动时),最后在安装CUDA Toolkit时取消安装内置版本的Nvidia显卡驱动。

4.注意
如果项目代码需要使用python setup.py develop或./make.sh来编译依赖cuda的torch模块(如C语言脚本)时候,这个时候可能会导致错误,错误原因是编译过程使用的是系统自带的CUDA而不是conda安装的CUDA包,当系统自带CUDA版本不支持项目代码时,会引发一些奇怪的问题,所以最好的办法是保持conda安装的cudatoolkit版本与系统自带版本(nvcc -V查看)一致
那么可能就有人要问了,“不能编译的时候调用conda安装pytorch时附带安装的cudatoolkit吗?”答案是往往不行,因为conda只安装上了部分动态链接文件,只占Nvidia官方CUDA的一小部分,且没有安装开发工具包和驱动程序,而往往编译过程需要依赖其他头文件等,conda安装的cudatoolkit不具备这些头文件等,故不行。

5.Pytorch寻找可用cuda的过程
调用哪个 cuda 库要看生成 tensorflow / pytorch 库的时候,设置的链接库寻找目录,以 pytorch 为例,项目根目录下的 setup.py 中指定链接库的搜索目录,其中 cuda 的根目录 CUDA_HOME在 tool.setup_helpers.cuda 中有获取逻辑,大概过程是:

  • 先取默认 cuda 安装目录 /usr/local/cuda
  • 如默认目录不存在(例如安装原生 cuda 到其他自定义位置),那么搜索 nvcc 所在的目录
  • 如果 nvcc 不存在,那么直接寻找 cudart 库文件目录(此时可能是通过 conda 安装的 cudatoolkit,一般直接用 conda install cudatoolkit,就是在这里搜索到 cuda 库的),库文件目录的上级目录就作为 CUDA_HOME。
  • 如果最终未能得到 CUDA_HOME,那么生成的 pytorch 将不使用 CUDA。

6.Anaconda系列:conda是什么?conda与pip的区别是什么?

1.环境配置

1.https://zhuanlan.zhihu.com/p/99880204
2.CUDA安装教程(超详细)(√windows下的安装可参考)
3.3080深度学习环境配置(可参考)
4.Ubuntu 20.04配置cuda-toolkit-11-4以及cuDNN一遍过(可参考)
5.Windows/Ubuntu下查看显卡,驱动,cuda,cudnn版本
6.conda虚拟环境中安装cuda和cudnn,再也不用头疼版本号的问题了
7.永不过时的Ubuntu/Win10 cuda安装配置方法
8.深度学习笔记——cuda、cudnn、pytorch安装
在这里插入图片描述

一个比较新的安装教程系列

深度学习环境搭建(一)之 Ubuntu 安装
深度学习环境搭建(二)之 CUDA Driver 安装
深度学习环境搭建(三)之 CUDA安装
深度学习环境搭建(四)之 CUDNN安装

2.概念解释

1.理清GPU、CUDA、CUDA Toolkit、cuDNN关系以及下载安装
2.显卡、显卡驱动、Nvcc、Cuda Driver、CudaToolkit 、Cudnn到底是什么?
3.CUDA、CUDNN、CUDA Driver、CUDA Toolkit、NCVV的区别?
4.conda安装的cudatoolkit, cudnn与在主机上安装的cuda, cudnn有何关系?
5.了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV),以及CUDA安装教程
6.Pytorch 使用不同版本的 cuda(解释了cuda和cudatoolkit的区别,并且Pytorch 确定所使用的 cuda 版本)
7.一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系
在这里插入图片描述

8.虚拟环境中cuda版本与系统cuda版本不同有什么影响
9.显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
内存的形状一般是一个长方形的集电电路,底部有很多焊点。它的特点是存取速率快。内存是电脑中的主要部件,是相对于外存而言的,平常使用的程序,如Windows操作系统,打字软件,游戏软件等,通常都是安装在硬盘等外存上的,我们在运行这个软件时必须把它们调入内存中运行,目的就是为了运行速度更快。

内存是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。

二、GPU、CUDA、CUDA Toolkit、cuDNN的关系

NVIDIA系列显卡做深度学习,需要在宿主机安装显卡驱动(driver),需要在docker中安装英伟达的科学计算库(cuda),在python中安装深度学习库(我主要用pytorch),driver依赖显卡,cuda依赖driver,pytorch依赖cuda,于是就会有一些版本依赖问题.

1.GPU

就是平时我们所说的显卡,大多数电脑使用NVIDIA公司生产的显卡。

2.什么是CUDA?

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

3.显卡驱动

显卡驱动是显卡跟计算机连接的桥梁,可以让计算机识别到GPU硬件,是必须正确安装的,不同厂商、不同型号的GPU对应不同的显卡驱动。
NVIDIA Driver,其实它就是一个NVIDIA显卡驱动软件。NVIDIA CUDA Driver包含在驱动程序中,通过它可以找到对应的CUDA版本。

什么是CUDA Driver?

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

4.CUDA Toolkit

(1)第一部分解释(看第一部分即可):
CUDA Toolkit 就是Nvidia 官方提供的一个完整的工具安装包,其中提供了Nvidia 驱动程序、开发CUDA 程序相关的开发工具包等可供安装的选项。

使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。但对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。故而,Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装 cudatoolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。在安装了 cudatoolkit 后,只要系统上存在与当前的 cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit 。

(2)第二部分解释:
CUDA Toolkit 就是Nvidia 官方提供的一个完整的工具安装包,其中提供了Nvidia 驱动程序、开发CUDA 程序相关的开发工具包等可供安装的选项。

CUDA Toolkit由以下组件组成:

  • Compiler: CUDA-C和CUDA-C++编译器NVCC位于bin/目录中。它建立在NVVM优化器之上,而NVVM优化器本身构建在LLVM编译器基础结构之上。希望开发人员可以使用nvm/目录下的Compiler SDK来直接针对NVVM进行开发。
  • Tools: 提供一些像profiler,debuggers等工具,这些工具可以从bin/目录中获取
  • Libraries: 下面列出的部分科学库和实用程序库可以在lib/目录中使用(Windows上的DLL位于bin/中),它们的接口在include/目录中可获取。
    • cudart: CUDA Runtime
    • cudadevrt: CUDA device runtime
    • cupti: CUDA profiling tools interface
    • nvml: NVIDIA management library
    • nvrtc: CUDA runtime compilation
    • cublas: BLAS (Basic Linear Algebra Subprograms,基础线性代数程序集)
    • cublas_device: BLAS kernel interface
  • CUDA Samples: 演示如何使用各种CUDA和library API的代码示例。可在Linux和Mac上的samples/目录中获得,Windows上的路径是C:\ProgramData\NVIDIA Corporation\CUDA Samples中。在Linux和Mac上,samples/目录是只读的,如果要对它们进行修改,则必须将这些示例复制到另一个位置。
  • CUDA Driver: 运行CUDA应用程序需要系统至少有一个具有CUDA功能的GPU和与CUDA工具包兼容的驱动程序。每个版本的CUDA工具包都对应一个最低版本的CUDA Driver,也就是说如果你安装的CUDA Driver版本比官方推荐的还低,那么很可能会无法正常运行。CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。通常为了方便,在安装CUDA Toolkit的时候会默认安装CUDA Driver。在开发阶段可以选择默认安装Driver,但是对于像Tesla GPU这样的商用情况时,建议在官方安装最新版本的Driver。
  • CUDA Toolkit和CUDA Driver版本的对应情况,参考官方Release Notes :: CUDA Toolkit Documentation:

5.NVCC

NVCC就是CUDA的编译器,可以从CUDA Toolkit的/bin目录中获取,类似于gcc就是c语言的编译器。由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。

5.cuDNN

cuDNN的全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络中的基础操作而设计基于GPU的加速库。cuDNN为深度神经网络中的标准流程提供了高度优化的实现方式,例如convolution、pooling、normalization以及activation layers的前向以及后向过程。

6.conda安装的cudatoolkit, cudnn与在主机上安装的cuda, cudnn有何关系?在这里插入图片描述

三、安装验证的截图

1.验证CUDA是否安装成功

在这里插入图片描述
运行cmd,输入nvcc --version 或者nvcc -V 即可查看版本号;

set cuda,可以查看 CUDA 设置的环境变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows安装CUDA/cuDNN 的相关文章

随机推荐

  • ros系统设置动态服务器,让ROS变成你量身定做的WEB服务器

    如何用ROS来做一台简单的WEB服务器 我也提供了一些思路 但都太过于复杂 难以实用 介绍一种比较简单的修改方法 把HTTP目录链接到FTP目录下 不就可以很方便的修改了吗 试验 马上行动测试一下 1 关闭ROS 我的是学习用的 可一说关就
  • 15、OpenCV形态学操作——Hit-or-Miss

    OpenCV形态学操作 Hit or Miss 一 学习目标 二 Hit or Miss 一 学习目标 理解什么是Hit or Miss 学会在OpenCV中使用Hit or Miss 二 Hit or Miss 形态学算子根据图像的形状来
  • ceph集群部署

    一 ceph特点高性能 1 摒弃了传统的集中式存储元数据寻址的方案 采用CRUSH算法 数据分布均衡 并行度高 2 考虑了容灾域的隔离 能够实现各类负载的副本放置规则 例如跨机房 机架 感知等 3 能够支持上千个存储节点的规模 支持TB到P
  • vue上线项目去除所有console.log打印日志

    第一步 安装 babel plugin transform remove console 开发依赖 方法一 npm i babel plugin transform remove console save dev 方法二 第二步 在babe
  • 【数据库MySql】数据库基础——库和表的基础操作

    数据库学习大纲 1 SQL编程语言的语法 核心 2 数据库内部原理 面试题 3 使用java代码操纵数据库 JDBC编程 SQL是一个专门用来操作数据库数据的编程语言 MySQL服务器里面里有很多个数据库 这些是逻辑上的数据集合 一个数据库
  • CSAPP-BinaryBomb实验

    目录 一 实验目的与要求 二 实验原理与内容 三 实验过程与结果 1 程序编码 汇编 2 拆解过程 Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 6 Secret phase 一 实验目的与要求
  • IOException parsing XML document from class path resource [applicationContext.xml]

    在spring框架搭建的时候 有的时候会出现这样错误 在网上看到说把路径具体指向 例如
  • ESP8266WIFI模块连接原子云及手机APP

    一 项目需求 使用ESP8266WIFI模块连接到正点原子的原子云 下载原子云手机APP到安卓手机 使用APP与8266WIFI模块通信互发数据 二 软硬件准备 硬件 1 正点原子的esp8266模块 2 usb to ttl 模块 软件
  • 详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象 并且基于K8s实现了一个初步的CI CD流程 但对里面涉及的各个对象 如Namespace Pod Deployment Service Ingress PVC等 及各对象的管理可能还缺乏深
  • 云计算、大数据、人工智能的区别

    一 什么是人工智能 通俗来说 利用计算机及其相关设备来模拟和实现人类或者是智能生物的思想和行为 从而达到更彻底地代替人类进行生产活动 就是人工智能 人工智能有很多学派和技术路线 多以数学理论为工具 比如统计学 线性代数和概率论等 它聚焦于解
  • ENVI5.1 进行监督分类流程化工具时(classification workflow)界面显示不全的问题解决办法

    在使用ENVI5 1进行监督分类流程化工具时 classification workflow 会存在界面显示不全的如下问题 需要下载ENVI5 1的一个界面补丁 补丁下载链接 https pan baidu com s 1DHqd6wHDI
  • 数据库、sql、语句表、存储引擎、集成开发工具讲解、MySQL中的数据类型

    一 2 为什么要学习数据库 2 1上述技术适合小量数据 对于大量数据操作 性能低下 2 2上诉技术存储数据的技术有java语言提供 不够专业 3 数据库概述 3 1核心 数据管理 3 2方式CRUD 1 存 增删改 2 取 查 查所有 指定
  • 时间序列的分析及滚动预测代码

    注意 参考地址http www cnblogs com foley p 5582358 html 部分代码可能因为版本问题出现bug 什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列 时间序列分析就是通过观察历史数据预测未来的值
  • Android开发基础

    基本知识 Android 是一个面向移动设备的软件堆层 包含了一个操作系统 中间件和关键的应用程序 每个 Android 应用程序都通过 Dalvik 虚拟机在自己的进程中运行 Android 应用程序是用 java 语言写的 通过 aap
  • vb.net 随窗口改变,缩放控件大小以及保持相对位置

    Public Class Form1 Dim originClienSize As Size Nothing Dim originBtnSize As Size Dim originBtnPos As Point Private Sub F
  • 【目标检测】12、TOOD: Task-aligned One-stage Object Detection

    文章目录 一 背景 二 动机 三 方法 3 1 Task aligned Head 3 2 Task Alignment Learning 3 2 1 Task aligned sample assignment 3 2 2 Task al
  • 宝塔忘记密码了咱们办?找回宝塔密码

    很多朋友使用宝塔管理自己的服务器 但是有时改完密码不小心忘记保存 自己点忘记密码找回时发现了一大堆让技术小白看的懵逼的教程 其实不用那么麻烦 下面我就给大家说一个只要一分钟就能立即找回你宝塔面板密码的方法 要记住我们千万不要去点击右下方的忘
  • 【程序语言】-- 编程语言分类和应用

    系列文章目录 文章目录 系列文章目录 前言 一 编程语言有哪些 二 应用概况 1 Python 2 Java 3 C C 4 JavaScript 5 Golang 6 R 7 Swift 8 PHP 9 C 9 MATLAB 总结 前言
  • qt项目中连接sqlserver数据库失败

    原因sqlserver网络配置中的TCP IP协议被禁用 开启之后电脑重启即可正常连接
  • windows安装CUDA/cuDNN

    零 安装包的官方链接 1 CUDA Toolkit Archive https developer nvidia com cuda toolkit archive 2 torch https download pytorch org whl