2026 年 Rust 的 SIMD 现状
来源: shnatsel.github.io — 2026-09-26
概述
作者做了比去年更深入的 Rust SIMD 年度调查,并说明自己已成为 Fearless SIMD 的维护者,为避嫌邀请了 std::simd、wide、pulp、macerator 的作者审阅草稿。文章从动机讲起:CPU 的算术部件很便宜,但指令译码单元只有一个且很难提速,向量化能把一批数字交给同一条指令,x86 上可达 512 位。难点在于 SIMD 指令集是后来追加的,x86_64 默认只能假设 SSE2,对外分发二进制就必须做函数多版本化。
核心要点
- SIMD 的动机是指令译码瓶颈,一次向量运算可覆盖 512 位数据。
- x86 的 SIMD 扩展是逐步追加的:SSE2 打底,再加 SSE4.2、AVX、AVX2 与 AVX-512。
- 只在自己的服务器上跑可以假定 AVX2,用 -C target-cpu=x86-64-v3;对外分发则不行。
- ARM 在 64 位 CPU 上强制要求 NEON,因此没有 x86 那样的指令集分裂问题。
- WebAssembly 要求编两份二进制,再用 JavaScript 检测浏览器是否支持 SIMD。
- 在 Rust 里使用 SIMD 有三条路径:自动向量化、可移植 SIMD 抽象、平台专有 intrinsic。
金句
硬件算术很便宜,但译码单元只有一个,而且很难让它跑得更快。
👍 0
👎 0
← 返回 Lobsters 首页