聊 NVIDIA 和它的对手时,总会出现一句模糊的话:"NVIDIA 的护城河是 CUDA。" 但真要追问 CUDA 是什么、护城河具体在哪一段,很多人就答不上来了。
这篇调研的目的是把 CUDA 生态从底到顶拆开,搞清楚:
- CUDA 到底由哪几层构成,每一层做什么
- 为什么 AMD、Intel、Apple、华为各家追了十年都没追上
- 普通 AI 开发者每天碰到的"CUDA 出错"实际是哪一层的问题
- 如果有一天 CUDA 被替代,最有可能从哪一层先松动
一、是什么
CUDA(Compute Unified Device Architecture)最初是 NVIDIA 在 2006 年发布的通用 GPU 并行计算平台。它最早的定位很朴素——让 GPU 不仅能渲染游戏,还能跑科学计算、图像处理、金融建模这类通用并行任务。
但今天我们说"CUDA 生态",已经远远不只是那个 2006 年的编程模型。它是 NVIDIA 围绕 CUDA 编程接口搭建的一整套"硬件 + 工具链 + 加速库 + 应用框架 + 部署平台 + 开发者社区"垂直栈。
可以分成清晰的五层:
┌──────────────────────────────────────────────────┐
│ 第五层:应用生态 │
│ PyTorch / TensorFlow / vLLM / TensorRT-LLM │
│ MATLAB / GROMACS / VASP / OpenCV / Blender │
├──────────────────────────────────────────────────┤
│ 第四层:领域加速库 │
│ cuDNN / cuBLAS / NCCL / TensorRT / RAPIDS │
│ cuFFT / cuSPARSE / cuSOLVER / Thrust │
├──────────────────────────────────────────────────┤
│ 第三层:编程模型与工具链 │
│ CUDA C/C++ / CUDA Python / nvcc / Nsight │
│ PTX 中间码 / CUDA Runtime / CUDA Driver API │
├──────────────────────────────────────────────────┤
│ 第二层:系统与驱动 │
│ NVIDIA Driver / CUDA Driver / Container Toolkit │
├──────────────────────────────────────────────────┤
│ 第一层:硬件 │
│ GeForce RTX / RTX Pro / A100 / H100 / B100 / │
│ GB200 / Jetson / DGX / GB10 Grace Blackwell │
└──────────────────────────────────────────────────┘
一句话总结:CUDA 生态就是 NVIDIA 从显卡硬件 → 驱动 → 编译器 → 现成加速库 → AI / 科学软件一条龙,让开发者直接用 GPU 提速,不用从零开发 GPU 底层。
二、为什么重要
CUDA 重要到什么程度?可以从三个角度感受:
1. 它是当下 AI 训练与推理的事实标准。 2024-2026 这一轮大模型浪潮里,几乎所有主流开源 / 闭源模型的训练,第一选择都是 NVIDIA GPU + CUDA。OpenAI、Anthropic、Google DeepMind、Meta、xAI、Mistral、Qwen、DeepSeek,没有例外。
2. 它直接定义了 NVIDIA 的市值。 2024 年 NVIDIA 市值越过 3 万亿美元、阶段性超过苹果与微软,背后逻辑不是显卡卖得贵,而是"全世界 AI 公司都得用我"。这个垄断不来自硬件本身——AMD MI300X、Intel Gaudi 3 的纸面参数并不差——而来自 CUDA 把上下游捆死了。
3. 它是过去二十年开发者教育的隐形资产。
今天写 AI 训练代码的工程师,默认第一行是 device = "cuda",不是 xpu 也不是 mps。高校并行计算课、Kaggle 入门教程、StackOverflow 答案、GitHub 示例代码、所有大学实验室、几乎所有论文复现脚本——默认都假设 CUDA 存在。
这种"默认假设"才是真正难复制的资产。硬件可以被超越,编译器可以被重写,但改变全球数百万开发者的肌肉记忆需要十年起步。
三、关键玩家与生态
NVIDIA 自己的 CUDA 生态分布
按层拆解,每一层都有 NVIDIA 自研的旗舰产品:
| 层级 | 代表产品 | 作用 |
|---|---|---|
| 硬件 | RTX 50 系 / H100 / B100 / GB200 / Jetson / DGX Spark | 算力载体 |
| 驱动 | NVIDIA Driver + CUDA Driver | OS 与 GPU 之间的桥 |
| 编程模型 | CUDA C/C++、CUDA Python、PTX | 写并行代码 |
| 编译与调试 | nvcc、Nsight Systems、Nsight Compute | 编译与性能剖析 |
| 数学库 | cuBLAS、cuFFT、cuSPARSE、cuSOLVER、cuRAND | 通用数值计算 |
| 深度学习库 | cuDNN、TensorRT、TensorRT-LLM | 神经网络专用算子 |
| 多卡通信 | NCCL、NVLink、NVSwitch、InfiniBand | 分布式训练通信 |
| 数据科学 | RAPIDS(cuDF、cuML、cuGraph) | GPU 版 Pandas/Sklearn |
| 推理服务 | Triton Inference Server、Dynamo | 生产级推理调度 |
| 容器 | NVIDIA Container Toolkit、NGC 镜像仓库 | 部署标准化 |
| 云端 | DGX Cloud、与 AWS/Azure/GCP/Oracle 合作 | 弹性算力供给 |
第三方但深度依赖 CUDA 的关键项目
这些不是 NVIDIA 自家产品,但默认 CUDA 后端:
- AI 训练框架:PyTorch、TensorFlow、JAX、PaddlePaddle、MindSpore、Megatron-LM、DeepSpeed
- AI 推理框架:vLLM、SGLang、Hugging Face Transformers、llama.cpp(CUDA 后端)、Ollama(CUDA 后端)
- 科学计算:MATLAB、Mathematica、GROMACS(分子动力学)、VASP(材料模拟)、AMBER、LAMMPS
- 图形与视觉:OpenCV(CUDA 模块)、Blender(OptiX 光追)、DaVinci Resolve、Adobe Premiere(CUDA 编码)
- 关键开源底座:FlashAttention、Triton(OpenAI 维护,目标是简化 CUDA 编程)、xFormers、bitsandbytes
主要对手与各自卡点
| 对手 | 对标产品 | 哪一层在追 | 现状 |
|---|---|---|---|
| AMD | ROCm + MI300X / MI325X / MI350 | 编程模型 + 算子库 | 硬件性能/价格比有竞争力;ROCm 在 PyTorch 主分支已可用,但稳定性、版本兼容、文档完整度仍落后;多卡通信 RCCL 对标 NCCL,但在万卡集群规模上工程经验不足 |
| Intel | oneAPI + Gaudi 3 / Battlemage / Arc | 编程模型 + 硬件 | oneAPI 想做"跨厂商统一",理念正确但开发者基础薄;Gaudi 3 在云厂商有少量部署 |
| Apple | Metal + MLX + M 系列芯片 | 编程模型 + 算子库 | MLX 在 Mac 本地 LLM 推理生态发展迅速,但完全封闭在 Apple Silicon 内,不进数据中心 |
| TPU + JAX + XLA | 全栈,但只服务自己 | TPU 不外卖(仅 GCP 租用),是 Google 内部解法 | |
| 华为 | 昇腾 Ascend + CANN + MindSpore | 全栈替代 | 国内推动最积极,CANN 对标 CUDA,但生态广度差距以"数量级"计;地缘政治推动下国内被迫接受 |
| 国内其他 | 摩尔线程 MUSA、海光 DCU、沐曦、寒武纪 MLU | 各层都在尝试 | 多数仍处早期,产品力差距明显 |
| 跨平台开源 | Triton(OpenAI)、OpenAI XLA、SYCL | 编程模型抽象层 | Triton 已成事实标准的"高级 CUDA 替代写法",但本身仍主要跑在 CUDA 之上 |
四、技术 / 实施细节
第一层:硬件——CUDA Compute Capability
CUDA 支持的不是"所有 NVIDIA 显卡",而是有 Compute Capability(计算能力版本号)的卡。从 2006 年的 1.0 到当前 Blackwell 的 10.x,每一代加入新特性:
- Tensor Core(Volta, 7.0+):矩阵乘法专用单元,深度学习训练核心
- Transformer Engine(Hopper, 9.0+):FP8 / FP16 混合精度专用
- 第二代 Transformer Engine(Blackwell, 10.0+):FP4 / FP6 支持
这意味着新版 cuDNN / TensorRT 通常会要求新一代硬件。老卡跑不动新模型,不是性能问题,是Compute Capability 不够。
第二层:驱动与运行时——版本地狱
CUDA 用户最常见的"踩坑"其实集中在这一层:
- NVIDIA Driver 版本 ↔ CUDA Toolkit 版本 ↔ cuDNN 版本 ↔ PyTorch 版本
这四个版本互相约束,错配就报错。每次 PyTorch 升级、每次升级 Ubuntu、每次换 GPU,都可能要重新对一遍版本矩阵。Docker + NGC 官方镜像之所以流行,就是为了避开这个版本地狱。
第三层:编程模型——nvcc 与 PTX
nvcc 是 CUDA 的编译器。它做一件特殊的事:
.cu 源码
↓ nvcc 编译
↓
PTX 中间码(与硬件无关的 GPU 汇编)
↓ 运行时再次编译(JIT)
↓
SASS 二进制(特定 GPU 架构的真实机器码)
这个两阶段编译让 CUDA 程序具备一定的"前向兼容"——老版本编译的 PTX 可以在新 GPU 上 JIT 出新的 SASS。这件事很多对手没做好,是兼容性差距的重要原因。
CUDA 编程模型本身的核心抽象:
- Grid → Block → Thread 三级并行
- Shared Memory / Global Memory / Register 多级内存模型
- Warp(32 线程一组的 SIMT 执行单位)
- Stream 异步执行流
熟练 CUDA 程序员真正在优化的,不是算法,而是这些层级之间的数据搬运。
第四层:加速库——真正的护城河
如果让我指出 CUDA 生态最难替代的一层,就是这一层。
cuBLAS——GPU 上的矩阵乘法,几乎所有深度学习计算的最底层。NVIDIA 工程师二十年持续优化的高性能 kernel,对手要从零写。
cuDNN——卷积、池化、归一化、激活函数、注意力的 GPU 实现。PyTorch 调 conv2d 时,最终落到 cuDNN 调用。cuDNN 的算法选择(autotune)和针对每代 GPU 的特化优化,AMD 和 Intel 都还在追。
NCCL——多 GPU、多节点之间的 AllReduce / AllGather 等集合通信。万卡集群训练 GPT 级别模型时,60% 以上的时间花在通信上。NCCL 配合 NVLink + InfiniBand 的整套通信栈,是 NVIDIA 在分布式训练上最关键的优势之一。
TensorRT / TensorRT-LLM——把训练好的模型转成推理优化引擎。算子融合、量化、KV Cache 优化、PagedAttention、连续批处理(continuous batching)都在这一层。生产部署绕不开。
FlashAttention——技术上是斯坦福开源项目,但深度依赖 CUDA。它把 Attention 计算从"naive O(n²) 显存"优化到"接近线性显存",是长上下文 LLM 能跑起来的关键。
这一层难复制的原因不是 API,而是累计的 kernel 优化经验。每一颗新 GPU 出来,NVIDIA 工程师都要重新调一遍每个常用算子在该硬件上的最优实现。这件事 AMD 用 ROCm 同样要做,但人数和经验都差一个数量级。
第五层:应用框架——默认假设的力量
PyTorch 是这一层最重要的事实。它官方支持的后端理论上包括 CUDA、ROCm、MPS(Mac)、XPU(Intel)、CPU,但:
- 文档示例 90% 是 CUDA
- 几乎所有第三方库(vLLM、Transformers、Diffusers)默认假设 CUDA
- 出问题时 issue 区第一个问的就是"你 CUDA 版本是多少"
这就是"默认假设"的杀伤力。即使非 CUDA 后端的代码能跑,遇到问题时社区资源、教程、博客、论文复现都站在 CUDA 那边。
CUDA Python / RAPIDS 这一支
值得单独提一下的是 NVIDIA 这几年在做的"让 CUDA 走进 Python 生态":
- CUDA Python:官方 Python binding,不用 C/C++ 也能写 CUDA kernel
- Numba + CUDA:用装饰器把 Python 函数编译成 GPU 代码
- RAPIDS:cuDF(GPU Pandas)、cuML(GPU Scikit-learn)、cuGraph、cuSpatial——目标是把数据科学家从 CPU 拉到 GPU
- PyTorch 2.x torch.compile:靠 TorchInductor 自动生成高性能 CUDA / Triton 代码
这一支让 CUDA 用户基数从"会写 C++ 的并行计算工程师"扩张到"会写 Python 的数据科学家",进一步加固了生态。
五、争议与风险
第一类:垄断与监管
NVIDIA 在 AI 训练芯片市场份额超过 90%,已经引起多国监管关注:
- 美国 FTC、欧盟、英国 CMA、中国市场监管总局都在不同程度调查
- 焦点之一是 CUDA 是否构成"事实捆绑"——买了 NVIDIA 卡才能用 CUDA,用了 CUDA 就被锁在 NVIDIA 上
- NVIDIA 的应对是开放 PTX 标准、贡献 PyTorch 后端、推动 Triton 这类"高级抽象"
短期看不出有效拆分手段,但监管压力会持续。
第二类:地缘政治与出口管制
- 美国对华出口管制升级,H100 / H200 / B100 不能向中国销售;NVIDIA 推出 H20 / B20 阉割版
- 这反向推动了国内昇腾、海光、摩尔线程的发展
- 长期看,全球 GPU 生态可能走向"CUDA 主导的西方阵营 + CANN / MUSA 主导的中国阵营"分叉
CUDA 在中国大陆的护城河可能比全球弱,但短期内开发者仍优先选 CUDA(即使是阉割版)。
第三类:高层抽象的反噬
有意思的是,CUDA 生态最大的"自我替代"压力可能来自它自己培养的高层工具:
- OpenAI Triton:让你用 Python 写 GPU kernel,编译到 PTX。理论上 Triton 也可以编译到 ROCm 或其他后端,AMD 已经在做
- PyTorch 2.x torch.compile:进一步把"写 kernel"从开发者手上拿走,让框架自动生成
- JAX + XLA:Google 路线,XLA 同样可以编译到 TPU、CPU、GPU
抽象层越高,下面换硬件的代价越小。这是 CUDA 长期最大的隐性风险——不是被对手用同样的方式打败,而是被"上层抽象 + 多后端"绕过去。
第四类:CUDA 自身的复杂度负担
任何熟练 CUDA 开发者都会承认 CUDA 不是"容易"的技术:
- 版本兼容性问题贯穿生命周期
- 编程模型对初学者门槛高
- 调优需要理解 SM、Warp、Memory Coalescing、Bank Conflict 等硬件细节
- Tensor Core 编程需要专门的 WMMA / MMA 指令
NVIDIA 用 cuDNN、TensorRT、Triton、torch.compile 不断"上抬抽象",但这也意味着普通开发者越来越少接触底层 CUDA C++。生态在变厚,但精通底层的人在变少——这件事长期是双刃剑。
第五类:本地推理的去 CUDA 化
值得注意的趋势:本地端侧推理生态(Ollama、llama.cpp、LM Studio、MLX、ExecuTorch)正在主动多后端:
- llama.cpp 同时支持 CUDA、Metal、ROCm、Vulkan、SYCL、CPU
- MLX 完全不用 CUDA(Apple Silicon 专属)
- Ollama 自动选后端,用户无感知
这条路线对 CUDA 的"默认假设"地位是一个长期削弱信号。
六、个人结论
一句话定性:CUDA 不是一个编程语言,也不只是一颗芯片的配套软件,而是 NVIDIA 用二十年时间垂直整合出来的**"硬件—驱动—编译—算子库—框架—部署—社区"七层栈**。它最难复制的不是 nvcc,而是 cuDNN / cuBLAS / NCCL / TensorRT 这一层的累计优化经验,以及上面 PyTorch / vLLM / 数百万开发者的默认假设。
是否跟进 / 学习:
- 作为 AI 开发者基础知识:必须了解。即使你只写 Python 调 PyTorch,理解 CUDA 五层模型能帮你看懂大半的报错和性能问题。
- 作为底层 CUDA C++ 编程能力:按需。除非你做模型训练系统、推理引擎、性能优化,否则学到能看懂 Triton 和 torch.compile 输出即可。
- 作为投资 / 创业判断依据:必须看清。任何声称"挑战 NVIDIA"的故事,都要追问它在 CUDA 五层里到底打哪一层、怎么解决"默认假设"问题。
下一步行动:
- 把这篇作为后续 NVIDIA 系列调研的基础参考,下次写 [[local-always-on-llm-nvidia-spark]] 续篇时直接引用
- 单独再开一篇调研 OpenAI Triton + PyTorch torch.compile,这是 CUDA 长期最大的内部抽象路线,也是普通开发者最值得了解的方向
- 关注国产 CUDA 替代——昇腾 CANN、摩尔线程 MUSA、华为 Mind 系列——专门做一期"CUDA 中国镜像"对照调研
- 个人项目层面,不需要主动学 CUDA C++;保持对 PyTorch / vLLM / Ollama 这类上层框架的熟练即可
一个反直觉的结论:CUDA 的真正护城河不在"硬件性能领先"——AMD MI300X、华为昇腾 910B 的纸面参数其实并不差。护城河在于全世界 AI 开发者写代码时的默认假设。这件事的替代成本不是技术问题,是文化和教育问题,至少需要十年。
七、信息来源
- NVIDIA CUDA 官方主页
- CUDA Toolkit 文档
- CUDA C++ Programming Guide(官方编程指南)
- cuDNN 文档
- TensorRT 文档
- NCCL 文档
- RAPIDS 项目主页
- PyTorch 官方对 CUDA 后端的说明
- OpenAI Triton 项目
- AMD ROCm 官方文档
- Intel oneAPI 主页
- 华为昇腾 CANN 文档
- 参考阅读:State of AI Report 2024-2025 关于训练硬件市场份额章节;半导体行业观察、SemiAnalysis 关于 NVIDIA 与对手生态对比的多篇分析
Discussion
讨论
还没有讨论