CUDA应用只能在NVIDIA显卡上跑,这件事被一个叫「CUDA for AMD on Windows」的项目正面挑战了。它的目标很直接:在Windows环境下,让AMD制GPU执行原本为CUDA编写的应用程序。

项目地址挂在GitHub上,作者是Speedstu。实现路径不是重写应用,而是搭一层兼容环境——用ZLUDA做CUDA兼容层,再叠上AMD自家的ROCm/HIP栈,拼出一个可复现的Windows CUDA兼容环境。

打开网易新闻 查看精彩图片

它到底怎么把CUDA调用接过去的

打开网易新闻 查看精彩图片

整个链路可以理解成一条逐层翻译的管道。最上层是面向CUDA的Windows应用,往下交给ZLUDA,ZLUDA负责对接cuBLAS、cuSPARSE、cuFFT这些CUDA库的兼容实现,再往下落到rocBLAS、hipBLASLt、rocSPARSE和HIP,最终由AMD GPU执行。

换句话说,应用以为自己在跟CUDA说话,中间那层替它把话翻译成了AMD能听懂的语言。这条链路里每一环都是现成组件,项目做的是把它们串起来并保证可复现。

目前只在一张卡上验证过

项目明确标注,验证对象是AMD Radeon RX 9060 XT,其他AMD制GPU只能算「兼容候选」,不在已验证范围内。这个边界划得很清楚,没有把话说满。

验证时使用的软件版本如下:

  • ZLUDA v6-preview.69(官方发布版)
  • AMD HIP SDK 6.4
  • LibTorch 2.3.0 + cu118
  • nvcuda、cuBLAS、cuBLASLt、cuSPARSE、cuFFT(通过cuda_check检测)

安装流程分两步。先装AMD侧的前置条件:最新的AMD GPU驱动,以及对应Windows的AMD HIP SDK,具体版本取决于GPU架构。然后从官方GitHub克隆仓库,执行install.ps1脚本。

限制清单比功能清单更长

打开网易新闻 查看精彩图片

项目自己列出的限制事项值得逐条看清楚,因为它决定了这东西现在能干什么、不能干什么。

  • 被认可为完全验证过的项目参考只有RX 9060 XT / gfx1200
  • ZLUDA不是完整的CUDA实现
  • cuda_check结果为「合格」也不代表正确性有保证
  • Windows上只公开了ROCm生态整体中极小一部分功能
  • cuDNN / MIOpen在已验证的稳定版HIP SDK路径上不可用
  • NCCL、TensorRT、不受支持的PTX、部分自定义CUDA扩展可能无法运行

这几条里,cuDNN不可用和NCCL可能跑不起来,直接关系到深度学习训练和推理场景能不能落地。ZLUDA本身不是完整CUDA实现这一点,也意味着兼容性天花板是客观存在的。

值得注意的是,cuda_check通过不等于结果正确——这句话是项目方自己写下的,等于提前把预期压到了合理区间。

这件事的意义在哪

从项目定位看,它想解决的是AMD制GPU的可用范围问题,以及和CUDA生态的衔接问题。Windows平台上CUDA应用存量巨大,如果这层兼容环境能稳定跑起来,AMD显卡在这类场景里就多了一条路。

但就当前状态而言,它更像一个边界清晰的实验性方案:一张卡验证过,一条链路串通了,限制清单列得明明白白。对手里正好有RX 9060 XT、又想试试CUDA应用的开发者来说,这是个可以动手验证的起点;对其他AMD显卡用户,它暂时还只是「候选」。