{ SIMD }

  • 比起C++性能榨汁机,你可能更需要的是 -O3 和 ICC

    |

    前两天看到一个文章系列:《C++性能榨汁机》,其中前面四篇(第四篇)在讲分支预测和如何避免分支预测带来的性能下降问题。文章大体的思路是对的,只是我觉得手写条件传送代码实在是有点奇技淫巧,在绝大部分的情况下是不应该提倡的。我觉得比起条件传送代码,用 SIMD 加上掩码才是更直观的操作。我还是用原文的代码来说明这个问题。

  • 使用 AVX 系列指令集进行向量化

    |

    最近上课讲到了向量化的内容,我顺便整理了一下自己手头以前相关的资料。下面内容的主要关注点是在 x86 平台上让编译器进行自动向量化,但是第二部分所提到的一些原则在各个平台上都适用。

  • CPU Case Study - Optimizing DGEMM

    |

    Yet Another GEMM Study.

    两年前我按 Ref. 1 的页面(以前还没有 GitHub Repo 和 Markdown pages 呢)做过一次 DGEMM Optimization,当时做的效果其实不是很好。去年叶老师给我看了一下 BLIS 这个项目,说里面分块和分级 Cache 的思路值得一看。前两天一搜,居然出了 Ref. 2 这个 Repo,有如此详细的指导和参考代码,不自己造一次轮子简直说不过去了。我最后撸出来的代码在 这里