CUDA 仍然是英伟达的一道巨大护城河

CUDA 的护城河与锁定效应

  • 许多人认为,CUDA 与其说关乎这门语言本身,不如说关乎围绕它的生态:库、工具,以及与 PyTorch、TensorFlow、JAX 和推理服务器等框架的深度集成。
  • CUDA 的 EULA 限制(例如禁止针对非 NVIDIA 目标进行逆向工程)被认为是在强化锁定效应。
  • 一些人认为这是一种有害的软件垄断,类似于过去浏览器或应用商店的主导地位;另一些人则认为垄断是短暂的,社会最终会因创新而受益,即使其中一家公司因此变得富有。

软件与生态系统的作用

  • 反复出现的主题是:硬件竞争对手低估了软件的重要性。
  • NVIDIA 在约 20 年里一直把自己当作一家全栈、软件占比很高的公司来经营,构建了库(cuBLAS、cuDNN 等)、编译器、调试器、分析器,并与研究界和产业界保持紧密集成。
  • 真正的护城河被描述为“装机基础 + 集成”,而不仅仅是 CUDA 语法。

对 AMD/Intel/ROCm 的批评

  • 人们广泛批评 AMD 和 Intel:
    • 在软件团队、工具和文档方面投入不足。
    • 驱动稳定性差、设备支持有限,以及回归问题(例如,ROCm 只支持很窄范围的 GPU、在 APU 和云端芯片上存在问题)。
    • 放弃或资金不足地支持 CUDA 兼容项目和转换层。
  • 有些人认为,它们应该大幅增加软件招聘,为所有主要开源项目的直接集成提供资金,并推出高 VRAM 的消费级显卡来吸引迁移者。

GPU 编程的难度

  • 编写高性能 CUDA 被描述为极其专门化:
    • 需要对算法、硬件、内存层次结构、并发以及多个 GPU 代际有深入理解。
    • 即使是许多“CUDA 程序员”,也只能实现基础性能;缩小与 NVIDIA 自家库之间的差距被认为是奥林匹克级别的工作。
  • 也有人指出,对于一些小众工作负载,自定义内核仍然能胜过 NVIDIA 的库,尤其是在主优化路径之外的场景。

高层框架 vs 低层 CUDA

  • 大多数机器学习用户写的是 PyTorch 等,而不是 CUDA,但这些框架本身以及许多前沿方法(例如自定义 attention 变体、专用线性代数)都依赖手工调优的 CUDA 内核。
  • CUDA 对非 ML 的 HPC、信号处理和科学计算仍然至关重要。

竞争、中国与替代方案

  • 有些人认为 LLVM/OpenMP、ONNX、TVM、Metal,或新语言(例如 Mojo)可能会随着时间推移削弱 CUDA。
  • 另一些人则认为,如果没有持续且资金充足、软件优先的文化(无论是在 AMD、Intel,还是在中国),这些替代方案仍将不完整,并处于次要地位。