快速矩阵乘法的内存需求


12

假设我们要乘以乘以矩阵。慢矩阵乘法算法在时间运行,并使用内存。最快的矩阵乘法在时间,其中是线性代数常数,但是关于它的存储复杂度又知道什么呢?ø Ñ 3ø Ñ 2Ñ ω + Ö 1 ωn×nO(n3)O(n2)nω+o(1)ω

快速的矩阵乘法可能会消耗内存,这似乎是先验的。是否有任何保证可以在内存中完成?当前已知的矩阵乘法算法是否使用存储器? ø Ñ 2ø Ñ 2nωO(n2)O(n2)

(我实际上对矩形矩阵乘法很感兴趣,但我认为在那种情况下答案与在正方形情况下是相同的,并且对正方形情况进行了更好的研究。)

Answers:


16

对于所有类似Strassen的算法(即,基于矩阵乘法的秩的上限的算法,空间使用量最多为)。请参阅Coppersmith–Winograd算法的空间复杂度O(n2)

但是,我在之前的回答中意识到,我没有解释为什么空间使用量为 ...所以这里有些麻烦。考虑一下类似Strassen的算法。它从用于矩阵乘法的固定算法开始,该算法对某些常数使用乘法。特别是,可以将这种算法(无论它是什么形式)编写为WLOG,以便:K × K K c c < 3O(n2)K×KKcc<3

  1. 它计算不同的矩阵,这些矩阵将第一个矩阵的项乘以各种标量,并将矩阵乘以第二个矩阵类似的形式L 1L K c A K c R 1R K c BKcL1,,LKcAKcR1,,RKcB

  2. 它将这些线性组合相乘,然后LiRi

  3. 它乘法条目通过各种标量,然后将所有这些矩阵高达entrywise以获得。LiRiAB

(这是所谓的“双线性”算法,但事实证明,每个“代数”矩阵乘法算法都可以用这种方式编写。)对于每个,该算法只需要在任何给定点将当前乘积和的当前值(初始设置为全零)存储在内存中,因此空间使用量为。大号ř Ô ķ 2i=1,,KcLiRiABO(K2)

给定这种有限算法,然后通过将大矩阵分解为维度为块,将其扩展到任意矩阵,将有限的算法应用于块矩阵,并在需要将两个块相乘时递归调用该算法。在递归的每个级别,我们只需要在内存中保留字段元素(将不同的矩阵存储)。假设矩阵乘法的空间使用量为 ķ × ķ ķ - 1 × ķ - 1 ķ × ķ ø ķ 2 Ô 1 ķ × ķ ķ - 1 × ķ - 1小号- 1 小号小号- 1 K×KK×KK1×K1K×KO(K2)O(1)K×KK1×K1S(1),此递归算法的空间使用量为,对于求解为。小号1 = 2 ķ 2小号Ô ķ 2 S()S(1)+O(K2)S(1)=2K2S()O(K2)


对于任何一种Strassen风格的算法,这对我来说都是正确的。但是Coppersmith-Winograd还证明,要降低到实际上需要无限序列的Strassen风格算法,每个算法都越来越接近真实指数。实际上,CW风格的算法和CU风格的算法都提供了这样的序列(就我们所知,尽管没有达到)。在理论上,这样的序列中使用的常量可能会非常快地增长,因此“ the”算法最终可能会使用空间。 ω Ñ ω ω Ñ 2nωωnωω(n2)
约书亚·格罗夫

1
...但是根据您的说法,对于任何,总是可以在时间和空间获得一种算法。Ö Ñ 2δ > 0O(nω+δ)O(n2)δ>0
约书亚·格罗夫

@Joshua,这些Strassen型算法的内存需求类似于,其中i是算法的索引号,并且f是可计算的。因此,如果您从搜索这些算法并且k是n的一个缓慢增长的函数,则功变为,而内存为。= 0 ķ Ñ ω + Ö 1 ñ 2 + Ö 1 f(i)n2i=0,...,knω+o(1)n2+o(1)
戴维·哈里斯

@DavidHarris:嗯,当然,只要是缓慢增长相比足够,即至多增长尽快。问题是,对于任何给定的家庭,是多少,增长多快。但是,不能保证会足够缓慢地增长以达到整体内存使用量f k f 1 f k k n 2 + o 1 kfkf1fkkn2+o(1)
Joshua Grochow

@约书亚 这个想法是,在长度为输入上,我们搜索前推定的Strassen型算法,验证它们是否有效,然后选择最快的算法。只需选择作为的函数,即可使。由于,这意味着任何的Strassen型算法将被选择足够大。因此,时间也转到。ķ ķ Ñ ˚F ķ Ñ = Ñ Ö 1 ķ Ñ →交通Ñ Ñ ω + Ö 1 nkknf(k(n))=no(1)k(n)nnω+o(1)
大卫·哈里斯

4

更一般地,可以在每个处理器的存储器中的处理器上完成快速矩阵乘法。但是,处理器之间的通信则不是最佳的。通过使用更多的内存可以实现最佳通信。据我所知,尚不清楚是否可以同时实现最佳通信和最佳存储。详细信息在http://dx.doi.org/10.1007/PL00008264O n 2 / p pO(n2/p)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.