本人老是被网上的教程绕得云里雾里,所以觉得有必要写下一篇文章当做笔记供之后参考。
参考文章1:显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? - 知乎 (zhihu.com)
参考文章2:Pytorch 使用不同版本的 cuda - yhjoker - 博客园 (cnblogs.com)
参考文章3:一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系-CSDN博客
(一)GPU or 显卡
1.显卡:就是我们说的GPU,就是指的 硬件
2.显卡驱动:基本就是NVIDIA driver , 就是指的 软件
(二)CUDA
1.我的初步理解是:CUDA - Compute Unified Device Architecture,其实就是专门为GPU设计用来编程的底层的调用模型——就是可以做更多的并行计算。
(三)cuDNN
1.这个其实就是一个专门为深度学习计算设计的软件库,里面提供了很多专门的计算函数,如卷积等。从上图也可以看到,还有很多其他的软件库和中间件。
(四)CUDATookit
1.首先,nvcc其实就是NVIDIA CUDA Compiler Collection,也就是英伟达的编译器集合,类似于gcc就是c语言的编译器。
cuda程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc
编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。
2.nvcc --version和nvidia-smi可能会出现cuda版本不同?(先不管这个)
3.CUDA Toolkit主要包含以下组件:
(1)Compiler
(2)CUDA driver:运行CUDA应用程序的两个基本要求--具有CUDA功能的GPU + 兼容CUDA工具的驱动程序
(3)其他