摘要
开发者使用支持CUDA扩展的C/C++语言编写代码→nvcc编译→程序调用CUDA Runtime和cuDNN→GPU执行计算。
1. 核心组件定义与功能
1.1 CUDA
NVIDIA推出的并行计算平台和编程模型,提供GPU通用计算能力,支持C/C++扩展接口,管理GPU内存和线程调度。
1.2 CUDA Toolkit
完整的开发工具包,包含编译器(nvcc)、CUDA运行时库、数学库(cuBLAS)、调试工具等。
1.3 nvcc
CUDA编译器(NVIDIA CUDA Compiler),属于CUDA Toolkit的一部分,专门用于编译.cu文件(CUDA C/C++代码),生成GPU可执行的二进制文件。
1.4 cuDNN
深度学习加速库(CUDA Deep Neural Network library),依赖CUDA运行,提供高度优化的神经网络算子(如卷积、池化),被PyTorch/TensorFlow直接调用。
2. 组件层级关系
2.1 底层依赖架构
- 显卡驱动:操作系统与GPU硬件的桥梁
- CUDA平台:在驱动之上提供通用并行计算能力(如矩阵计算)
2.2 开发工具层
- CUDA Toolkit:包含开发所需的完整工具链
- nvcc:编译 CUDA 代码的核心工具。
- CUDA Runtime:管理 GPU 资源调度的运行时环境。
- 基础数学库:如 cuBLAS(线性代数)、cuFFT(傅里叶变换)。
2.3 专用加速层
- cuDNN:基于CUDA的深度学习专用加速库
3. 实际应用场景
3.1 多版本管理方案
全局管理
- Runfile 安装
通过 NVIDIA 官网下载.run
文件,安装时指定独立目录并跳过驱动安装:
sudo sh cuda_11.8.0_linux.run --silent --toolkit --toolkitpath=/usr/local/cuda-11.8 --no-symlink
sudo sh cuda_12.3.0_linux.run --silent --toolkit --toolkitpath=/usr/local/cuda-12.3 --no-symlink
- 切换方式
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 100
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.3 50
sudo update-alternatives --config cuda # 选择版本编号
Conda 环境隔离
- 为每个项目创建独立环境,直接安装特定版本 CUDA Toolkit:
conda create -n cuda11.8 python=3.8
conda activate cuda11.8
conda install -c nvidia/label/cuda-11.8.0 cuda-nvcc
- 切换方式
conda activate cuda11.8