BLAS(基本线性代数子程序)为许多其他编程语言提供了快速的例程,比如我使用的Matlab,用于执行诸如矩阵乘法之类的操作。
然而,当将多个矩阵相乘时,有一种最佳的顺序来“括起”这些矩阵。从wikipedia article中摘取:
例如,假设A是一个10×30的矩阵,B是一个30×5的矩阵,C是一个5×60的矩阵。那么,
(AB)C = (10×30×5) + (10×5×60) = 1500 + 3000 = 4500次运算
A(BC) = (30×5×60) + (10×30×60) = 9000 + 18000 = 27000次运算。
该文章继续讨论了解决此乘法的最佳顺序的方法。我的问题是,BLAS是否利用这些优化过程之一?如果没有,那么如果我在像Matlab这样的程序中明确定义了矩阵乘法的顺序并适当使用括号,我是否可以获得更好的速度?