Algorithms for Modern Hardware — 现代硬件上的算法(性能工程开源书)
Sergey Slotin 的免费开源书《Algorithms for Modern Hardware》系统讲解在现代 CPU/GPU 上写出高性能代码所需的算法与硬件知识。本书为整站形式的鸿篇,按「超过 40 页」规则仅做结构化概览与解读,不发布全文。
Algorithms for Modern Hardware — 现代硬件上的算法(性能工程开源书)
来源:Algorithms for Modern Hardware,作者 Sergey Slotin(免费开源书,以网站形式发布)。 说明:原书为整站形式的鸿篇(远超过 40 页),按「页数超过 40 页的文档只做结构化解读、不发布原文」的规则,本页仅做结构化概览与解读,不发布原文全文;完整内容请访问原站。
结构化解读
书籍概况
《Algorithms for Modern Hardware》是一本完全免费、以网站形式发布的性能工程(performance engineering)开源书,作者 Sergey Slotin。它不走「抽象算法 + 渐近复杂度」的传统路线,而是把算法设计与现代硬件的微架构现实绑在一起讲:当你要在真实的 CPU/GPU 上把程序跑快,瓶颈往往不在大 O,而在指令级并行、分支、缓存、内存带宽、SIMD 向量化与算术精度。
内容结构(主题地图)
从原站目录可看出其覆盖广度:
- 性能工程基础:复杂度模型、性能度量。
- 现代硬件:编程语言、计算机体系结构、指令集(ISA)、汇编、循环与条件、函数与递归、间接分支、机器码布局。
- 指令级并行(ILP):流水线冒险(pipeline hazards)、分支代价、无分支编程(branchless)、指令表、吞吐计算、编译(编译阶段、flag 与目标、情境优化、契约式编程、预计算、profiling、程序模拟、基准测试与准确计时)。
- 算术:浮点与 IEEE 754、舍入误差、牛顿法、快速平方根倒数(fast inverse square root)、整数除法、数论、模运算、二分快速幂、扩展欧几里得、Montgomery 乘法。
- 外部内存(External Memory):内存层次、虚拟内存、外部内存模型、外部排序、缓存无关算法(cache-oblivious)、空间/时间局部性、RAM 与 CPU 缓存、内存带宽/延迟、cache line、内存级并行(MLP)、预取、对齐与打包、cache 相联度、内存分页、AoS vs SoA。
- SIMD 并行:intrinsics 与向量类型、数据搬移、归约(reductions)、掩码与混合(masking/blending)、寄存器内重排(shuffles)、自动向量化与 SPMD;案例研究含二进制 GCD、整数分解等。
(站点后续还延伸至多线程、GPU 等章节。)
核心主题与看点
- 「会算」和「算得快」是两件事:同样的算法,是否利用 ILP、避免分支预测失败、安排好缓存局部性,性能可差数倍到数十倍。
- 无分支编程 / 谓词执行:用算术与掩码消除分支,是底层优化的核心技巧。
- 缓存无关算法:不依赖具体缓存参数也能高效——对外存/大数据场景尤其重要。
- SIMD 案例驱动:以二进制 GCD、整数分解等把向量化讲透,而非空谈概念。
适合谁读
- 写高性能库(数值计算、编解码、加密、图计算)的工程师;
- 想理解「为什么我的代码这么慢」的系统程序员;
- 对 CPO/光互联、HBM、片上内存带宽等硬件瓶颈感兴趣的人(见下)。
与本站连接
- 与本站 CPO / 光通信 主线高度相关:本书讲的「内存带宽 vs 延迟」「MLP」「缓存层次」正是 CPO 要解决的现实瓶颈——把光互连放到离计算更近的地方,本质上是在压缩「外部内存」的代价。
- 与 AI 硬件 / 推理芯片 主线互补:算子级优化(SIMD、ILP、算术精度)决定了 H100/Blackwell 等算力能否被真正用满。
- 与 MoE / 模型效率 主线呼应:专家权重的搬运与复用,正是「外部内存模型」的典型问题。
获取方式
本文由作者按照 CC BY 4.0 进行授权