CUDA 生态扫盲

2026-09-09 · 专题调研 · 从 API 到护城河

CUDA 生态四层隐喻:核心阵列、数学库书架、融合算子引擎、吞吐传送带
封面四层,从上到下:核心阵列 → 数学库 → 引擎 → 吞吐。不是产品广告,是这条链的视觉摘要。

一句话:CUDA 先是 NVIDIA 的 GPU 编程平台;「CUDA 生态」是围着它锁出来的库、框架、工具链和人才圈。 有 GPU ≠ 有 CUDA。Apple Silicon 没有 CUDA;AI 圈真正吃饭的也很少是手写 kernel,而是库和引擎。

它是什么,不是什么

CUDA(Compute Unified Device Architecture)是 NVIDIA 给自家 GPU 的并行计算栈:编程模型、编译器、运行时、驱动接口。你写一个在 GPU 上跑的函数,启动成千上万个线程,对同一件事做一遍。

它不是「所有显卡编程」的统称。AMD 走 ROCm,Apple 走 Metal / MLX / PyTorch MPS,跨厂商还有 OpenCL、Vulkan compute、SYCL。2026 年的训练和推理默认路径,在绿卡上几乎等于 CUDA;换厂要换一整圈软件,不只换驱动。

游戏用图形管线(三角形、着色器)。CUDA 把同一块硅当通用计算器。同一张卡可以打游戏,也可以跑矩阵乘。AI 里真正吃肉的是 Tensor Core(矩阵乘法硬件);普通 CUDA Core 是边角。

别混三个版本 Driver 是系统里的 NVIDIA 驱动;CUDA Toolkit 是 nvcc、头文件、runtime(开发用);Compute Capability 是这张卡的硬件代数(如 8.9、9.0)。软件写「需要 CUDA 12.x」指 toolkit/runtime ABI,不是「有块绿卡就行」。驱动太旧,新 toolkit 起不来。

四个基础词:库、核心、引擎、吞吐

这四个词在 CUDA / AI 语境里被用滥,但层级不同。封面就是按这个顺序画的。

核心 Core 硬件里的计算单元 CUDA Core:通用算术 Tensor Core:矩阵乘 硅上有多少个 能同时干的工人 封面最上层的格子 库 Library 别人写好的函数集 cuBLAS 线性代数 cuDNN 深度学习原语 NCCL 多卡通信 你调用,不手写 kernel 封面第二层书架 引擎 Engine 编好的可反复跑的机器 TensorRT engine vLLM 推理引擎 把模型+卡编成 一条执行管线 封面齿轮箱 吞吐 Throughput 单位时间处理量 tokens / 秒 images / 秒 不是延迟;常靠 加大 batch 换来 封面传送带
四个词不在同一层:核心是硅,库是函数,引擎是编好的执行体,吞吐是结果指标。

库(Library)

库是别人写好、你调用的函数集合。cuBLAS 给你矩阵乘,cuDNN 给你卷积和注意力,NCCL 给你多卡同步。框架(PyTorch)会再把这些库包一层,所以你日常写 tensor.cuda() 时,真正干活的经常是库里的 kernel,不是你自己的 .cu 文件。

库不是框架,也不是引擎。框架管训练循环、自动微分、模块拼装;库管「这一步在 GPU 上怎么算最快」。没有库,CUDA 只是一门语言;有了库,它才变成能吃饭的生态。

核心(Core)——别和 kernel 搞混

中文「核心」在这里至少有三个完全不同的东西:

营销说「某卡有 1 万 CUDA Core」,说的是硬件工人数量。论文说「我们写了一个 attention kernel」,说的是一段 GPU 程序。Compute Capability 则决定这代核心能用哪些指令(有没有某代 Tensor Core)。

引擎(Engine)

引擎是针对这张卡、这个模型编好的执行体:算子融合、内存规划、精度(FP16 / FP8 / INT8)都冻在里面,然后反复跑。TensorRT 产出的叫 engine;vLLM 把自己叫 inference engine。训练框架一般不叫引擎——训练要改权重、要反传,形状和路径一直在变。

可以记:库是零件目录,引擎是组装好的机器。同一份权重,换成另一张卡或另一套精度,常常要重新编一版引擎。

吞吐(Throughput)

吞吐是单位时间处理量:大模型推理常写 tokens/s,图像写 images/s,训练写 samples/s。对立面是延迟(latency):从发请求到第一个结果回来要多久。

两者经常打架。把 64 条请求打成一个 batch,吞吐上去,单条等待变长。vLLM 这类引擎的工作,很大一部分就是在延迟约束下把吞吐打满——让 GPU 别闲着。卡上核心再多、库再快,batch 太小,吞吐照样难看:工人都在等数据。

一句串起来:核心提供算力 → 库把算力变成可调用的算子 → 引擎把模型和卡编成一条管线 → 吞吐是这条管线跑出来的成绩。缺任何一层,上一层的数字都是空的。

心智模型:Host、Device、kernel

