【发布时间】:2011-10-19 20:32:20
【问题描述】:
作为一个实验,我实现了 Strassen 矩阵乘法算法,看看是否真的可以为大 n 带来更快的代码。
https://github.com/wcochran/strassen_multiplier/blob/master/mm.c
令我惊讶的是,对于较大的 n,它方式更快。例如,n=1024 的情况 使用传统方法耗时 17.20 秒,而仅耗时 1.13 秒 使用 Strassen 方法 (2x2.66 GHz Xeon)。什么——15 倍的加速!?它应该只是稍微快一点。事实上,它似乎也适用于 32x32 的小矩阵!?
我可以解释这么多加速的唯一方法是我的算法对缓存更友好——即,它专注于矩阵的小块,因此数据更加本地化。也许我应该尽可能零散地做我所有的矩阵算术。
关于为什么速度如此之快的任何其他理论?
【问题讨论】:
标签: performance matrix strassen