注:不问初衷,只看奇思妙想。
最近有个叫 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 中国香港