CPU 这边叫 Host(主机 + 内存),GPU 这边叫 Device(设备 + 显存)。数据先拷到显存,kernel 在 GPU 上算,结果再拷回来。拷贝经常比计算还慢——所以库和引擎拼命减少来回、把算子融在一起。

Host CPU + 内存 写 Python / C++ 准备数据、发启动 你的进程住在这 H2D 拷入 D2H 拷回 Device GPU + 显存 kernel:grid → block → thread 同一指令,海量数据 核心在这里干活

启动一个 kernel,运行时把它切成 grid → block → thread。每个 thread 处理数组里的一小块。几万个 thread 同时跑,靠的是「同一套指令、不同数据」(SIMT),不是 CPU 那种少数聪明核。

生态怎么叠起来

狭义 CUDA 只到 runtime 和编译器。大家说生态,指缺一块软件整条链就不转。它不是 Linux 那种开放生态,更像单厂商护城河:硬件 → CUDA → 库和框架 → 人才。

人和课 · 论文默认这套词 · CUDA 工程师岗位 框架 · PyTorch 训练 · vLLM 推理 库 / 引擎 · cuBLAS · cuDNN · NCCL · TensorRT CUDA 平台 · nvcc · runtime · kernel 模型 驱动 + 某代 Compute Capability 的 NVIDIA GPU

AMD 的 ROCm、Apple 的 Metal 都能「算」,但接不住这圈库和默认路径,所以换卡的成本是生态成本,不是插槽成本。

名词词典

按「它干什么 / 你什么时候会碰到」记。先库和引擎,再框架,再工具链。

名词 它是什么 你什么时候碰到
cuBLAS GPU 线性代数库。矩阵乘、向量加,网络的底。 几乎所有 dense 层;PyTorch 的 matmul 底下常是它。
cuDNN 深度学习原语库。卷积、注意力、归一化、激活。 训练/推理框架的默认 GPU 后端。
NCCL 多卡通信库(读 Nickel)。梯度同步、拆 batch。 一张卡装不下、要 DDP / 张量并行时。
TensorRT 推理编译器,产出针对这张卡的 engine。 部署、降精度、融算子;训练一般不走它。
PyTorch 主流训练框架(也常推理)。NVIDIA 上默认 CUDA。 写模型、反传、.cuda() / .to(device)。
vLLM 大模型推理引擎。高吞吐、paged attention。 生产里对外提供 Llama / Qwen 这类服务。
nvcc NVIDIA 编译器。把 .cu 编成 GPU 二进制。 自写 CUDA C++,或装带 CUDA 扩展的包。
Nsight 官方 profiler / 调试器。 kernel 慢:算力、显存还是在等待。
Driver 操作系统里的 NVIDIA 内核模块。 卡要被认出、runtime 要能说话。太旧则新 CUDA 起不来。
Compute Capability 卡的硬件代数(8.9、9.0…)。决定指令和 Tensor Core 代际。 软件写 sm_90 指这个,不是 CUDA 版本号。
kernel 在 GPU 上启动的函数(软件)。 写 CUDA、读论文、看 Nsight 火焰图。
CUDA Core / Tensor Core 硬件计算单元。前者通用,后者矩阵乘。 看规格、屋顶线、为什么 FP8 更快。

人和课:新模型/新 kernel 论文默认读者懂这套词(occupancy、NCCL、sm_xx)。岗位写 CUDA 工程师,招的是会写/调 kernel、会挖 Nsight、会把模型和卡对齐的人,不是会调 PyTorch API 就够。

一条调用链

PyTorch → cuDNN/cuBLAS → NCCL → TensorRT/vLLM → 某代 CC 的卡 驱动 + nvcc

训练路径多停在 PyTorch + cuDNN/cuBLAS +(多卡)NCCL。部署再分叉:要极致单卡延迟/融合,走 TensorRT engine;要大模型在线服务和高吞吐,走 vLLM 这类引擎。两者都坐在同一代 Compute Capability 的硅上,由驱动托着。

你写 PyTorch
  → 调 cuDNN / cuBLAS(库,核心上跑 kernel)
  → 多卡走 NCCL
  → 部署经 TensorRT 或 vLLM(引擎)
  → 成绩用吞吐 / 延迟衡量
  → 全跑在某代 Compute Capability 的卡上

和这台机器的关系

这台 Mac mini Lume VM 是 arm64,没有 CUDA。学概念、读这篇够;要动手写 kernel 或跑 vLLM 的 NVIDIA 路径,需要 Win11 上的绿卡,或云上租一张。

只做 OpenClaw / 本地小模型,优先 MLX 和 Ollama,别为 CUDA 改机器。CUDA 生态的护城河对 NVIDIA 是资产,对你是选型约束:选定绿卡栈,再享受库和引擎;选定 Apple 栈,就不要用 CUDA 的词当验收标准。

收束:CUDA 是 API;CUDA 生态是 NVIDIA 把加速计算焊在自己卡上的那套。库提供算子,核心提供工人,引擎提供编好的机器,吞吐是成绩单。