人们对传统的串行计算机进行了大量的经济上、智力上和感情上的投资。为此,大家需要花费很多的精力去改变过去以适应未来。
在我看来,到本世纪末,市场上销售的计算机都将以并行或分布的方式来工作(至少在部分时间内如此)。经过功能齐全的网络相连接的分布式计算机将管理所有人类与现实世界的接口(如桌面工作站,袖珍显示器和机内控制器等)。中央并行计算机将辅助这些分布式计算机管理大型数据库和进行大规模计算。可以分成多半独立部分的大规模计算问题将常常通过网络进行分布处理,数据通信和相互作用占主导地位的计算将在更为集中的并行机内进行。传统形式的计算,如小型机、大型机、单独的(未联网的)个人机,以及向量巨型机仅保留下来作为一些特殊的应用。它们主要用于那些承接过去的应用程序。
以往,人们对传统的串行计算机进行了大量的经济上、智力上和感情上的投资。为此,大家需要花费很多精力去改变过去以适应未来。有些人企图阻挡这场过渡到并行计算的革命。每当我对这些人的行为感到沮丧时,我常以量子力学的创始人之一的马克 · 普朗克的话引以自慰:
“一个重要的科学创新很少是逐渐赢得其地位而被其反对者们所接受的。它的出现也不是水到渠成的。事实上,在于它的反对者渐渐消亡以及成长的一代在开始便接受其思想,它才为人们所接受”。
普朗克是在当时很多老物理学家仅仅在某些应用方面承认量子力学时写下这段话的。尽管当时很多人对量子力学持怀疑态度,但它确实成了物理学以后向前发展的推动力。这种崭新的思想改变了我们的现实世界,最终导致了原子能的利用和晶体管的发明。
并行和分布式处理给新的一代及那些愿意接受新思维方式的人们提供了一个很好的机会。它让我们可以从根基上重新考虑计算领域的各个方面:计算理论、计算机语言、操作系统、数据库,计算机结构以及应用等。
在计算理论方面,分析计算复杂性的主要根据是只考虑算术运算而忽视数据流动的开销模型。然而,任何在并行计算机上编过程序的人都知道,数据的流动才是起主导作用的。一个算法的速度很少受限于运算部件的速度,而取决于数据等待时间和通信带宽,这里的通信既包括存储器与处理器间的通信又包括处理器与处理器间的通信。在计算复杂性方面,至今尚没有一个成熟的度量数据流动的方法,当然谈不上去优化它,因此,计算理论必须进行改进。
在计算机语言方面,有趣的是某些传统的计算机语言(如Fortran,Lisp,C)在某种程度上同样适合并行机。例如,大多数Connection Machines*都是以Fortran语言编程的。令人印象深刻的是,一些运行了25年的应用程序,(如模拟流体流动的程序Flow67),仍可以自动经过编译而运行在大规模并行机上。然而,这是否就是在并行机上进行程序设计的理想方法?虽然Flow67能模拟一个完全并行的物理系统,但是以DO循环描述并行性再通过编译变成并行操作是否恰当?新版Fortran(Fortran-90)已允许数组的并行表示,这已朝正确的方向迈开了一步。但也许并行与分布式计算的出现将导致一种全新的程序设计语言的产生。不过很难说什么样的程序设计语言将获得成功,除非它确能有效地解决在并行与分布式处理中所提出的一些问题。类似的情形在操作系统方面同样存在。
计算机科学各个方面几乎都预示着向并行计算过渡这一趋势。虽然,很多计算机结构的教材仍以处理机的设计作为中心内容,但大多数计算机设计师仅将其作为一个因素来考虑,重要的乃是其它方面。数据库目前已具有较好的模型,因为在早先就已涉及到分布式存取问题。现在它又面临着分布式数据的处理问题。编译程序的研究目前仍局限于串行机。甚至连那些首先考虑并行机编译问题的人也没有考虑直接在并行机上进行编译。很早以前,人工智能方面的学者们便认识到大脑是一个并行机,但他们最近才开始研究诸如连接模型(connectionist model),知识推理以及所谓的“内心世界”(society of mind)的并行模型。
也许这场革命的最激动人心的成果是一些崭新的应用领域的发展。目前已经出现了一些完全基于并行处理的研究方向:如格子气流体流动、神经网络、模拟演化等等。物理学家正在提出的一些新问题,如计算量子色动力学(chromo dynamics),若在单处理机上计算需要上百年的时间。现今,越来越多的并行和分布式计算机用作解决一些新问题,而不是用来使现有的应用程序运行得更快。
这场即将到来的革命已为我们提供了一些线索。当我们投入到这场革命时,我们仍应该根据将来的变化调整我们的方向,而不要被过去束住手脚。现在,我们正在奠定一个长久的基础,我们要作好准备迎接这场革命的到来。
[IEEE Parallel & Distributed Technology,1993年2月创刊号]
_________________
*美Thinking Machines公司生产的一种并行计算机。——译者注。