Rust 的 portable SIMD 终于跑在 GPU 上了
Rust SIMD on the GPU
VectorWare 宣布实现了一项技术突破:Rust 的 portable SIMD 现在可以直接在 GPU 上运行。过去,GPU 编程往往需要依赖特定架构的内联汇编,但我们将 Rust 的 `core::simd` 抽象层映射到了 GPU 的 warp 执行模型上。这意味着开发者可以用同一套 Rust 代码,在 CPU 和 GPU 之间无缝切换,无需重写。通过将 SIMD 向量直接对应到 GPU 的 lane,我们不仅保留了 Rust 的类型安全和借用检查,还解锁了线程内的数据并行能力。这标志着 GPU 原生 Rust 开发迈出了关键一步,让高性能计算变得更加通用和简洁。
在 VectorWare,我们意识到 GPU 不过是 portable SIMD 可以针对的又一种向量硬件。
HN 评论区
111- O3marchnative
作者提到了 Rust 的 portable SIMD 库 [0]。portable SIMD 唯一的问题是它仅在 nightly 版本上可用。我在我的 FFT crate 中用过它,但为了得到一个在 stable 版本上也能工作的 portable SIMD 方案,我们不得不切换到 fearless_simd crate [1]。
- 6r17
我头都疼了——我居然蠢到以为 SIMD 只是 CPU 的东西。我不明白为什么要把它移植到 GPU 上。能让我感到惊讶,这点必须大力表扬。
- grokcodec
我超爱这种“每个 portable SIMD 的例子都不可移植”的现象。
它们指定了一个固定的 SIMD 宽度,所以根本不可移植。好吧,不是性能上的不可移植,但我们当初用 SIMD 又是为了什么呢?
- camel-cdr
非常有意思。
但当你开始在海量数据上进行 3D 计算时,GPU 编程会变得相当复杂。接下来看看基于此构建的 tensor 抽象会是什么样,这将非常有趣。另一点是,这里使用的是固定宽度的 SIMD 向量;除非有一种方法能根据可用的 GPU 信息静态计算这些向量,否则性能始终无法完全发挥。
- nynx
我希望能有一个开源的 Rust SIMD 库,其范围和成熟度能像
https://github.com/google/highway
为 C++ 带来的那样。