并行排序:从归并网络到 GPU 双调排序
当单核性能到达瓶颈,排序如何利用多核 CPU 和 GPU 的并行能力?从排序网络的理论优雅到工业级并行排序的工程妥协。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 9 篇文章 · 返回首页
当单核性能到达瓶颈,排序如何利用多核 CPU 和 GPU 的并行能力?从排序网络的理论优雅到工业级并行排序的工程妥协。
std::unordered_map 慢在哪里?每次查找跟着指针跳来跳去,缓存全部打飞。Google 的 Swiss Table 用 SSE2 一条指令并行比较 16 个槽位,把哈希表的探测从'逐个比较'变成了'批量筛选'。这篇文章从控制字节的位级设计讲到完整 C 实现,拆解这个替换了 Google 全部 C++ 哈希表的方案。
现代 CPU 的分支预测器已经非常精准,但当预测失败时代价高昂。无分支编程用算术和位运算消除条件跳转,在特定场景下带来数倍加速。
SIMD 不只是'把标量操作变成向量操作'那么简单。从 SoA 布局到 pshufb 查表,掌握这些设计模式才能真正释放向量化的威力。
当你的数据以 GB/s 的速度涌入,哈希函数往往成为瓶颈。xxHash3 用 AVX2 把 8 个累加器打包成 256-bit 向量同时处理;wyhash 则用一条 128-bit 乘法做到几乎同样的吞吐。这篇文章拆解这两个顶级非密码学哈希的 SIMD 设计。
用向量指令重写字符串操作,性能提升 10 倍不是梦。
搜索引擎的倒排索引压缩,是整数压缩最大的战场。
面向工程实践的SIMD字符串查找优化完全指南:SSE2/AVX2/AVX-512并行比较原理,位掩码技巧,跨块与页边界安全处理,strchr/strstr高性能实现,包含完整代码示例和性能陷阱分析
让 AI 写一个 SIMD 排序、一个内存池、一个事件循环。然后用 perf 和 cachegrind 看它的代码到底在干什么。结论:AI 写的是正确的慢代码。