挑战英伟达的护城河 —— SCALE 源码直译让 CUDA 程序跑上 AMD

注:不问初衷,只看奇思妙想。


最近有个叫 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:

相关推荐
码力码力我爱你1 个月前
C++现代教程四
开发语言·c++·算法·极限编程
斐夷所非2 个月前
I18N/L10N 历史 / I18N 指南 / libi18n 模块说明
极限编程
斐夷所非3 个月前
优化页面加载时间
极限编程
斐夷所非3 个月前
“Hello, World!“ 历史由来
极限编程
斐夷所非3 个月前
Code Page 历史
极限编程
Dreammmming Time3 个月前
JAVA Thread.yield()方法(请求释放CPU)的理解及在ForkJoinPool中的使用
java·多线程·极限编程·时间片
胡斌附体6 个月前
软考之零碎片段记录(三)
低代码·软考·极限编程·并列争球法
生生不息~9 个月前
《拥抱变化:解析极限编程》读书笔记
低代码·读书笔记·极限编程
深圳市青牛科技实业有限公司10 个月前
直流有刷电机调速电路,输出端内置14V钳位结构,具有电源电压范围宽、功耗小、抗干扰能力强等功能的国产芯片GS016的描述
驱动开发·单片机·嵌入式硬件·极限编程