Hacker News 中文摘要

RSS订阅

Mojo中的Apple Silicon GPU支持 -- Apple Silicon GPU Support in Mojo

文章摘要

Mojo的最新版本已初步支持Apple Silicon GPU,旨在通过让开发者利用现代Mac中的GPU进行编程,进一步普及GPU加速算法和AI模型的开发。使用此功能需配备Apple Silicon Mac(支持M1至M4系列芯片)、macOS 15及以上版本及Xcode 16及以上版本。开发者可通过克隆Modular仓库并尝试GPU函数示例来体验这一新功能。

文章总结

标题:Mojo 对 Apple Silicon GPU 的初步支持 - GPU 编程 - Modular

主要内容:

Mojo 的最新夜间版本(以及即将发布的稳定版本)首次支持了 Apple Silicon GPU 这一新的加速器架构。这一举措旨在降低 GPU 编程的门槛,特别是通过让开发者能够在每台现代 Mac 上使用 Mojo 进行 GPU 加速算法和 AI 模型的开发,进一步推动 GPU 加速技术的普及。此外,这也为 AI 模型从本地到云端的开发提供了新的路径。

使用条件: - 需要一台搭载 Apple Silicon 芯片(支持 M1 至 M4 系列)的 Mac,并运行 macOS 15 或更新版本。 - 需要安装 Xcode 16 或更新版本,因为 Mojo 使用的 Metal Shading Language 3.2(AIR bitcode 版本 2.7.0)依赖于 macOS 15 SDK。如果使用旧版 macOS 或 Xcode,可能会遇到不兼容的 bitcode 版本错误。

示例与测试: - 开发者可以克隆 modular 仓库,并在 examples/mojo/gpu-functions 目录中尝试 GPU 函数示例。目前,除了 reduction.mojo 外,其他示例均可在最新夜间版本中运行。 - Mojo GPU 谜题的前 15 个问题现在也支持 Apple Silicon GPU,但 Pixi 环境尚未更新,因此可能需要手动运行 Mojo 代码。

当前功能限制: - 许多硬件功能的内置支持尚未完善,部分 Mojo GPU 示例(如 reduction.mojo 和复杂矩阵乘法示例)无法运行。 - GPU 谜题 16 及以上需要更高级的硬件功能。 - 目前不支持基本的 MAX 图、MAX 自定义操作、PyTorch 互操作性、运行和部署 AI 模型。

下一步计划: - 解决技术障碍,逐步支持更多功能,包括处理 MAX_THREADS_PER_BLOCK_METADATA、支持 GridDimlane_id、启用 async_copy_* 等。 - 改进错误提示,提供更好的调试指南。

工作原理: - Mojo 代码通过多步编译过程在 Apple Silicon GPU 上运行,首先将 Mojo GPU 函数编译为 Apple Intermediate Representation (AIR) bitcode,然后通过 MetalDeviceContext 使用 Metal-cpp API 将 AIR 编译为 .metallib 并在设备上执行。 - 开发者无需关心这些底层细节,Mojo 会自动处理与加速器的交互。

未来展望: - 虽然目前引入新 AIR 内置支持和编译 .metallib 的基础设施仍需 Modular 开发者完成,但随着基础功能的完善,社区成员将能够更多地参与兼容性提升工作。 - Modular 将分享更多关于如何优化和利用这一新硬件家族的文档和内容。

总结: 这是 Mojo 在 Apple Silicon GPU 上迈出的第一步,虽然功能尚不完善,但团队对这一新架构的潜力充满期待,并将持续更新功能。

评论总结

评论主要围绕Mojo编程语言及其在机器学习和系统软件中的潜力展开,观点多样且各有侧重。

支持Mojo的观点: 1. Mojo的潜力:评论者认为Mojo结合了Python的兼容性和Rust的性能,适合机器学习应用,并可能成为Rust和Go的竞争对手。 - "We need a Pythonic language that is compatible with the Python ecosystem designed for machine learning use-cases and compiles directly to an executable with direct specialized access to the low-level GPU cores and is a fast as Rust." (rvz) - "If Mojo focuses on systems software (and gets rid of exceptions - Chris, please <3) it will be a serious competitor to Rust and Go." (lordofgibbons)

  1. 技术优势:评论者提到Mojo可能取代CUDA,并提升开发者生产力。
    • "Just the notion of replacing the parts of LLVM that force it to remain single threaded would be a major sea change for developer productivity." (GeekyBear)

对Mojo的质疑: 1. Python的局限性:评论者认为Python不适合作为高性能并行处理系统的基础。 - "But I just think Python is not the right language to try to turn into this super-optimized parallel processing system they are trying to build." (timmg)

  1. 市场接受度:评论者质疑Mojo是否会成为另一个深度学习DSL,并认为其可能难以获得广泛接受。
    • "Mojo is never going to be anything but a vanity project." (lqstuart)

其他观点: 1. 用户体验:评论者对Mojo的注册流程表示不满。 - "Signing up to try a programming language (Mojo) is as bad as logging in to your terminal before using it (Warp)." (behnamoh)

  1. 技术兴趣:评论者对Mojo语言本身表示期待,而非其机器学习功能。
    • "I'm very excited for Mojo - more about the programming language itself than all the ML stuff." (rubymamis)

总结:Mojo在性能和兼容性方面展现出潜力,但也面临Python局限性和市场接受度的挑战。