对于一堂课,我老师提出的问题是将矩阵乘以其转置的算法成本。使用标准的3循环矩阵乘法算法,效率为O(N ^ 3),我想知道是否有办法操纵或利用矩阵*矩阵转置来获得更快的算法。我知道当你将矩阵乘以它的转置时,你必须计算较少的矩阵,因为它是对称的,但我想不出如何操作一个可能小于O(n ^ 3)的算法。
我知道像Coppensmith和Straussen这样的算法是更快的通用矩阵乘法算法,但任何人都可以提供有关如何计算利用转置的任何提示或见解?
谢谢
答案 0 :(得分:1)
目前还没有这种特殊乘法的任何渐近屏障特性。
显而易见的优化是利用产品的对称性。也就是说,[i][j]
条目等于[j][i]
条目。
对于特定于实现的优化,您可以执行大量缓存。大型矩阵乘法中的大量时间用于将数据传输到存储器和CPU以及从存储器和CPU传输数据。因此,CPU设计人员实现了一个智能缓存系统,最近使用的内存存储在称为缓存的小内存部分中。除此之外,他们还使得附近的内存也被缓存。这是因为很多内存IO是由于从/向数据的读/写而导致的,这些数据是按顺序存储的。
由于矩阵的转置只是交换了索引的相同矩阵,因此在矩阵中缓存值可能会产生两倍以上的影响。