如何提高标准矩阵乘法算法的效率?
这种方法涉及的主要操作是:C[i][j]+=A[i][p]*B[p][j]
可以做什么来提高算法的效率?
发布于 2011-08-02 07:24:29
你可能想看看使用BLAS (基本线性代数子例程)库,特别是英特尔提供了他们的MKL here,AMD有他们的一个ACML here,还有(开源) Goto BLAS here。
(密集)矩阵-矩阵乘法内核将是一个?GEMM调用,其中的?表示浮点类型。例如,DGEMM将调用double例程。
除非你非常有信心知道自己在做什么,否则这些库可能会提供比你手工编写代码更好的性能。
如果你真的想自己编码,那么你可能需要考虑以下几点:
这个参考可能会让你对事物的当前状态有一个概念:
3级BLAS -K Goto的高性能实施。
希望这能有所帮助。
发布于 2011-08-01 23:30:34
我建议阅读Golub and Van Loan的第一章,它解决了这个问题。
发布于 2011-08-01 23:44:23
请注意,使用这些方法并不能保证更好的性能。需要进行大量的调优,从而实现显著的加速。有很多钱花在弄清楚如何快速乘法矩阵上,因此不乏关于这个主题的期刊文章。
https://stackoverflow.com/questions/6900711
复制相似问题