多年来,AMD一直致力于简化将针对NVIDIA CUDA API编写的代码库移植到HIP/ROCm平台的过程,尽管如此,开发者仍需付出努力。工具集已得到改进,如HIPIFY帮助自动生成代码,但这并非简单、即时且有保障的解决方案,尤其是在追求最佳性能时。过去两年,AMD悄然资助了一项计划,旨在实现二进制兼容性,使许多基于CUDA的应用程序能够在库级别上运行于AMD ROCm堆栈之上——无需修改源代码即可直接替换。对于许多实际工作负载而言,这为终端用户提供了一种无须开发者介入就能运行CUDA软件的解决方案。以下是对这一现已成为开源项目的“秘密工程”的更多介绍,以及我对在Radeon GPU上构建的这种CUDA实现进行的一些测试和性能基准测试。
数年前,您可能还记得ZLUDA,这是一个旨在使CUDA支持Intel图形的项目。这个开源项目旨在为Intel图形提供一个可以直接替代CUDA的实现,建立在Intel oneAPI Level Zero之上。由于个人原因,ZLUDA项目最终停止了开发。然而,事实证明,该项目的开发者安杰伊·扬尼克(Andrzej Janik,当时也是Intel的雇员)在2022年被AMD雇佣,有效地将ZLUDA改编用于AMD GPU上的HIP/ROCm。在AMD与扬尼克签约之前,Intel曾考虑过发展ZLUDA,但最终放弃了这个想法,并未为该项目提供资金支持。
在过去两年中,安杰伊·扬尼克将ZLUDA应用于Radeon GPU,并取得了成功:许多CUDA软件可以在未经任何修改的情况下在HIP/ROCm上运行——或者换句话说,只需像平常一样运行二进制文件,确保加载了ZLUDA库以替代CUDA。出于未知的原因,AMD今年决定停止资助该项目,并不将其作为软件产品发布。但好消息是,合同中有一个条款规定,在这种情况下,如果合同结束,扬尼克可以将工作开源。
安杰伊·扬尼克主动联系并提供了访问AMD ROCm版新ZLUDA实现的机会,让我得以提前测试并在今天的公开宣布前进行基准测试。经过几天的测试,我的体验非常积极: