NVIDIA 最高的生态系统护城河 CUDA 可能不再完全坚不可摧,OpenFPM 开发者 Abhinav Singh 宣布了 OpenFPM 5.2.0 在 X 上这使得苹果Metal GPU成为该开源高性能计算框架的一级后端。 在M3 Pro上运行3D SPH坝体失效模拟的实际测试中,GPU耗时6秒,而顺序CPU仅需60秒,实现了约10倍的加速和几乎100%的GPU利用率。物理结果与原始CUDA版本高度一致。
这一重大突破主要涵盖两个方面:首先,苹果对CUDA生态系统的翻译进展已从零散的个别尝试迈向能够接受真实科学计算任务的阶段; 其次,在六小时内连接这条多层红外转换链,并非依赖单一GPU驱动的工程师,而是依靠OpenAI的GPT-5.6 Sol来帮助识别MoltenVK与SPIR-V之间的兼容性问题及设计变通方法。 对大多数人来说,这的重要性在于,当NVIDIA利用CUDA生态系统中400万开发者和512亿美元的季度数据中心收入,打造所谓的“5万亿美元护城河”时,开源社区可能正悄然准备跨越这条护城河的一角。
这个公关解决了什么问题?
OpenFPM 是由欧洲马赛克小组维护的开源 C++ 框架,致力于开发可扩展的粒子和粒子-网格混合仿真代码,支持分布式和共享内存异构系统。 长期以来,OpenFPM的GPU后端仅连接CUDA和HIP系统,意味着它只能在NVIDIA和AMD平台上运行高效计算。

该版本的设计理念不是重建 Apple Metal 的 GPU 核心,而是构建一个多层转换流水线:
- 第一层:CUDA/HIP 内核源代码。应用层保持原始内核调用样式,不涉及任何 Metal 特定 API。
- 第二层:Clang/HIP 编译器,保留内核语义,首先将 HIP 转换为 LLVM IR。
- 第三层:SPIR-V 中介声明这是由 Khronos 建立的通用 GPU 中间人代码,允许核心在兼容 Vulkan 的硬件上运行。
- 第四层:Vulkan API 调用。使用像 clspv 或 chipstar 这样的工具将 OpenCL C 编译成 SPIR-V,然后通过 Vulkan 进入 GPU。
- 第五层:MoltenVK 翻译层,将 Vulkan 指令转换为 Apple Metal API。
- 底层:苹果金属显卡(Apple Silicon,类似M3 Pro),最终执行。
这条路径的关键价值在于硬件透明度。 只要开发者不更改内核布局,理论上相同的OpenFPM代码可以在NVIDIA、AMD和苹果GPU上运行。 阿比纳夫在原文中还说:“艰难的部分完成了。 苹果硅GPU,如今已成为一流的OpenFPM后端。”
苹果生态翻译CUDA:从零星尝试到接受
近年来,尝试用苹果金属显卡运行CUDA/HIP风格程序变得相当普遍,但大多数仍处于演示阶段。 过去,开发者常常需要为苹果平台重写整个内核,或者接受只能运行向量加法的演示。 这次值得讨论的原因是,OpenFPM选择了真实的科学计算任务作为验收测试。 3D SPH 坝体失效仿真需要同时处理扫描、排序与重组、单元和邻居列表构建、幽灵粒子交换、约简操作和原子操作等模块。任何步骤中的任何错误都可能导致性能或物理结果问题。
- M3 Pro Metal GPU 执行时间:约 6 秒。
- 同一程序的连续CPU执行时间:约60秒。
- 加速度比:大约10倍。
- GPU利用率接近100%,显示出极高的转换效率。
- 物理结果一致性:关键参数与原始CUDA版本的粒子轨迹高度匹配,准确性无损失。
粒子存储随粒子数量 N 线性增长,邻居搜索的工作量约为 O(N·k)(其中 k 是恒定密度下的邻居数)。 这一10倍加速用于单设备后端比较。未来,支持苹果Thunderbolt的RDMA技术将实现多台机器的动态负载均衡,进一步扩展仿真规模。
社区内部仍对“在Mac上运行科学计算”存在疑虑。 在Hacker News上,有人直言不讳地表示,与其花时间在翻译层上,不如使用更合适的系统; AMD和社区对这一翻译层一直持不同看法。AMD更倾向于直接在上游项目(如PyTorch、llama.cpp)中实现HIP支持,因为追求逐个错误的兼容性被视为徒劳。 这一次,OpenFPM证明了一条不同的道路:首先,实现应用层抽象,使同一核心代码能够透明地通过NVIDIA、AMD和Apple GPU的中间层运行。
人工智能参与改进:GPT-5.6 Sol在这条链条中做了什么?
OpenFPM 能够在六小时内连接这条翻译链的原因,是因为 GPT-5.6 Sol 的角色值得深入探讨。 Abhinav公开指出了这些片段中AI的实际参与:
- 设备端内存布局:Apple Metal的内存模型与CUDA有根本不同,GPT-5.6 Sol协助构建了设备端内存布局。
- 单精度限制处理:Metal 不支持 64 位双精度浮点。AI 编译旗帜以统一所有核,使用单精度常数,移除了之前由 Hack Code 维护的兼容逻辑。
-cl-single-precision-constant - 易发性装饰器问题:MoltenVK 在 SPIR-V 中不尊重挥发性装饰器,导致加载/存储指令重新排序,进而影响原子操作的正确性。 GPT-5.6 Sol发现此问题后,设计了SPIR-V层相应的变通方案,并建议向MoltenVK项目报告复制用例以推动上游补丁。
- ABI 适配代码:P R 中的 cmake/MoltenVKKernelABI.cpp 文件包含 AI 生成的 ABI 适配代码。
与以往在SPIR-V和MoltenVK等低层环境中的调试经验相比,工作负载通常是每周或每月计算一次。 AOYii在一篇详细文章中评论说,这对应于过去需要数周手动调试的手动调试,现在压缩到数小时。 人工智能不再参与应用层代码生成,而是参与SPIR-V中介表示设计、跨平台内存模型调优以及GPU驱动的兼容性检查。
这一进展对NVIDIA的护城河意味着什么?
OpenFPM PR #18 规模较小,但它展示了一种绕过 CUDA 护城河的开源工作流程。 NVIDIA 2026年市值5万亿美元将由其软件堆栈推动:拥有400万开发者,涵盖PyTorch、TensorFlow、JAX、cuDNN和TensorRT的生态系统,以及90%的数据中心业务由其商业模式收集。
这条翻译链有趣的是它使用多层红外转换,而不是重写核心。 类似的开源项目如 cuda4mac(GitHub haj/cuda4mac)也采用 SPIR-V + LLVM 转换路线,但 OpenFPM 是第一个通过真实科学计算任务验证的版本。 对于Mac用户来说,这意味着以前只能在服务器上运行的粒子仿真现在可以在笔记本本地完成; 对NVIDIA来说,尽管苹果GPU短期内仍受限于双精度浮点数不足,且无法直接取代高效计算集群,但从长远来看,更多开发者将继续在Mac平台上工作,有效地在护城河周围形成了一个可用的滩头阵地。
开发者的坦白:实用价值与实际限制
阿比纳夫坦率地谈到了他为这一突破所做的自我定位:
- 本地调试要求:团队的大型模拟仍运行在集群上,但在运行大型模拟之前,必须先使用小型模拟进行调试。 依赖CPU的本地调试非常慢,模拟结果通常长达数GB,无法通过SSH返回。远程桌面笨重且难用,所以本地运行最方便。
- 代码可移植性:笔记本电脑调试的代码可以直接放置在GPU集群上,实现自动扩展。
- 硬件抽象层验证:运行在苹果架构上证明了设备抽象层设计的有效性。
Abhinav进一步指出,苹果Metal GPU目前最大的局限在于其对高精度浮点计算的支持不足。许多专业科学计算领域依赖双精度计算,因此NVIDIA的专业GPU在天气预报和航空航天仿真等高效计算场景中仍具优势。 这次OpenFPM PR #18的重要性在于将翻译链整合到适合本地开发的水平。至于替代专业集群,那是另一条路。
