CUDA
CUDA(Compute Unified Device Architecture)是由NVIDIA公司推出的一个并行计算平台和编程模型,它允许开发者使用NVIDIA GPU进行通用计算(即GPGPU),从而加速各种计算密集型任务。CUDA提供了一套基于C/C++的编程语言扩展,使得开发者能够编写在GPU上运行的代码,利用GPU的并行处理能力来提升程序性能。
CUDA的架构包括多个核心概念,如线程、线程块、网格以及内存模型。线程是CUDA中最小的执行单位,线程块是一组线程的集合,它们可以共享数据和同步操作。网格则是由多个线程块组成,用于执行大规模的并行计算任务。CUDA的内存模型包括全局内存、共享内存、常量内存和纹理内存,它们各自有不同的访问速度和用途。
NVIDIA发布的CUDA Toolkit 12.0,这是多年来的第一个主要版本,它支持NVIDIA Hopper和Ada
Lovelace架构的新功能,并提供了新的编程模型和性能优化。此外,CUDA Toolkit 12.2也已发布,引入了对NVIDIA Hopper(H100)GPU的支持,以及异构内存管理(HMM)等新特性。
CUDA技术在科学计算、大数据分析、机器学习和图形处理等领域有广泛应用。例如,在深度学习领域,CUDA与TensorFlow、PyTorch等深度学习框架深度整合,提供了高效的计算加速。
CUDA安装步骤
-
查看本机设备NVIDIA显卡对应的驱动版本和CUDA版本,PowerShell中输入命令
nvidia-smi
;可以看到驱动Driver和CUDA的版本;或者利用NVIDIA控制面板 按照系统信息->组件->NVCUDA64.DLL
查看详细CUDA版本;
-
确定本机设备显卡的算力:https://developer.nvidia.com/cuda-gpus;可以看到本机设备显卡3060的计算算力为8.6;
-
安装CUDA Toolkit:https://developer.nvidia.com/cuda-toolkit-archive;选择本机设备显卡需要的CUDA Toolkit版本下载;
-
按照下图的
1-2-3-4-5
的顺序点击,进行下载;
-
点击下载好的的 exe 进行安装;
-
默认路径即可,此时是临时数据;
-
进入安装界面,选择继续;
-
选择自定义安装,全选;
- 确定安装路径,进行安装;
- 安装结束;
- 验证是否安装成功,PowerShell输入命令:
nvcc -V
,返回如下即表示安装成功。
cuDNN
cuDNN(CUDA Deep Neural Network library)是NVIDIA推出的一个深度学习加速库,它为深度神经网络提供了高度优化的GPU加速原语。cuDNN特别针对深度学习中常见的操作进行了优化,如前向和后向卷积、池化层、归一化和激活层等,从而大幅提升了深度学习模型训练和推理的性能。
cuDNN的主要特点包括:
- Tensor Core加速:支持多种卷积操作的Tensor Core加速,包括2D卷积、3D卷积、分组卷积、深度可分离卷积等。
- 运行时融合:通过新的运算符、启发式算法和融合迅速编译内核,提高了内存和计算效率。
- 多精度支持:支持FP32、FP16、BF16和TF32浮点格式以及INT8和UINT8整数格式,允许开发者根据需要选择不同的精度和性能平衡。
- 灵活的API:提供了C API和开源的C++前端API,方便用户使用。
- 广泛的框架支持:与多个流行的深度学习框架集成,如TensorFlow、PyTorch、Caffe等。
cuDNN安装步骤
- 下载官网:https://developer.nvidia.com/cudnn-downloads
- 按照
1-2-3-4-5
的步骤点击选择,进行下载;
- 解压下载下来的压缩包,里面有include 、lib 、bin 三个文件夹和LICENSE文件;
- 将下载文件解压后放换到NVIDIA GPU Tookit (
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3
)里对应的目录bin 、include 、lib 中。
(1)将下载下来的cudnn中bin
文件拷贝到NVIDIA GPU Tookit的bin
中。
(2)将下载下来的cudnn中include
文件拷贝到NVIDIA GPU Tookit的include
中。
(3)将下载下来的cudnn中lib\x64
中文件拷贝到NVIDIA GPU Tookit目录x64\lib
中。
- 验证 安装是否成功:
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\extras\demo_suite>"
,然后分别运行里的bandwidthTest.exe
和deviceQuery.exe
,有PASS 即代表成功。