无需任何修改转换,AMD显卡也跑起原版CUDA程序了!
英国一家初创公司,推出了针对AMD的CUDA程序编译工具,而且免费商用。
工具一经发布就引发了网友们的广泛热议,并登顶了HackerNews热榜。
![图片[1]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F91f89c5ej00sgpc7z000nd000ts004ym.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
该工具名为SCALE,开发者给它的定位是一个GPGPU(通用GPU)编程工具包。
![图片[2]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2Fdc45e48dj00sgpc7z001jd000u000hcm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
目前已有大模型框架llama-cpp等9个程序通过测试,实现了正常运行。
与其他实现方式不同,SCALE直接模拟CUDA工具包的安装,不需要转换成其他语言就能源到源地完成编译。
因此,像内联PTX这种英伟达专用的中间语言,SCALE同样能够提供支持。
![图片[3]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](http://cms-bucket.ws.126.net/2019/10/14/c66f41ca219849a987b74f5b496dd9db.png)
无需转换,让AMD跑起CUDA
官网介绍显示,SCALE主要有三个组成部分——兼容的nvcc编译器、CUDA运行时和驱动API的AMD实现,以及ROCm库。
其中编译器可以把用包括nvcc、内联PTX等在内的CUDA专属语言编写的程序,直接编译成可在AMD GPU上运行的二进制代码。
ROCm库则用来提供“CUDA-X”API,SCALE在处理cuBLAS和cuSOLVER等库时均采用这种方式。
![图片[4]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F4b4a168ej00sgpc7z001bd000u000bvm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
SCALE的关键创新点在于按原样接受CUDA程序,而不必将它们移植到另一种语言,兼容nvcc和clang等多种编译方式,同时现有的构建工具和脚本(如cmake)可以正常工作。
按照官方的说法,SCALE实现了对CUDA的完全兼容,让开发者无需针对不同GPU平台分别编写代码。
这一点与AMD推出的HIP存在很大不同,因为HIP是通过一定方式对CUDA代码进行重写,遇到复杂的宏可能无法正确理解,也不支持内联PTX等专属语言。
甚至SCALE作者认为,HIP并不能解决CUDA兼容性问题。
另外,SCALE的语言是CUDA的超集,提供一些可选的语言扩展,可以使希望摆脱nvcc的开发者更轻松、更高效地编写GPU代码。
作者表示,希望未来开发者可以只编写一次代码,就能不同硬件平台上运行,并正在着手通过弥合流行的CUDA编程语言和其他硬件供应商之间的兼容性差距。
目前,SCALE对AMD各系列GPU的支持情况如下:
- 已支持:gfx1030(RX6000系列)和gfx1100(RX7000系列)
- “似乎有效”(seem to work):gfx1010(RX5000系列)和gfx1101
- 正在适配:gfx900(RX Vega系列)
另外,作者测试了一些CUDA开源项目,并利用SCALE成功运行了9款CUDA应用。
![图片[5]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F319d0dd1j00sgpc7z0017d000u000igm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
不过,SCALE毕竟是个全新的项目,所以作者也准备了从安装到编译的一系列教程,给出了不同类型的示例程序。
教程关键步骤都附有相关代码,甚至包括了如何判断自己GPU的型号,可以说是非常细致了。
![图片[6]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2Fc8609fe5j00sgpc7z002fd000u000oom.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
如果使用过程中遇到问题,作者也介绍了常见故障的排除方式,同时还开通了Discord论坛,可与开发团队直接沟通交流。
![图片[7]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F0b8cfbe6j00sgpc7z000pd000u000bim.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
打造出SCALE的这家初创公司名为Spectral Compute,2018年成立于英国,自称对CPU和GPU的架构有深入的了解,目标是帮助开发者高效利用算力资源。
![图片[8]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2Fe4d0a2d4j00sgpc7z0020d000u000gdm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
![图片[3]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](http://cms-bucket.ws.126.net/2019/10/14/c66f41ca219849a987b74f5b496dd9db.png)
网友:挑战英伟达护城河?
有网友认为,如果SCALE真能有(宣传中的)效果,那么将对英伟达护城河发起挑战,让AMD与之展开直接竞争。
![图片[10]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F8d3c38d7j00sgpc7z000sd000u00083m.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
不过,现在下定论未免为时过早,毕竟SCALE官方也承认目前和原版CUDA相比还存在一些缺陷。
而且开发者也明确表示有一些CUDA API和功能并不被支持,但也没有给出具体的列表。
![图片[11]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F7817fba9j00sgpc7z0016d000u0009xm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
关于“AMD方案”的更多不足,一名自称和SCALE团队交流过的网友表示,目前的SCALE还无法操作TensorCore,也就意味着AMD上跑不了FlashAttention加速框架。
另外由于N卡上有强大的矩阵乘法单元,所以即使能编译运行,AMD卡上的性能可能也不及N卡。
![图片[12]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F1e74df3fj00sgpc7z001nd000u0009im.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
更有网友认为,英伟达一家独大的原因是AMD不愿意投资让其GPU拥有更高的机器学习性能(而不只是拥有CUDA这一个优势)。
![图片[13]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F7c5295d2j00sgpc7z000td000u0005tm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
即便能够高效运行,AMD卡是否真的经济实惠且容易获得,同样是一个问题。
![图片[14]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F449db4c8j00sgpc7z001cd000sq008um.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
还有一波网友的观点是,最大的问题不是技术上能不能运行,而是背后的法律问题。
这个问题同样引发了广泛的讨论,不过目前也暂未有定论。
有人认为SCALE像ZLUDA(另一种在AMD上运行CUDA程序的方式)一样存在法律疑点,有可能招致英伟达的诉讼。
![图片[15]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F1b8e22e7j00sgpc7z0015d000u000csm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
具体来说,根据英伟达的EULA条款,CUDA SDK只允许开发在N卡上运行的应用程序,这可能禁止了类似SCALE这样的兼容实现。
![图片[16]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2F6fc5f3b9j00sgpc7z000wd000u00061m.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
但立马就又有网友说,SCALE并没有用到英伟达的“SDK”,何谈SDK使用协议呢?
![图片[17]-在AMD卡上模拟CUDA,原版程序直接编译运行-开放智能](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0716%2Fadd06987j00sgpc7z001dd000u0006wm.jpg&thumbnail=960x2147483647&quality=75&type=jpg)
总之,无论是技术不足还是法律问题,对于这个新工具的讨论都还在持续进行。
至于到底好不好用,这就要由开发者用脚投票了。
参考链接:
[1]https://docs.scale-lang.com/
[2]https://news.ycombinator.com/item?id=40970560
暂无评论内容