英伟达禁止通过转换层兼容CUDA,针对中国企业?

  【文/观察者网吕栋】

  毫无疑问,英伟达是这波 AI 浪潮的最大赢家。截至 3 月 5 日收盘,这家美国 GPU 巨头的市值已经暴涨到 2.15 万亿美元(约合人民币 15.48 万亿元),仅次于微软和苹果,排名美股第三。

  在很多吃瓜群众看来,英伟达之所以能最先吃到 AI 大模型的蛋糕,自家的 GPU 功不可没,这确实没错。但实际上,GPU 之上,英伟达花费近 20 年打造的 CUDA 生态护城河,也不可或缺。

  所谓 CUDA,全称是 Compute Unified Device Architecture(统一计算设备架构)。它是一种基于 GPU 的通用计算框架。简单来说,CUDA 让英伟达的 GPU 不仅可以处理图形任务,也可以处理科学计算、机器学习等复杂耗时的并行计算,以及为 AI 大模型训练、推理提供算力。

  长期以来,英伟达 GPU 和 CUDA 的高效结合,吸引了数百万开发者为其开发程序。

  由此,英伟达打造了深厚的 CUDA 生态壁垒。以至于如今新的 GPU 玩家入局时,首先考虑的就是如何兼容 CUDA,否则将会给用户和开发者带来很高的学习成本。有外媒在评论英伟达时直言,身为行业领导者有利也有弊,“一方面大家依赖你,另一方面也想站在你的肩膀上。”

  对于新进者而言,兼容 CUDA 主要有两种方式:重新编译代码和使用转换层(translation layers)。

  相对来说,使用像 ZLUDA 这样的转换层,在非英伟达硬件上兼容 CUDA 是最便捷的途径。尽管英特尔和 AMD 出于法律层面的考虑不再进一步开发 ZLUDA,但这种技术仍然具有可行性。

  在一些分析看来,当转换工具未成气候时,英伟达可能会睁一只眼闭一只眼。但当越来越多公司涌入 GPU 领域,甚至威胁到英伟达在 AI 加速计算领域的霸权时,英伟达便会采取行动。

  日前有国外软件工程师发现,英伟达在 CUDA 11.6 及更高版本的 EULA(最终用户许可协议)中的某条款明确提到:“您不能逆向工程、反编译或反汇编使用此 SDK 生成的任何结果,并在非英伟达平台上进行转译。”这句话在 CUDA 11.4 和 11.5 版本的安装 EULA 中并不存在。

  英伟达 CEO 黄仁勋

  基于此,国外科技媒体 Tom's Hardware 认为,英伟达针对 CUDA 的限制,似乎旨在阻止英特尔和 AMD 参与的 ZLUDA 等项目,“或许更关键的是,(为了防止)一些中国 GPU 制造商借助转换层利用 CUDA 代码。”

  这篇报道提到,中国 GPU 企业登临科技设计的处理器,具有“与 CUDA/OpenCL 等编程模型兼容的计算架构”,并称如果考虑到逆向工程的难度(除非已掌握有关英伟达 GPU 架构的所有底层细节),很可能采用了某种转换层技术。该报道还提及另一家中国 CPU 创企摩尔线程,并称其 MUSIFY 转换工具旨在兼容 CUDA,并怀疑摩尔线程可能涉及移植代码。

  有行业人士告诉观察者网,CUDA 本身是闭源的,没有授权企业可以使用,通过转换层直接使用英伟达 CUDA 的源代码,会涉及知识产权方面的法律风险。

  但很快,摩尔线程便发布了澄清声明,强调摩尔线程 MUSA/MUSIFY 不涉及英伟达 EULA 相关条款,“开发者可放心使用”。

  摩尔线程表示,MUSA 是该公司自主研发、拥有全部知识产权、软硬一体的全功能 GPU 先进计算统一系统架构,与 CUDA 无任何依赖关系。MUSIFY 是摩尔线程面向广大 MUSA 开发者提供的开发工具,方便用户在 MUSA 计算平台上进行应用移植与开发,可以让开发者将自己的 C++ 源代码,转换成 MUSA C++ 源代码,再通过 MUSA 编译器 MCC 编译生成基于 MUSA 指令集的二进制代码,最终运行在摩尔线程全功能 GPU 上。

  换句话说,摩尔线程否认了移植 CUDA 代码。有摩尔线程内部人士向观察者网表示,该公司是将开发者原本的 C++ 代码转换成 MUSA 语言,基本属于重新编译代码,“我们要重新建立一个规则和 CUDA 类似的 MUSA 系统,还要专门去移植算子库,软件团队工作量会很大,但这样效率很高,对开发者很有帮助。”

  另一家国内 GPU 创企壁仞科技也向观察者网透露,BIRENSUPA 软件开发平台是壁仞科技自主研发的软件开发平台,从底层架构、指令集到编译层工具均为自主研发,与此次报道无关。

  有行业人士坦言,英伟达此举并非主要针对中国企业,而是想针对 ZLUDA,这种方案直接使用了英伟达的源代码,“如果这么轻易就可以让英伟达的代码跑在别家的 GPU 上,那英伟达的生态壁垒就不复存在了。”

  需要指出的一点是,英伟达最新动作并非禁止兼容 CUDA,而只是禁止通过转换层利用 CUDA 代码,也就是提高了兼容 CUDA 的难度。Tom's Hardware 的报道也提到,重新编译现有的 CUDA 程序仍然完全合法。为了简化这一点,AMD 和英特尔都有工具分别将 CUDA 程序移植到他们的 ROCm ( 1 ) 和 OpenAPI 平台。

  对英伟达来说,尽管通过转换层使用 CUDA 代码可能有法律依据,但升级兼容难度可能也是一把双刃剑。

  前述外媒指出,随着 AMD、英特尔、Tenstorrent 和其他公司开发出更好的硬件,更多的软件开发人员将倾向于为这些平台进行设计,而英伟达的 CUDA 主导地位可能会随着时间的推移而减弱。

  此外,专门为特定处理器开发和编译的程序,将不可避免地比通过转换层运行的软件运行得更好,这意味着如果能够吸引软件开发人员加入的话,AMD、英特尔、Tenstorrent 和其他公司能够在与英伟达的竞争中获得更好的竞争地位。