上周末,英国初创企业Spectral Compute宣布推出一个名为SCALE的GPGPU工具链:主要作用是能够让CUDA程序直接跑在AMD GPU上,不需要进行代码修改——此事最早应该是国外媒体Phoronix报道的。
SCALE在此扮演的主要角色是,针对AMD处理器自动编译CUDA代码。换句话说,也就是原本给英伟达GPU写的软件,借助SCALE可以很方便地切换到其他非英伟达平台,不需要进行代码移植,而且据说是完全遵守EULA最终用户许可协议的。
SCALE工具怎么工作的?
从外媒的报道来看,SCALE面向非英伟达GPU——现在应该确切为AMD GPU,编译CUDA代码,生成binary;实现了CUDA兼容,包括“对于Inline PTX asm以及nvcc C++的支持”;生成的代码实现了AMD ROCm 6的可用。
Phoronix在报道中提到,SCALE的能力令其成为了英伟达nvcc编译器的“即插即用替代品”,“还有个‘扮演’NVIDIA CUDA Toolkit的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这样的工具。毕竟谁希望自己多年培育出的生态,最后为他人做了嫁衣呢?
- 只有竞争才有发展,垄断是行不通的