通信—在一台机器的内存层次结构的不同层次之间移动位的成本,或者在网络或数据中心的机器之间移动位的成本,通常是比计算更宝贵的资源。虽然不是什么新鲜事,但由于高性能计算背后的架构趋势以及允许自动生成大量数据的技术趋势,通信与计算之间的权衡近年来重新引起了人们的兴趣。在实践方面,这导致了多核处理器、LAPACK和ScaLAPACK等库、MPI和MapReduce等方案以及分布式云计算平台的出现。在理论方面,这促使大量研究人员在新的数据访问模型下解决旧问题的新算法。
巴拉德、德梅尔、霍尔茨和施瓦茨的论文考虑了一个基本问题,对多年来在矩阵算法的理论和实践中占据特殊位置的旧算法采用了新的视角。在这样做的过程中,工作强调了理论计算机科学(TCS)的抽象思想如何在实践中产生有用的结果,并说明了如何弥合理论-实践差距需要对实践的健康理解。
基本问题是2的乘法n×n矩阵。这是数值线性代数(NLA)、科学计算、机器学习和大规模数据分析的基本原理。很明显,n2时间是一个微不足道的下界,即读取输入和写入输出所需的时间。此外,乍一看,似乎“显而易见”,普遍存在的两个矩阵相乘的三循环算法(作为输入2给定)n×n矩阵,一个而且B,对于每一个i, j, k做:C(我,我) + =一个(我,k) *B(j k,)表示一个常数倍n3.解决这个问题需要时间。
回到1969年,当斯特拉森提出他现在众所周知的算法时,人们都很惊讶。基本思想是两个2 × 2矩阵可以用7相乘,而不是通常的8乘法。由于同样的思想适用于2 × 2分块矩阵,自然递归扩展可以用于乘2n×n矩阵不超过一个常数倍n算术运算,其中= log27 2.808。多年来,指数已经缩减到2.373,许多猜想存在= 2的类strassen算法。
Strassen的算法强调了问题和算法之间的区别,这在TCS中非常重要;它证明了非明显算法至少在理论上比明显算法有更好的运行时间。虽然对于大于约100 × 100的输入矩阵,Strassen算法的运行时间比通常的三回路算法要好,但由于技术和非技术原因,Strassen算法在实践中还没有得到广泛的应用。
这篇论文是在NLA算法中最小化通信的大量工作的一部分。先前的研究表明,几何嵌入方法可以用于建立共享内存顺序和分布式内存并行模型中三回路矩阵乘法算法的通信下界。基本上,该算法可以建模为一个计算有向无环图(CDAG)。由于算法的三环结构,该图可以嵌入到一个三维立方体中;并从该嵌入的等周性质建立了通信的下界。本文的主要结果是建立了一个新的类strassen算法的通信量下界,该下界在序列和并行版本的strassen算法中都低于通常的三环算法的下界。
由于几何嵌入方法似乎不适用于类Strassen算法的递归结构,通过考虑Strassen算法的CDAG的边展开,建立了新的下界。扩展图没有任何良好的分区,不能很好地嵌入任何低维欧几里得空间,这是非常有用的结构,在TCS中普遍存在,而在TCS之外几乎未知。对于熟悉扩展器的读者,本文将提供另一种应用。对于不熟悉扩展器的读者,这篇文章应该是一个起点。
最后,作者还通过提供一个最优算法来表明他们的下界是紧的,这将使数值分析和数据分析的实践者以及复杂度下限理论家感到高兴。在序列的情况下,这是通过标准实现Strassen的算法;在并行情况下,作者与本杰明·利普希茨(Benjamin Lipshitz)合作,开发了一种新的避免并行通信的Strassen算法。后一种算法比以前的三回路和基于strassen的算法的通信渐近更少;在大型并行机器上,它的经验性能超过了所有其他已知的矩阵乘法算法,包括基于三环或strassen的算法。值得注意的是,这表明Strassen的算法应该被采用到现有的并行NLA库中,这提供了一个很好的例子,说明如何弥合理论与实践之间的差距,同时也表明,由于Strassen的算法具有更好的通信特性,具有讽刺意味的是,它可能仍然会有实际用途。
数字图书馆是由计算机协会出版的。版权所有©2014 ACM股份有限公司
没有发现记录