开源
llama.cpp 新 PR 利用 F16C 指令优化提示处理提速 17-31%
llama.cpp 合并 PR,用硬件 F16C 指令优化 Flash Attention 的 F16→F32 转换,q…
2026.08.13 · 周四约 3 分钟阅读
llama.cpp 项目近期合并了一项 CPU 端 Flash Attention 性能优化 PR(#26947),作者 jinzihao 新增了 ggml_cpu_fp16_to_fp32 函数,利用硬件 F16C 指令集(支持 AVX-512、AVX2 等)来替代原先纯软件实现的 ggml_fp16_to_fp32_row,用于 Flash Attention 的 V-cache 数据格式转换。实测显示,以 qwen3:4b 这类小模型为代表,prompt processing(提示处理)速率可获得 17-31% 的提升。
PR 核心改动
- 新增 ggml_cpu_fp16_to_fp32,调用 F16C 硬件 intrinsics 完成 F16→F32 转换;
- 在 Flash Attention 的 V-cache 路径上用上述硬件实现替换原有软件回退路径;
- 适用范围:所有支持 F16C 的 x86 CPU(即大多数近十年生产的 Intel/AMD 处理器)。
由于改动只在 CPU 后端发生、且仅影响 V-cache 的格式转换步骤,对纯 GPU 推理用户无直接影响,但对在本地 CPU 设备上跑小模型、关心 prompt 处理时延的用户而言是显著的省时改进。
性能数据与测试范围
PR 作者与评论区给出了 qwen3:4b 的实测结果:
- 优化前(ggml_fp16_to_fp32_row,软件路径):作为 baseline;
- 优化后(ggml_cpu_fp16_to_fp32,F16C 指令路径):提示处理 token/s 提升 17–31%。
需要注意的是,PR 中附带的速度对比仅覆盖 qwen3:4b 一款小模型,缺少在更大参数量模型或更长上下文下的实测数据。评论区也有用户提出,希望补充 Qwen3.5 / 3.6、Gemma-4 等近期发布模型的 t/s 统计,以判断该优化在更广泛场景中的表现。
社区反馈与待改进点
整体反馈积极,认为这类基于硬件 intrinsics 的微观优化正是 ggml 项目的优势所在。但也有人指出:
- 收益集中在「小型模型」和「prompt 阶段」,对生成(decode)阶段几乎没有帮助;
- 若推理端已经走 GPU 路径,性能不会变化;
- 缺少对 ARM/Apple Silicon 平台的同类型优化(因为 F16C 是 x86 专属)。
综合来看,这是一项典型的 llama.cpp「小改动、大收益」式 PR:对本地 CPU 跑 4B 量级模型的用户尤其值得升级体验,但对其他使用场景的影响相对有限。
