Hacker News | 📄 原文链接 | 2026-09-15 收录

如何让一个循环自动向量化:一次浮点求和实验

来源:jsgroth.dev — jsgroth.dev · 23 分 · by zdw

📋 概述

作者用 Rust 1.98 与 Compiler Explorer 做了一组小实验:对一个简单的浮点点积函数,即便开启 opt-level=3,编译器也只生成 addss/mulss 这类标量指令;换成 AVX2 加 FMA 后指令编码变成 VEX 形式,但依然是标量运算。根因是 IEEE 754 浮点加法不满足结合律,编译器不能自由重排加法顺序,因此无法把数组按四个一组累加。手动按四元素分块之后函数立刻自动向量化,而同样的整数版本本来就能被向量化。

🔑 核心要点

💡 金句

想百分之百确认代码用上了向量指令,就不能依赖自动向量化,除非你每次改代码都愿意去看汇编。
← 返回 Hacker News 首页