返回列表
技术突破RustGPUSIMD

Rust SIMD 登陆 GPU:VectorWare 实现 Rust 便携式 SIMD 的 GPU 原生支持

VectorWare 公司宣布成功在 GPU 上实现了 Rust 的便携式 SIMD(core::simd)支持。这一里程碑式的进展允许开发者利用熟悉的 Rust 抽象编写高性能 GPU 应用程序。通过将 GPU 视为一种新型的矢量硬件,VectorWare 实现了在 GPU 线程(Warp)内部的细粒度并行处理,标志着 GPU 原生软件开发迈出了关键一步。

Hacker News

核心要点

  • 技术突破:VectorWare 成功在 GPU 硬件上运行 Rust 的便携式 SIMD(core::simd)。
  • 并行层级提升:实现了在 GPU 线程(Warp)内部的并行化,而不仅仅是线程间的并行。
  • 硬件抽象化:利用 Rust 的 Simd<T, N> 泛型,将 GPU 视为与 CPU 类似的矢量硬件目标。
  • 轻量化支持:该功能基于 Rust 的 core 库实现,无需完整的 std 标准库支持。

详细分析

从线程并行到指令级并行的跨越

在 VectorWare 之前的技术路径中,他们已经实现了将 Rust 线程映射到 GPU 的 Warp(线程束)上。虽然这允许在 GPU 上运行多个并发线程,但未能充分利用每个线程或 Warp 内部的并行通道。在传统的 CPU 开发中,这种线程内部的并行是通过 SIMD(单指令多数据)实现的。SIMD 允许单个指令同时操作打包在矢量单元中的多个数据元素。例如,标量代码只能一次相加两个数字,而 SIMD 加法可以同时处理两个包含多个(如 8 个)f32 值的矢量,并一次性产生多个结果。VectorWare 的这一进展,成功将这种在操作系统调度层级之下的数据并行能力带到了 GPU 领域。

Rust 便携式 SIMD 的抽象优势

从历史上看,在 Rust 中编写 SIMD 代码通常需要调用特定架构的供应商指令(Vendor Intrinsics),例如 x86-64 架构下的 _mm256_add_ps 或 Arm 架构下的 vaddq_f32。这种方式导致程序如果需要跨平台运行,就必须为每个架构编写独立的实现。Rust 的便携式 SIMD(Portable SIMD)通过在这些指令之上增加一层抽象解决了这一痛点。它提供了一个通用的 Simd<T, N> 类型,开发者只需针对该类型编写算术、比较、归约和通道洗牌(Lane Shuffles)逻辑,编译器就会自动将其转换为目标硬件(如 CPU 或现在的 GPU)所支持的特定矢量指令。VectorWare 意识到 GPU 本质上也是一种矢量硬件,因此可以成为便携式 SIMD 的目标平台。

简化 GPU 编程的开发体验

VectorWare 的愿景是让开发者能够利用熟悉的 Rust 抽象来发挥 GPU 硬件的全部性能。通过支持 core::simd,开发者不再需要深入研究复杂的 GPU 底层指令集,而是可以使用标准的 Rust 语法来编写高性能代码。此外,由于便携式 SIMD 存在于 Rust 的 core 库中而非 std 库,它甚至不需要 VectorWare 此前为 GPU 引入的完整 std 支持,这使得代码更加轻量且易于在受限的 GPU 环境中部署。

行业影响

VectorWare 的这一成果对于高性能计算和 GPU 原生软件行业具有重要意义。首先,它极大地降低了编写高性能 GPU 代码的复杂性,使得 Rust 开发者能够更无缝地将其在 CPU 上的并行优化经验迁移到 GPU 上。其次,这进一步巩固了 Rust 作为下一代系统级编程语言在异构计算领域的地位。通过提供统一的 SIMD 抽象,软件的可移植性和可维护性得到了显著提升,预示着未来可能会有更多复杂的、高性能的应用直接在 GPU 上以原生方式构建,而无需依赖传统的、碎片化的 GPU 编程模型。

常见问题

什么是 Rust 的便携式 SIMD(Portable SIMD)?

它是 Rust 提供的一种高级抽象,通过 core::simd 模块中的 Simd<T, N> 类型,允许开发者编写不依赖于特定 CPU 或 GPU 架构的矢量化代码。编译器负责将这些通用代码翻译成底层硬件支持的特定指令。

为什么在 GPU 上实现 SIMD 很重要?

传统的 GPU 编程往往关注线程间的并行,而 SIMD 提供了线程内部(指令级)的并行能力。这使得在处理大规模数据运算时,能够更充分地利用 GPU 硬件的矢量执行单元,从而大幅提升计算效率。

VectorWare 的这项技术是否需要 Rust 标准库(std)?

不需要。根据 VectorWare 的说明,便携式 SIMD 位于 Rust 的 core 库中,这意味着它可以在没有完整标准库支持的环境下运行,这对于资源受限或特殊的 GPU 运行环境非常有利。

相关新闻

Cloudflare 优化 Kimi 与 GLM 推理:通过 FP8 量化实现更小、更快、更安全的边缘 AI
技术突破

Cloudflare 优化 Kimi 与 GLM 推理:通过 FP8 量化实现更小、更快、更安全的边缘 AI

Cloudflare 宣布在其 Workers AI 平台上针对 Moonshot 的 Kimi K 系列和 Z.ai 的 GLM 模型进行了深度优化。通过引入 KV 缓存量化(从 BF16 转为 FP8)、模型权重压缩以及缓存保护技术,Cloudflare 在保持模型准确性的同时,成功将 Kimi K2.6 的上下文处理能力提升了一倍,达到约 137 万个 token。这些优化基于 SGLang 开源框架,旨在降低大规模推理成本并提升边缘计算效率。

突破内存限制:WASTE引擎实现29GB内存运行2.78万亿参数Kimi K3模型
技术突破

突破内存限制:WASTE引擎实现29GB内存运行2.78万亿参数Kimi K3模型

WASTE(权重感知流式张量引擎)是一款用C语言编写的嵌入式推理引擎,成功实现了在仅有29GB可用内存的消费级笔记本上运行拥有2.78万亿参数的Kimi K3完整模型。该引擎通过将模型主干保留在内存中并从磁盘流式传输专家权重,解决了超大规模模型无法适配主流消费级硬件的难题。尽管推理速度约为每秒0.5个token,但其验证了在有限硬件资源下运行超大参数模型的可行性。

技术突破

Ternlight:仅7MB的浏览器端WASM嵌入模型,实现全本地CPU搜索

Ternlight是一款创新的轻量级嵌入模型,其引擎、权重和分词器总计仅为7MB。该模型利用WebAssembly (WASM)技术,能够直接在浏览器的本地CPU上运行,无需服务器支持。目前该技术已成功应用于React文档的全文搜索,展示了在边缘侧实现高效语义检索的可能性。