开源项目 ZLUDA 让 CUDA 应用可在 AMD GPU 上运行

一个名为 ZLUDA 的开源项目旨在让 CUDA 应用能够在 AMD GPU 上运行,重新点燃了打破 Nvidia 在 GPU 加速计算领域主导地位的希望。评论者权衡了技术和法律障碍,从 Nvidia 的 EULA 限制以及对 cuDNN 等专有库的依赖,到洁净室重新实现和性能对等的难题。讨论的大部分内容集中在 AMD 长期受批评的软件生态和战略选择上,包括它为何停止资助 ZLUDA,以及 ROCm、HIP 或开放标准是否有可能真正匹敌 CUDA 的成熟度和锁定效应。

ZLUDA 的范围与法律限制

  • ZLUDA 是一个洁净室、即插即用的 CUDA 实现,目标是非 Nvidia GPU(最初是 Intel,现在是 AMD)。
  • 至少自 2022 年以来,Nvidia 的 CUDA EULA 一直禁止使用 SDK 输出面向非 Nvidia 平台,以及在其他硬件上运行关键库(例如 cuDNN、cuBLAS)。
  • 关于可执行性的争论:
    • 一方观点:仿真和 API 重新实现通常是合法的;如果你从未同意 Nvidia 的 EULA,就不受其约束,而且这可能具有反竞争性。
    • 另一方观点:如果应用程序捆绑了 Nvidia 二进制文件,其许可可能禁止在第三方运行时上运行它们;DMCA 以及先前关于在非厂商硬件上运行操作系统的案例表明,商业用途存在很高的法律风险。
  • 洁净室逆向工程是可行的,但代价高昂且很难保持同步;为所有 Nvidia 库都这样做是一大障碍。

AMD 的策略与软件生态

  • 许多人认为 AMD 最大的弱点是软件:尽管硬件不错,但 OpenCL/ROCm/HIP 栈有漏洞、驱动不稳定,而且支持周期很短。
  • AMD 为 ZLUDA 提供了大约 2 年的资助,随后停止,称“没有商业案例”;根据合同,代码随后开源。
  • 有些人认为这是错失良机,甚至“荒谬”,因为它会立刻给 AMD 用户带来收益。
  • 也有人认为这很理性:一个强大的 AMD 上 CUDA 层可能进一步巩固 CUDA 的地位,让开发者继续以 Nvidia 为中心,只把 AMD 当作更便宜的执行硬件。

技术与实际限制

  • 关键难点不是基础的内核翻译,而是为 Nvidia 的库(cuDNN、cuBLAS 等)提供高性能、可维护的等效实现。
  • Nvidia 有 PTX 作为稳定的 IR;AMD 往往按架构分别编译,这给长期支持和社区优化带来复杂性。
  • 有报告称 ZLUDA + llama.cpp 可以工作,但比原生 ROCm 更慢;AMD APU 通常受制于内存带宽以及较小的有效“显存”。
  • 一些爱好者报告在消费级 AMD GPU 上运行小型 LLM 体验很好;另一些人则提到持续性的崩溃、段错误和驱动 bug。

替代方案与标准

  • 提到的替代方案包括:HIP/HIPIFY(源码翻译,不是运行时)、ROCm、OpenCL、Vulkan compute、SYCL、OpenMP GPU offload。
  • 一些评论者认为 AMD 和 Intel 应共同推动 SYCL 等开放标准;另一些人指出,碎片化和糟糕的实现已经限制了其影响力。

更广泛的市场视角

  • 多条评论将 Nvidia、AMD 和 Intel 描述为一旦获得权力就像潜在垄断者一样行事。
  • 有人猜测监管机构,尤其是欧盟,最终可能会把 Nvidia 的限制视为反竞争,但结果尚不明确。