零、安装包的官方链接
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 设置的环境变量。