AMD上直接跑CUDA程序,英伟达护城河没了?
文 | 张玄
最近有个叫 SCALE 的工具出现了,据说有了它 CUDA 程序就能跑在 AMD GPU 上,而且比以前那些兼容工具都高效,英伟达危?
上周末,英国初创企业 Spectral Compute 宣布推出一个名为 SCALE 的 GPGPU 工具链:主要作用是能够让 CUDA 程序直接跑在 AMD GPU 上,不需要进行代码修改 —— 此事最早应该是国外媒体 Phoronix 报道的。
SCALE 在此扮演的主要角色是,针对 AMD 处理器自动编译 CUDA 代码。换句话说,也就是原本给英伟达 GPU 写的软件,借助 SCALE 可以很方便地切换到其他非英伟达平台,不需要进行代码移植,而且据说是完全遵守 EULA 最终用户许可协议的。
SCALE 工具怎么工作的?
从外媒的报道来看,SCALE 面向非英伟达 GPU—— 现在应该确切为 AMD GPU,编译 CUDA 代码,生成 binary; 实现了 CUDA 兼容,包括对于 Inline PTX Assembly 以及 nvcc C++ 的支持;生成的代码实现了 AMD ROCm 6 的可用。
Phoronix 的评价是,SCALE 的能力令其成为了英伟达 nvcc 编译器的 “即插即用替代品”,“并且还有个‘扮演’NVIDIA CUDA 工具集的 runtime”。
虽然我们之前也见过不少所谓 “CUDA 兼容” 的工具,但那些软件和方案一般都是把 CUDA 代码转义为其他语言。这次发布的 SCALE 则是直接编译 CUDA 源码,特别针对 AMD GPU。官网总结 SCALE 的工作方式大致上是这样的:
介绍中提到,SCALE 解决方案用到了一些开源 LLVM 组件。据说这套方案不仅高效,而且使用起来也很友好,相比 ZLUDA 提供更加无缝和高集成度的解决方案。ZLUDA 应该算得上是行业内相对知名的、让 CUDA 库最终能够为 AMD ROCm 服务的开源移植项目。
Spectral Compute 表示 SCALE 开发了长达 7 年时间。据说 SCALE 已经成功通过了包含 Blender, Llama-cpp, XGboost, FAISS, GOMC, STDGPU, Hashcat, 乃至 NVIDIA Thrust 在内的软件测试;Spectral Compute 自己也做了针对 AMD 的 RDNA2/RDNA3 架构 GPU 测试,以及 RDNA1 的基础测试,Vega 架构的支持则还在进行中。
SCALE 有什么价值?
这里援引 Spectral Compute 公司首席执行官 Michael Sondergaard 的说法:“我们相信,写一次代码就让它跑在任何硬件平台,应该成为可能。对于 CPU 代码而言,这原本就是个存在多年的事实,为什么 GPU 就不行呢?我们尝试通过桥接流行的 CUDA 编程语言与其他硬件供应商的兼容性,以直接解决这个问题。”
所以口号是 “one codebase, multiple vendors”—— 也就是写一次基础代码,就面向多供应商。这应该也是绝大部分 HPC 与 AI 应用开发者一直以来期望做到的。毕竟用户总是希望有更多选择,而不是绑定在一个供应商身上的。
比如单就 AI 来看,Intel 过去半年宣传自家的 AI 生态,就在反复强调应该给用户 “选择”,要打造 “开放” 和 “开源” 的生态 —— 所以 Intel 的 oneAPI 甚至支持英伟达 GPU,OpenVINO 推理引擎通过插件可支持 Arm。我们当时评论说,这实际是在英伟达形成排他且强大生态以后,其他芯片企业及供应商要发展的不二之选 ——AI 这么大的蛋糕,大家总是希望能一起分食的。
外媒的评价普遍集中在 “打破英伟达软件栈的统治地位”,以及 GPU 应当构建起开源环境,实现互连接、互操作性等话题。SCALE 则作为这种媒介,可能某种程度打破了英伟达的限制,让 CUDA 从 “排他” 走向相对更广泛的可用范围。
需要注意的是 SCALE 本身并不是开源的,只不过用户仍然可以通过免费软件授权的方式来使用。微软 Copilot 认为,SCALE 没有违反任何相关协议却实现了 CUDA 兼容性,可能与其使用诸多开源组件有关 —— 比如 LLVM; 另外借助自家的 runtime 确保兼容性也遵循了授权协议。
最后还是值得提一句,虽然很多媒体普遍认为 CUDA 在英伟达统治的 AI 市场上也扮演极其重要的角色,CUDA 也作为英伟达推出诸多加速库、微服务和上层应用的基础,但在我们过去半年接触的 AI 芯片企业中,很多参与者都认为 CUDA 的影响力或扮演的角色在 AI 时代正在弱化。
这里援引一段今年 Intel Vision 媒体预沟通会上,Intel 发言人说的话:“而在 PyTorch 之下,的确有很多开发者选择来自单一供应商、专用的 CUDA”,“但行业正在朝着寻找替代方案、更多选择的路子上走,典型的比如 Triton (由 OpenAI 开发,也用于 GPU 编程); 要确保能够以开放的方式、像是用 MLIR,让所有的 kernel 跑起来。”
另外 “如果我们去看软件栈的下一个层级,像是 OpenVINO 这样的 inference runtime,大概 95% 的开发者和数据科学家都工作在这个层级或更高层级。”“只有很少一部分人是工作在 CUDA 或者 oneAPI 层级的。”
“这个层级固然在优化和支持上非常重要,但毕竟会需要用到它的开发者少。”“而且我们认为,未来这部分群体还会变得更少。”“尤其现在随着抽象层接入,Triton 语言、MLIR 能力、各种编译基础,实现跨架构更广泛的支持,编程模型更低层级的角色不会那么重要。”
当然,CUDA 也不单是用在 AI 生态上,以及要考虑这是英伟达竞争对手的发言,在此仅供参考。而且还需要注意的是,当前英伟达于 HPC 和 AI 市场的护城河优势并不单纯在 CUDA 上,包括 NVLink, NVSwitch 等在内的硬件及系统生态亦足够为竞争对手感到汗颜。
虽然到目前为止,我们也还没有看到英伟达对于 SCALE 的态度,但此前英伟达对于任何 CUDA 兼容跑在其他硬件上的方案,显然都是没什么好感的。如说今年 3 月外媒报道英伟达在 CUDA 的 EULA 协议中出现新的警示,针对的应该就是 SCALE 这样的工具。
via:
-
AMD 上直接跑 CUDA 程序,英伟达护城河没了?张玄 EDN 电子技术设计 2024 年 07 月 18 日 15:47 中国香港
-
SCALE documentation
注:机翻,未校对。
How AMD May Get Across the CUDA Moat
AMD 如何跨越 CUDA 护城河
When discussing GenAI, the term “GPU” almost always enters the conversation and the topic often moves toward performance and access. Interestingly, the word “GPU” is assumed to mean “Nvidia” products. (As an aside, the popular Nvidia hardware used in GenAI are not technically Graphical Processing Units. I prefer SIMD units.)
在讨论 GenAI 时,“GPU” 一词几乎总是进入对话,话题经常转向性能和访问。有趣的是,“GPU” 一词被认为是 “Nvidia” 产品的意思。(顺便说一句,GenAI 中使用的流行 Nvidia 硬件在技术上不是图形处理单元。我更喜欢 SIMD 单元。
The association of GenAI and GPUs with Nvidia is no accident. Nvidia has always recognized the need for tools and applications to help grow its market. They have created a very low barrier to getting software tools (e.g., CUDA) and optimized libraries (e.g., cuDNN) for Nvidia hardware. Indeed, Nvidia is known as a hardware company, but as Bryan Catanzaro, VP of Applied Deep Learning Research, Nvidia has stated ” Many people don’t know this, but Nvidia has more software engineers than hardware engineers.”
GenAI 和 GPU 与 Nvidia 的关联并非偶然。英伟达一直认识到需要工具和应用程序来帮助发展其市场。他们为获得 Nvidia 硬件的软件工具(例如 CUDA)和优化库(例如 cuDNN)创造了非常低的门槛。事实上,英伟达被称为一家硬件公司,但正如应用深度学习研究副总裁布莱恩・卡坦扎罗(Bryan Catanzaro)所说,英伟达曾表示:“很多人不知道这一点,但英伟达的软件工程师比硬件工程师还多。
As a result, Nvidia has built a powerful software “moat” around their hardware. While CUDA is not open source, it is freely available and under the firm control of Nvidia. While this situation has benefited Nvidia (As it should. They invested time and money into CUDA), it has created difficulties for those companies and users that want to grab some of the HPC and GenAI market with alternate hardware.
因此,英伟达围绕其硬件建立了强大的软件 “护城河”。虽然 CUDA 不是开源的,但它是免费提供的,并且在 Nvidia 的严格控制下。虽然这种情况使英伟达受益(它应该。他们在 CUDA 上投入了时间和金钱),这给那些希望通过替代硬件抢占一些 HPC 和 GenAI 市场的公司和用户带来了困难。
Building on the Castle Foundation
The number of foundational models developed for GenAI continues to grow. Many of these are “open source” because they can be used and shared freely. (For example, the Llama foundational model from Meta) In addition, they require a large number of resources (both people and machines) to create and are limited mainly to the hyperscalers (AWS, Microsoft Azure, Google Cloud, Meta Platforms, and Apple) that have huge amounts of GPUs available, In addition to the hyperscalers, other companies have invested in hardware (i.e. purchased a massive amount of GPUs) to create their own foundational models.
为 GenAI 开发的