我最近一直在开发一个相当复杂的程序,目前我需要使用矩阵乘法。问题是,对于这个特定的程序,速度至关重要。我熟悉许多矩阵设置,但我想知道哪种方法运行得最快。我已经进行了广泛的研究,但结果很少。以下是我熟悉的矩阵乘法算法列表:
- 迭代算法 - 分治算法 - 亚立方算法 - 共享内存并行性
如果有人需要对我列出的方法或一般问题进行澄清,请随时提问。
- 迭代算法 - 分治算法 - 亚立方算法 - 共享内存并行性
如果有人需要对我列出的方法或一般问题进行澄清,请随时提问。
斯特拉森算法和朴素的(O(n^3))算法是实践中最常用的。
更复杂的算法有着更紧密的渐近界限,但由于其复杂性,它们的优势只有在矩阵非常大时才会显现,例如Coppersmith 算法。
正如其他人指出的那样,您可能需要使用像ATLAS这样的库,该库将根据执行平台的特性(例如L1 / L2缓存大小)自动调整算法。
最快的方法可能是使用已经优化过的现有库,您不必每次都重新发明轮子。