[论文解读] Implementing Strassen's Algorithm with BLIS
本文在BLIS框架内提出了一种新颖且高性能的斯特拉森矩阵乘法算法实现,使其在小矩阵和秩-k更新(LAPACK中常见)场景下性能超越经典DGEMM,且无需外部工作空间或修改标准BLAS接口。该方法通过优化内存分块和递归子矩阵操作,减少数据移动开销,在多核及众核架构(包括Intel Xeon Phi)上实现了显著加速。
We dispel with "street wisdom" regarding the practical implementation of Strassen's algorithm for matrix-matrix multiplication (DGEMM). Conventional wisdom: it is only practical for very large matrices. Our implementation is practical for small matrices. Conventional wisdom: the matrices being multiplied should be relatively square. Our implementation is practical for rank-k updates, where k is relatively small (a shape of importance for libraries like LAPACK). Conventional wisdom: it inherently requires substantial workspace. Our implementation requires no workspace beyond buffers already incorporated into conventional high-performance DGEMM implementations. Conventional wisdom: a Strassen DGEMM interface must pass in workspace. Our implementation requires no such workspace and can be plug-compatible with the standard DGEMM interface. Conventional wisdom: it is hard to demonstrate speedup on multi-core architectures. Our implementation demonstrates speedup over conventional DGEMM even on an Intel(R) Xeon Phi(TM) coprocessor utilizing 240 threads. We show how a distributed memory matrix-matrix multiplication also benefits from these advances.
研究动机与目标
- 挑战并推翻传统观点,即斯特拉森算法在小矩阵和非方阵形下不实用。
- 使基于斯特拉森的DGEMM与标准BLAS接口完全兼容,无需显式工作空间参数。
- 在现代多核和众核系统(包括Intel Xeon Phi)上实现高性能,且无需额外内存分配。
- 通过与SUMMA框架集成,将斯特拉森算法的优势扩展至分布式内存环境。
- 证明斯特拉森算法可高效应用于高性能线性代数库(如LAPACK),尤其适用于秩-k更新。
提出的方法
- 作者修改BLIS框架的微内核和打包例程,支持使用子矩阵划分的递归斯特拉森式矩阵乘法。
- 采用递归的分治方法,通过2×2块分解,将斯特拉森的七次乘法公式应用于子矩阵。
- 使用ABC斯特拉森变体以最小化临时存储,仅需高性能DGEMM实现中已存在的缓冲区。
- 该方法与BLIS中用于传统DGEMM的多线程和缓存分块策略无缝集成。
- 通过重新组织内存层次间的数据移动,优化性能,降低额外算术操作和内存流量的影响。
- 该实现支持单层与多层递归,性能通过预测性成本模型进行调优。
实验结果
研究问题
- RQ1斯特拉森算法能否在小矩阵和非方阵形(如秩-k更新中出现的矩阵)上实现实用化?
- RQ2是否可能在不增加额外工作空间的前提下实现斯特拉森算法,仅使用高性能DGEMM中已有的存储?
- RQ3基于斯特拉森的乘法能否在多核和众核架构(如Intel Xeon Phi)上实现加速,且无需接口变更?
- RQ4斯特拉森算法在不同矩阵形状下与经典DGEMM相比性能如何,包括LAPACK和ScaLAPACK中常见的矩阵形状?
- RQ5斯特拉森算法能否在分布式内存并行实现(如SUMMA)中高效集成,且不损失可扩展性?
主要发现
- ABC斯特拉森实现即使在1600×1600的小矩阵上也优于经典DGEMM,打破了传统认为斯特拉森仅适用于大矩阵的观念。
- 对于内维数较小的秩-k更新(如k=1024),ABC斯特拉森算法性能优于经典DGEMM,特别适合LAPACK风格计算。
- 该实现无需额外工作空间,仅使用高性能DGEMM中已有的存储,实现与标准BLAS接口的即插即用兼容。
- 在拥有240个线程的Intel Xeon Phi上,斯特拉森实现相比经典DGEMM展现出可测量的加速,证明其在众核系统上的可行性。
- 在使用SUMMA的分布式内存环境中,ABC斯特拉森算法作为本地gemm内核时表现最佳,尤其适用于有利于秩-k更新的矩阵形状。
- 预测性成本模型能准确预测不同矩阵尺寸和递归层级下的性能,验证了设计选择并支持进一步优化。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。