CUDA和cuDNN
以前的显卡只能用作显示,后来nVidia为它的显卡开发了一套接口,叫CUDA,开发人员就能通过调用该接口实现使用GPU做计算
cuDNN是一个专门为深度学习开发的库。它里面包含了卷积计算、偏导计算等深度神经网络需要的计算库。它是以CUDA为基础的(注:为了更极致的优化,它可能使用更底层的接口)
可以这么理解:显卡就是一个计算器,CUDA就是上面 “+”、“-”、“*”、“/” 四个基本的运算按钮,cuDNN就是在计算器上又新增了 “^n”、“n!”、“ln” 等运算按钮。虽然它们是新增的,但它们本质上都是对加减乘除的组合运算
事实上,所谓的cuDNN的安装,也不过是将一些cuDNN相关的库文件复制到CUDA的安装目录下。很类似于在某个插件库中添加一个插件的过程。
CUDA、CUDA driver和CUDA Toolkit
CUDA一般其实指的是 CUDA runtime API(下文有介绍)
CUDA driver指的就是支持了CUDA指令集的显卡驱动(个人理解)。
类比java:CUDA相当于jre,cudaToolkit相当于jdk。cudaToolkit中包含了CUDA driver,同时也包含了其他一些东西,例如CUDA的编译器nvcc。cudaToolkit的版本和CUDA的版本一一对应(个人理解)
注:安装pytorch时也可能会安装一个cudatoolkit的包,它相当于nVidia提供的cuda toolkit的子集。它里面不包含CUDA driver。这也就意味着使用conda安装的cudatoolkit的版本需大于等于本地的CUDA driver的版本
这里有篇文章说的很详细:显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
加上这篇文章:CUDA环境详解
CUDA Liberaries、CUDA Runtime API、CUDA Driver API
三者是层层封装的关系,CUDA Driver API 是对GPU硬件的抽象,原则上可以直接使用该API进行开发,但实际操作较难,Runtime API则是对其的封装,使用该API开发相对简单,而Liberaries则是对Runtime API的进一步封装,使得开发更加容易,三者都有自己的版本。上层API的版本应不小于下层的版本
Driver API 是随着显卡驱动一起安装的,其中就包含了 nvidia-smi 命令,故只要安装了显卡驱动就能使用该命令
参考:https://cloud.tencent.com/developer/article/1496697
为什么没有安装CUDA还是能用pytorch调用GPU
Runtime API 是随着CUDA Toolkit一起安装的,虽然Runtime API基于Driver API,但它也是可以单独安装的。故即使你本地没有安装显卡驱动,也是可以安装CUDA Toolkit的(但有时显卡驱动也会随着该Toolkit一起安装)。该Toolkit中就包含CUDA的编译器nvcc
参考:https://www.zhihu.com/question/378419173/answer/2382489868
CUDA 是一种编程语言吗?
引自官网:https://www.nvidia.cn/geforce/technologies/cuda/faq/
“CUDA 是我们用于 GPU 计算的架构,能在 GPU 上运行标准 C 语言。为实现这一点,NVIDIA 定义了一套通用计算指令集 (PTX) 和一小部分C语言扩展集,从而让开发者充分利用我们 GPU 中强大的并行计算能力。Portland Group 为 NVIDIA CUDA 架构上的 Fortran 提供支持,而其它一些公司则为 Java、Python、.NET 等其它语言提供支持。
我们用术语 “CUDA C” 来描述开发者指定 GPU 上要执行的功能、GPU 内存如何使用、应用程序如何使用 GPU 的并行处理功能所使用的语言和一小部分扩展集。
NVIDIA 的 C 语言编译器是使用 Edison Design Group C 语言分析器及 Open64 编译器构建的,并且它进行了扩展以支持 CUDA C 扩展。很多CPU公司在他们的编译器中都广泛使用 EDG 分析器和 Open64 编译器。”
CUDA和nvcc
nvcc是cuda的编译器,类似javac或者gcc
win10安装CUDA
官方教程:https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
1. 检查gpu是否可用cuda
2. 下载CUDA Toolkit安装包
下载地址:https://developer.nvidia.com/cuda-downloads
选择相应的系统版本,点击下载
3. 下载完成后安装
我这里选择精简安装
默认安装到如下路径
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7
同时,它也会给你设置好环境变量 CUDA_PATH

4. 验证
命令行输入 nvcc -V 查看是否有正确输出
