以下是关于 NVIDIA GPU 开发环境中各个组件(显卡型号、驱动版本、CUDA Driver、CUDA Runtime、CUDA Toolkit、nvcc、NVIDIA 其他 Toolkit/SDK)之间的层级结构、包含关系和版本对应逻辑的清晰总结。
硬件层(物理)
└── 1. GPU 显卡(如 RTX 3060,A100)
└── 定义“计算能力” (Compute Capability),例如 8.6
驱动层(系统支持)
└── 2. NVIDIA 显卡驱动(NVIDIA Driver)
└── 提供 CUDA Driver(内嵌)
└── 支持运行 CUDA 程序(最大支持某一版本的 CUDA Toolkit)
开发工具层(编译和构建)
└── 3. CUDA Toolkit(例如 12.3)
├── 包含 nvcc 编译器
├── 包含 CUDA Runtime(如 libcudart.so)
└── 包含开发库(cuBLAS、cuFFT 等)
应用层(程序)
└── 4. 你的 CUDA 应用程序
└── 使用 nvcc 编译,依赖 Runtime,运行时受 CUDA Driver 支持
| 名称 | 类型 | 包含/依赖关系 | 说明 |
|---|---|---|---|
| GPU 显卡 | 硬件 | — | 物理设备,定义了支持的“计算能力” |
| NVIDIA Driver | 软件 | 包含 CUDA Driver | 系统级显卡驱动,决定可运行的最高 CUDA 版本 |
| CUDA Driver | 软件API | 包含于 NVIDIA Driver | CUDA 程序运行的基础支持层 |
| CUDA Toolkit | 软件开发包 | 包含 nvcc、CUDA Runtime、头文件、开发库 | 用于编写、编译、链接 CUDA 应用程序 |
| CUDA Runtime | 库 | 包含于 Toolkit | 程序运行所依赖的动态链接库,如 libcudart.so |
| nvcc | 编译器 | 包含于 Toolkit | CUDA 源码编译工具 |
| 应用程序 | 用户代码 | 使用 Toolkit 构建,运行依赖 Runtime 和 Driver | 最终运行的 CUDA 可执行程序 |
| NVIDIA 其他 SDK | 附加工具 | 如 cuDNN、TensorRT、Nsight、DeepStream 等 | 面向特定领域的高级开发库和分析工具 |
| 项目 | 版本编号格式 | 对应关系说明 |
|---|---|---|
| NVIDIA Driver | 例如 535.104.12 | 支持某一最大版本的 CUDA Toolkit(如 12.2) |
| CUDA Driver API | 如 12.2 | 内嵌在 NVIDIA Driver 中,对应支持的最高 CUDA Toolkit 版本 |
| CUDA Toolkit | 如 12.1、12.3 | 包含编译工具链与开发库;运行时需要匹配的 CUDA Driver |
| CUDA Runtime | 同 Toolkit | 每个 Toolkit 带一个对应版本的 Runtime,应用运行时需要它 |
| nvcc(编译器) | 同 Toolkit | 用来将 .cu 文件编译为二进制代码,随 Toolkit 提供 |
| 应用程序(可执行文件) | 编译时版本决定 | 使用某个版本 Toolkit 编译,运行时依赖系统中的 Driver 和 Runtime |
| cuDNN 等深度库 | 与 Toolkit 兼容 | cuDNN 会指明可兼容的 CUDA Toolkit 版本范围 |
/usr/local/cuda-11.8, /usr/local/cuda-12.3如果程序编译用了 CUDA 12.3,那么运行时至少需要:
[GPU: RTX 3060] -- supports compute capability 8.6
↓
[NVIDIA Driver: 535.104] -- includes CUDA Driver API (max 12.2)
↓
[CUDA Toolkit 12.1]
├── nvcc 12.1
├── libcudart.so (Runtime 12.1)
└── cuBLAS, cuFFT, etc.
↓
[Your CUDA App] (compiled with nvcc 12.1)
nvidia-smi结果:
NVIDIA-SMI 535.104.12 Driver Version: 535.104.12 CUDA Version: 12.2
Driver Version: 535.104.12: 安装的 NVIDIA 驱动版本
CUDA Version: 12.2: 表示这个驱动最多支持 CUDA Toolkit 12.2