内容:
Wiglaf:概念的证明
Loki:声名远扬
Avalon:竞争者
度量性能
市场
需要的软件
总结
参考资料
关于作者
对本文的评价
度量和实现多个并行的 CPU
Andrew Blais 博士 ([email protected])
研究员和作家,Gnosis Software,Inc
2001 年 9 月
Andrew Blais 介绍了 Beouwulf 群集的概念,它通过在 Linux 或 NT 下使用多 CPU 并行地执行程序片段,从而极大地减少了软件的处理时间。他描述了(群集)多种不同的实现,群集的相对性能和使其有效所需的技术。
在 2001 年中期,世界上最快的计算机可以平均每秒执行 5 万亿次浮点运算,也就是 5 teraflop(teraflop — 每秒 1 万亿次浮点运算)。世界上最快的第 500 台计算机平均每秒执行 55 gigaflop(gigaflop — 每秒 10 亿次浮点运算)。通常,象这种顶级的计算能力是非常昂贵而且难以采用的(请参阅本文后面的参考资料)。然而,在 1994 年,Thomas Sterling 和 Don Becker 建立了一种方法:使用普通的、能被负担得起的硬件加上 Linux,以此来集中这些相对小的机器的计算能力。其结果被称为 Beowulf 群集,它能以较低的成本来仿真最快计算机系列中的低端机器的计算能力。
Beowulf 策略的目的是最小化计算时间。运行在 MS DOS 下的一个 CPU,只能顺序地处理一个程序的指令。我们希望能够降低这条基线。在一个 CPU 运行于 Linux 或 NT 的情况下,多个程序共享 CPU 资源是可能的,但如果在所有条件都相同的情况下— 如字长和磁盘访问速度等 —其程序处理的速度不会比在 MS DOS 下更快。此外,在“对称多重处理”(SMP)的情况下(可能有两个或四个 CPU 在 Linux 或 NT 下运行,每个都在处理多个程序),系统仍然会开销掉同样的时间来处理单个程序。
现在,减少程序处理时间的一个方法就是:把它分割成可以被不同 CPU 处理的独立的子任务。当这些子任务的运行结果可用时,就被返回到其中一个处理器进行最终处理。很明显,这样可以缩短对一个给定程序的处理时间。运行在一个配有两个或四个 CPU 的 Linux 系统下的多线程的程序,就能作为这一事实的有力明证。
显然,一个更好的方法就是:把程序分割成许多能被多个处理器处理的独立的子任务,然后把结果输送到一个单独的处理器中汇集成最终输出。尽管主板通常会有(容纳)两个或四个处理器的最大限制,但是仍有可能通过以太网传输设备来突破这个限制。这就是 Beowulf 策略:程序被分割成许多部件,这些部件被多个运行着 Linux 拷贝的 CPU 执行,所有的部分通过以太网来传输它们的数据和指令。
例如,假设您想找出 1 到 1,000,000 之间的所有素数。您可以编写代码,用于在这个范围内顺序地测试每一个整数。这个代码就会在前面提到的基线上运行。而Beowulf 策略就会这样处理:首先通过以太网连接,例如,10 台机器或节点。接下来编写的代码一开始时会在一个首节点上运行,然后把测试 100,001—200,000 的任务交给辅助节点 1,把测试 200,001—300,000 的任务交给辅助节点 2,以此类推。伴随测试任务一起执行的,还有一个将辅助节点发现的任何素数返回给首节点的指令。当然,首节点等待返回结果的同时,也会测试 1—100,000段内的素数。当所有的节点完成各自的任务后,整个机器将会产生一个 1 到 1,000,000 所有素数的列表,而所需的时间只是顺序策略(sequential strategy)的一小部分。(请参阅参考资料 )。另一个普通常见的例子就是在一台普通PC ,虽然其中只有一个基本的CPU,但是却还有许多处理器分布在诸如 modem(当然不是指 winmodem)、图形卡、声卡等等设备上。
Wiglaf:概念的证明
在 1994 年,Thomas Sterling 和 Donald Becker 构建了第一个采用 Beowulf 策略的计算机。让人好奇的是,他们没有把他们的机器命名为“Beowulf”。他们叫它“Wiglaf” — 神话中 Beowulf 的朋友。(请参阅参考资料)。wiglaf 有 16 个节点,每个节点支持一个 100 MHz 的 Intel DX4 处理器(最初是 66 Mhz 486 芯片),16 MB 的 DRAM,540 MB 到 1 GB 硬盘和一对 10 Mbps 以太网卡。每个硬件组件都是一个 COTS — “货架上的日用品”。最终,Wiglaf 达到了每秒 7 千 4 百万次浮点运算(74 megaflop)。其价格低于 5 万美元。
Wiglaf 在 Linux 下运行。这样做有几点很好的理由。如上面提到的,在一个 Beowulf 群集中,每个节点运行一个它自己的 Linux 操作系统的拷贝。如果每个节点的操作系统都要有一个许可证的话,这个群集的成本还要加上许可证价格乘以节点的数目。当(许可证)成本为零时,这个算术就很简单了。另外,wiglaf 的节点使用以太网通信,然而 10 Mbps 的以太网会形成一个瓶颈。Becker 发现:如果每个节点有两到三个以太网连接的话,可以使这些连接表现得好象只有一个连接一样,这就可以减弱瓶颈。(请参阅参考资源)。这被称做通道捆绑(channel bonding)。这之所以可能,是因为 Becker 能自由地阅读 Linux 内核的源码,从而写出一个定制的以太网驱动程序。
在 CPU 能以超过 1 GHz 运行的时候,Wiglaf 的硬件描述似乎有些离谱 — 这还没算上几百 MB 的内存和几十 GB 的硬盘空间呢。但 Sterling 和 Becker 只是想要确定 Beowulf 策略能够奏效。Wiglaf 是对概念的证明,不是一个最终的产品。为了在 Beowulf 理论的基础上增加实践的内容,他们在他们的机器上测试了两个已经在其它超级计算机上分析过的问题。一个涉及到流体动力学,另一个涉及 N-body 模拟。对它面对能够处理的那类问题时,Wiglaf的确做得不错。与诸如 Intel 的 Paragon 和 TMC CM-5 等机器相比,它也有自己的立足之地。这个概念(Beowulf 策略)已被证实。
Loki:声名远扬
另一个著名的 Beowulf 策略的应用是 Loki 群集(Loki Cluster),位于 Los Alamos 国家实验室(请参阅参考资料)。它赢得了 1998 年度 Gordon Bell 价格与性能比(Price/Performance)奖。这是不平常的,甚至可能是讽刺性的:设想一下 Bell 先生与 Microsoft Bay Area研究中心的职业联系,以及由快速以太网联接的 16 块 200 MHz CPU 所组成的 Loki 群集运行在 Linux 下这一事实。正如前面所提到的,大部分超级计算机价值几百万美元,而 Loki 的成本只有大约 6 万 3 千美元,而且同样的,成本主要归于硬件。此时,Loki 以每秒 12 亿次浮点运算(1.2 gigaflop)运行。
Avalon:竞争者
1998 年,在 Los Alamos 国家实验室,一个 Beowulf 群集用 140 块 533 MHz Alpha 微处理器(21164A)建成。每个节点有 256 MB 内存和 3 GB 的硬盘空间。这些节点通过快速以太网的 PCI 卡连接。它运行在 RedHat Linux 5.0 上。依据线型测试标准基准(Linpack benchmark),Avalon 运行在每秒 477 亿次浮点运算(47.7 gigaflop )。它价值大约 31 万 3 千美元,并且在价格性能比方面,它排在 Silicon Graphics 的 Origin 2000 64 位处理器之上,后者有相同数量的 gigaflop(每秒十亿次浮点运算)而价值大约 180 万美元。注:它位于世界上最快的 500 台计算机排名表的第 113 位。
度量性能
一些人认为唯一两个可以用来度量 Beowulf 群集性能的指标是:每秒浮点运算操作的数量和成本。然而这和认为处理器的唯一度量标准就是以 MHz 度量的速度一样缺乏远见。正如其它度量处理器的手段有芯片缓存的大小、内存总线的速度和字宽一样,至少有三种值得注意的度量 Beowulf 性能的方法。一个是权衡包的大小和冲突率优化网络吞吐量的能力。另一个是磁盘的输入输出速率。最后,还有简单代码效率。给编程任务打包的某个方法的效率可能高于或低于另一个。
市场
Beowulf 策略在研究机构之外也有实现。例如,波音公司(Boeing)从 Linux NetworX 得到一个 Beowulf 群集用以设计 Delta IV 火箭,它被用来发射卫星。另外,IBM 与新墨西哥大学(University of New Mexico)合作的 LosLobos,在 IBM Netfinity 服务器上有 512 块 Pentium III 733 MHz 处理器,通过 64 位的 Myrinet 传输数据,达到 3.75 gigaflop(每秒 37.5 亿次浮点运算)。国家计算科学联盟(The National Computational Science Alliance)将 LosLobos 用于研究,IBM 则基于它所学到的继续开拓群集技术(clustering technology)市场。已有报道说巴西的圣保罗大学(University of SaoPaulo,Brazil),建立了一个有 125 个节点的 Beowulf 群集,它分析乳房 X 线照片的时间只有原来的 120 分之一。象 Paralogic 和 Scyld 这样的公司经营的就是提供定制群集(请参阅参考资料)。
需要的软件
本文至今唯一明确提过的软件就是 Linux 操作系统,而数据和程序指令通过以太网传输是由一套软件协议支持这一概念没有明确提出。一个您毫无疑问想要获得并掌握的软件包是 PVM,即并行虚拟机(Parallel Virtual Machine)。PVM 是一个软件包,它使得Linux 或 NT 机器组成的群集,可以象一个能够并行处理的单个计算机那样执行。
CPU 需要能够发送、接受任务和数据。消息传递(Message passing)是一个可以实现它的方法。至少需要一个 CPU 能够发送“您将找到并发回这些数中的素数”这样一个消息,而且还需至少一个 CPU 能够发送“我找到这些素数”的消息。PVM 是一个 rsh(远程 shell)或 ssh(安全 shell)的接口,它使一群机器看起来好象一个 — 因而谓之:virtual(虚拟)。
PVM 的源代码是可用的,并已在许多种机器上编译过 — 甚至有一个 RedHat 版本的 RPM。如果您有两台联网的计算机,您可以下载 Rahul U. Joshi 的最有指导意义的样本代码来体验一下 PVM(请参阅参考资料)。除了 PVM,另一个可供选择的是 MPI,它是一个用来编写传递消息的程序的库。MPI 有许多实现。有的是商业的,有的则免费,有的提供源代码,有的不提供。(请参阅参考资料)。
总结
Beowulf 策略产生 Beowulf 效果,即用较多的处理器和较少的时间,取代原本要用较少的处理器和较多时间进行的计算。在本文中,我仅仅触及到 Beowulf 现象的表面。下面的参考资料可以帮助您充实对 Beowulf 群集的理解并帮您得到入门所需要的工具。
参考资料
一个极好的起点是“Parallel Processing on Linux with PVM and MPI”由 Rahul U. Joshi 在 Linux Gazette 所著。下载他的样本代码。
从 IBM 的 alphaworks 站点下载 Cluster Starter Kit for Linux。
了解更多关于 IBM 群集软件的内容。
学习 developerWorks 文章中“Linux clustering cornucopia”针对 Linux 的开放和封闭源码群集解决方案的教程。
请看 Linux Utility for cluster Installation (LUI),一个开放源码的实用程序,用于在以太网上远程安装一个 Linux 工作站。
请参阅 IBM 红皮书,“Linux HPC Cluster Installation”。
请查看世界上最快的 500 台计算机列表。
请参阅 Accelerated Strategic Computing Initiative (ASCI),找到世界上最快的计算机,并阅读相关文章,“IBM Builds World's Fastest Supercomputer
to Simulate Nuclear Testing for U.S. Energy Department”。
象 Linux 的所有东西一样,有一个 Beowulf HOWTO,一个 FAQ,一个邮件列表(要 订阅的话,请在信息栏填上 subscribe 字样)带一个
archive,和一个 Web page。
Sterling 和 Becker 关于 Wiglaf 的报告可以在 Beowulf: A Parallel Workstation for Scientific Computation 找到。
关于 Loki 群集的信息可以在 Loki - Commodity Parallel Processing 找到。
想要 Gordon Bell Price/Performance Prize 的信息,参阅 SC2000 Gordon Bell Awards。
请访问 Avalon 群集 Web 页面。
波音公司(Boeing)使用 Beowulf 的情况在 CNet 的文章中有记述,“Boeing buys Linux-AMD supercomputer”。
请访问 Linux NetworX 网站。
请访问 LosLobos Web site网站。
在 AS/400 Clustering Technology White Paper 可以得到 IBM 的更多有关群集技术的信息。
请阅读 Building a Beowulf System,由 Thomas L. Sterling、John Salmon、Donald J. Becker 和 Daniel F. Savarese 描述了圣保罗大学(Sao Paulo University)的工作。另外,请查看 How to Build a Beowulf (The MIT Press,1999)。
请访问 Paralogic 网站。
请访问 Scyld 网站。
想要 PVM 的概述,请在 Linux Journal 中参阅 Richard A. Sevenich 的“Parallel Processing using PVM”。还可以参阅 Manu Konchady 的“Parallel Computing Using Linux”,同样也在 Linux Journal 中。
请阅读 PVM,并行虚拟机(Parallel Virtual Machine),和 MPI,消息传递接口(the Message Passing Interface)。
下载 RedHat RPM for PVM 和 PVM-GUI。取得源代码。
请参阅 MPI implementations 的列表。下载 RedHat RPM for MPI。
在 developerWorks 上,请浏览更多 Linux 参考资料。
在 developerWorks 上,请浏览更多开放源码参考资料。