
如果你关注非英伟达 GPU 上运行 CUDA 应用的可能性,那你一定听说过 ZLUDA。它是一个开源项目,旨在让 AMD Radeon RX 5000 系列及更新的 GPU(包括桌面和集成显卡)能够运行未经修改的 CUDA 应用程序,并实现接近原生的性能。

本季度,ZLUDA 在多个方面取得了重要进展。以下是我们为你整理的重点更新内容:
团队规模翻倍:欢迎 Violet 加入开发团队
ZLUDA 的全职开发团队人数已从一人扩充至两人。新成员 Violet 加入不到一个月,就已在多个关键模块上做出重要贡献。
她主要参与了 llm.c 测试项目 的推进工作,后续我们会详细介绍这部分成果。
解决 AMD 驱动中的关键回归问题:comgr ABI 断裂
GPU 运行时系统(如 CUDA、ROCm/HIP、ZLUDA 和 OpenCL)都需要在运行时动态编译 GPU 代码,以支持向前兼容性。
ZLUDA 使用的是 ROCm 提供的 comgr 编译器支持库。然而,随着 ROCm/HIP 6.4 版本的发布,comgr 引入了一个微妙但影响深远的 ABI 断裂:amd_comgr_do_action 函数中操作类型的整数值被重新排序。
这导致 ZLUDA 在调用 comgr 时可能误将“编译”请求识别为“链接”,从而引发静默失败,尤其是在 Windows 平台上更为严重。
该问题已在 PR #364 和 #366 中修复。如果你使用的项目依赖 ROCm/HIP,并且在使用 ROCm 6.4 或 Adrenalin 25.5.1 时遇到意外失败,这可能是根本原因。
向位精确执行迈进:提升指令模拟精度
ZLUDA 的核心目标是在非 NVIDIA GPU 上运行未经修改的 CUDA 二进制文件。这意味着我们必须尽可能准确地模拟每条 GPU 指令的行为。
为了验证这一点,我们引入了一套基于 PTX 的测试机制。这套测试覆盖了大量指令及其修饰符组合,并与原始 NVIDIA CUDA 的输出进行对比。
目前,我们已经在 ZLUDA 上成功运行这套测试套件,并修复了其中发现的一些编译器问题(详见 PR #379)。虽然尚未完成全部指令的测试,但在一些复杂指令(如 cvt)上,我们已经实现了位精确执行。
GitHub 自动化构建上线:无需手动编译即可体验最新版本
自 PR #358 起,我们已在 GitHub 上启用自动化构建流程。这意味着开发者和用户可以更方便地获取最新版本的 ZLUDA,而无需手动编译源码。
目前这一功能仍在完善中,未来我们计划将这些构建包发布到 GitHub 页面的“预发布”区域,以提高可访问性和可见性。
日志记录能力增强:更全面捕捉 CUDA 调用行为
调试任何运行在 ZLUDA 上的 CUDA 应用程序,第一步就是完整记录其所有 CUDA API 调用行为。新版日志系统在这方面有了显著提升。
通过 PR #372 的合并,我们现在可以记录此前无法捕获的中间层交互信息。例如:
- cuBLAS 如何使用 cuBLASLt
- cuDNN 如何调用 Driver API
这对调试和功能扩展至关重要。
PhysX 支持小步推进:32 位日志收集开启新篇章
社区成员 @Groowy 开始尝试收集 32 位 PhysX 的 CUDA 调用日志,这是迈向支持 PhysX 的第一步。这一过程发现了 ZLUDA 中若干潜在问题(详见 Issue #374),其中部分还可能影响 64 位应用。
虽然完整的 PhysX 支持仍需社区进一步贡献,但这项工作已被纳入官方路线图。
llm.c 实现重大进展:从 0 到 552 次调用突破
为了验证 ZLUDA 的实际可用性,我们选择了 llm.c 中的 test_gpt2fp32cu 测试作为切入点。该项目虽小,但首次使用了完整的 CUDA 运行时和 cuBLAS 性能库。
Violet 在短时间内提交了多个 PR(#377, #380, ..., #394),使 ZLUDA 能够运行到第 552 次 CUDA 调用(此前在第一次调用即失败)。目前 44 个函数中已有 16 个实现。
这一进展不仅推动了 llm.c 的运行,也为后续支持 PyTorch 等大型项目打下了坚实基础。
数据统计
相关导航


GPT‑4o 图片精选

ClipSketch AI (剪辑·素描)

吉卜力风格图像转换

Sneos

Models.dev

Nano Banana Browser






