我不会为这台超级计算机花很多钱!

尽管我们可能很想拥有一台超级计算机,但高昂的成本仍然是一个障碍。在一个几乎没有规模经济的市场中,买家发现自己依赖于供应商提供的专用硬件、专用软件和昂贵的支持合同,同时又希望这些供应商不会加入到一长串破产的前超级计算机供应商的行列。有限的销售机会迫使供应商试图满足所有客户,通常的结果是,没有人真正满意。根本无法提供高度专业化的软件(例如并行化编译器),同时又能将成本控制在可承受的范围内。
然而,在市场的另一端,坐着的是普通买家。更确切地说,是数千万的普通买家,他们都在为基本上构造简单、部件简单的机器花费巨额资金。供应商在利润率上的损失,可以通过销量来弥补。结果呢?商品计算机组件变得越来越快、更便宜、更小。现在,有可能使用这些现成的部件组装出能够与超级计算领域的“巨头”并驾齐驱的机器,在某些情况下,甚至超越它们。
英特尔的 x86 系列处理器,尤其是奔腾和奔腾 Pro,以不断提高的时钟速度提供出色的浮点性能。最近发布的奔腾 II 的峰值时钟速度为 300 MHz,而 Digital 最好的 Alpha 处理器的计算速度则高达 500 MHz 甚至更高。
PCI 总线允许处理器以超过 100MB/秒的速度与外围设备通信。由于它是一个独立于处理器的总线,因此进行处理器升级(例如,从奔腾 Pro 升级到 500MHz DEC Alpha)只需要更换处理器和主板。此外,被升级替换的部件有望具有可观的转售价值。
快速以太网技术的发展使得点对点通信速度超过 10MB/秒成为可能。允许多个机器充分利用此带宽的交换机随处可见,这使得 Beowulf 类(见下文)机器的带宽和延迟可以与更大的 IBM SP-2 和 Thinking Machines CM-5 相媲美。虽然 Beowulf 机器尚不能轻易扩展到数百个处理器,但它们在 16 或 32 个处理器的小型网络中的性能非常出色。
Linux 操作系统是稳健的、很大程度上符合 POSIX 标准的,并且在不同程度上可用于英特尔 x86、DEC Alpha 和 PowerPC 微处理器。由于其庞大的黑客军团的不懈努力,辅助硬件(网络和磁盘驱动程序)几乎在可用后立即得到支持,并且偶尔发现的错误也会在发现时得到纠正,通常是同一天。GNU 的编译器和调试器与免费的消息传递实现相结合,使得使用 Linux 机器进行并行编程和执行成为可能,而无需在软件上花钱。
Beowulf 项目研究了使用由大众市场组件构建并运行免费软件的互连 PC 的优势。与其说是原始计算能力,不如说是源于使用这些大众市场组件的量:性能/价格、性能/处理器等等。他们通过粗略定义“Beowulf 类”机器来提供一个非正式的“非标准”。最低要求是
16 个主板,配备英特尔 x86 处理器或同等产品
256MB DRAM,每个处理器板 16MB
16 个硬盘驱动器和控制器,每个处理器板一个
2 个以太网(10baseT 或 10base2)和控制器,每个处理器 2 个
2 个高分辨率显示器,配备视频控制器和 1 个键盘
Beowulf 类的想法与其说是定义一个特定的系统,不如说是提供一个粗略的指导方针,通过该方针可以比较组件改进和跨平台 Linux 端口。在美国各地使用了几台 Beowulf 类机器,包括洛斯阿拉莫斯国家实验室理论天体物理学组的 Loki 和加州理工学院高级计算研究中心的 Hyglac。
Loki 是一台 16 节点的并行机器,配备 2GB RAM 和 50GB 磁盘空间。大多数组件都是从 Atipa International (www.atipa.com) 获得的。每个节点本质上都是一台针对数值计算和通信优化的奔腾 Pro 计算机
(1) 英特尔奔腾 Pro 200MHz CPU,配备 256K 集成 L2 缓存
(1) 英特尔 VS440FX (Venus) 主板,82440FX (Natoma) 芯片组
(4) 8x36 60ns 奇偶校验 SIMM(每个节点 128MB)
(1) 昆腾 Fireball 3240MB IDE 硬盘驱动器
(1) Cogent EM400 TX PCI Quartet 快速以太网适配器
(1) SMC EtherPower 10/100 快速以太网 PCI 网卡
(1) S3 Trio-64 1MB PCI 显卡
Loki 的零件在 1996 年 9 月的标价略高于 51,000 美元。
节点通过四端口 Quartet 适配器连接到彼此,形成四度超立方体。每个节点还通过 SMC 适配器连接到两个八端口 3Com SuperStack II Switch 3000 TX 8 端口快速以太网交换机之一,这些交换机具有绕过多跳路由和提供与系统前端直接连接的双重用途,系统前端是一台梦想机器,具有以下组件
(2) 英特尔奔腾 Pro 200MHz CPU,配备 256K 集成 L2 缓存
(1) ASUS P/I-P65UP5 双 CPU 主板,Natoma 芯片组
(8) 16x36 60ns 奇偶校验 SIMM (512MB)
(6) 昆腾 Atlas 4.3GB UltraSCSI 硬盘驱动器
(1) Adaptec 2940UW PCI 快速宽 SCSI 控制器
(1) Cogent EM400 TX PCI Quartet 快速以太网适配器
(1) SMC EtherPower 10/100 快速以太网 PCI 网卡
(1) Matrox Millennium 4MB PCI 显卡
(1) 21 英寸诺基亚 445X 显示器
(1) 键盘、鼠标、软盘驱动器
(1) 东芝 8x IDE CD-ROM
(1) HP C1533A DAT DDS-2 4GB 磁带驱动器
(1) 昆腾 DLT 2000XT 15GB 磁带驱动器
节点还可以仅通过其 SMC-SuperStack 连接进行通信,作为一种快速的交换阵列拓扑结构。在 Supercomputing '96 大会上,Loki 与加州理工学院的 Hyglac 连接,两者作为一个单一的快速交换机器运行。
与 Loki 一样,Hyglac 也是一台 16 节点的奔腾 Pro 计算机,配备 2GB RAM。在构建时,它有 40GB 的磁盘空间,但后来通过为每个节点添加第二个下面列出的类型的硬盘驱动器,磁盘空间增加了一倍。
(1) 英特尔奔腾 Pro 200 MHz CPU,配备 256K 集成 L2 缓存
(1) 英特尔 VS440FX (Venus) 主板,82440FX (Natoma) 芯片组
(4) 8x32 60ns EDO SIMM(每个节点 128MB)
(1) 西部数据 2.52GB IDE 硬盘驱动器
(1) D-Link DFE-500 TX 100MB 快速以太网 PCI 网卡
(1) VGS-16 512K ISA 显卡
每个节点都连接到一个 16 路 Bay Networks 28115 快速以太网交换机,采用快速交换拓扑结构。视频输出通过交换机定向到一个显示器;直接连接到显示器的节点还支持第二张以太网卡和一个软盘驱动器。Hyglac 的零件在 1996 年 9 月的标价略高于 48,500 美元。大多数组件的价格此后下降了约 50%,而单项成本最高的项目(一台 16 端口快速以太网交换机)现在可以以不到 2500 美元的价格获得!
Loki 和 Hyglac 在所有节点上都运行 Red Hat Linux,并使用 GNU 的 gcc 2.7.2 作为编译器。
驱动这两个系统的 200MHz 奔腾 Pro 提供了一个实时时钟,其时钟周期为 5 纳秒,为消息传递提供精确的计时。更高级的计时和计数例程也可用,因此直接支持缓存命中和未命中等性能分析数据。LANL 开发了一个相对简单的硬件性能监控计数器接口,称为 perfmon,可在资源中列出的 Loki URL 中找到。
节点间通信通过消息传递接口 (MPI) 完成。虽然多种 MPI 实现都是免费提供的,但没有一种是专门为利用基于快速以太网的系统而编写的,而且像往常一样,最大的可移植性导致效率明显降低。因此,从头开始编写了一个最小的实现,其中包含大约 20 个最常见和最基本的 MPI 函数。这个专门的 MPI 库运行了下一节讨论的 treecode 以及版本 2 MPI 的 NAS 并行基准测试,同时几乎使从 LAM(俄亥俄州立大学的 MPI 版本)和 MPICH(来自阿贡国家实验室和密西西比州立大学)实现获得的消息带宽翻倍。
由于 treecode 在天体物理学中的应用,Loki 已被用于使用并行哈希八叉树库计算 N 体引力相互作用问题的结果。(八叉树是一种三维树数据结构,其中每个立方体单元被递归地划分为八个子单元。treecode 是一种数值算法,它使用树数据结构来提高 N 体模拟的效率。有关 treecode 的详细信息,请参阅资源中列出的 URL。)该代码不是特定于机器的,因此将商品机器的性能与传统超级计算机进行比较时,没有移植问题(除了英特尔 i860 和 Thinking Machines CM-5 的内部循环是用汇编语言编写的)。
在 Supercomputing '96 大会上,Loki 和 Hyglac 通过价值 3,000 美元的额外以太网卡和电缆连接起来,作为一个 32 节点的机器运行,购买成本略高于 100,000 美元。在运行 1000 万个粒子的 N 体基准测试计算时,Loki+Hyglac 实现了每秒 21.9 亿次浮点运算(GFLOPS),是 Cray T3D 每处理器性能的两倍多,几乎与 IBM SP-2 的性能相当(见表 1)。
图 4. 使用 975 万个粒子进行星系形成的引力 N 体模拟的中间阶段。在 Loki 上以约 1GFLOP 的持续速率计算大约花费了三天时间。
作为 LANL 的一台独立机器,Loki 完成了一项超过 975 万个粒子的 N 体计算。这项计算是“实际工作”,而不是“原理验证”,因此它经过调整以优化科学结果,而不是机器性能。即使在这种情况下,其性能和结果也令人瞩目。整个模拟需要 10 天(少几个小时)才能完成 750 个时间步长,执行了 6.6x1014 次浮点运算以计算 1.97x1013 次粒子相互作用,并生成了略高于 10GB 的输出数据。
对于整个模拟,Loki 平均实现了 879MFLOPS,性价比为 58 美元/MFLOP。诸如 SGI 的 Origin 等现代机器也能够达到此范围内的性价比,但是将 Origin 扩展到执行如此规模的计算所需的内存和磁盘很快就会变得令人望而却步;按标价计算,仅 2GB 的 Origin 内存的成本就超过了整个 Loki 组件。
treecode 的性质是,在后续的时间步长中,跨越树的开销大于执行浮点运算的开销,因此,代码运行时间越长,平均浮点运算速率就稳定地降低。当考虑模拟的前 30 个时间步长时,在 10.25 小时内进行的 1.15x1012 次粒子相互作用提供了 1.19 GFLOPS 的吞吐量。与整个模拟给出的吞吐量相比,这个数字实际上是对有用工作量的更好估计,因为 treecode 的目的是尽可能避免浮点计算。
Loki 还被用于模拟两个涡环的融合。模拟开始时,两个离散的烟圈中有 57,000 个涡旋粒子,尽管重新网格划分导致模拟在最终时间步长跟踪 360,000 个粒子。在模拟期间,每个处理器持续超过 65 MFLOPS,系统总性能为 950 MFLOPS。
Hyglac 已被用于使用渲染方程的蒙特卡罗实现执行照片级渲染。一些渲染图像的图像可在 http://www.cacr.caltech.edu/research/beowulf/rendering.html 上找到。在与 IBM SP-2 的直接比较中,Hyglac 完成渲染的速度比 IBM SP-2 快 12% 到 20%,而 IBM SP-2 的价格是 Hyglac 的 20 倍。
即使速度最快的系统,如果不能在不崩溃的情况下运行,也是毫无用处的。因此,系统可靠性至关重要,对于像 Loki 这样的机器尤其如此,它可能需要连续几天不间断地完成大规模计算。在老化测试期间,根据保修条款更换了一个坏的 SIMM 和少量坏的硬盘驱动器。商品零件的保修条款使这些商品超级计算机特别具有吸引力。Origin 等专用机器的保修期往往为 90 天或更短,而 Loki 内部组件等易于获得的零件通常具有从一年到终身的保修期。截至 1997 年 9 月,大多数 Loki 节点的正常运行时间超过 4 个月,没有重启。遇到的唯一硬件问题是三个 ATX 电源风扇发生故障,导致节点因过热而关闭。这些节点很容易用备用节点更换,并在几分钟内更换了风扇。
在表 2中,我们总结了能够运行 NAS(美国宇航局艾姆斯研究中心数值航空航天模拟设备)B 类基准测试的几台机器的性价比:Loki、SGI Origin 2000、IBM SP-2 P2SC 和 DEC AlphaServer 8400/440。
一个引力 N 体模拟为 LANL 的 Michael Warren 和加州理工学院的 John Salmon 赢得了 1992 年的戈登·贝尔性能奖。仅仅五年后,同样的计算就可以在一台 50,000 美元的机器上运行。技术不断进步(Warren 和 Salmon 最近在使用 Teraflops “ASCI Red” 机器上近 10,000 个处理器的一半运行超过 3.2 亿个粒子的 N 体代码时实现了 170 GFLOPS 的持续速度),但不断改进的“高端”超级计算机的成本使其超出了少数幸运儿的承受范围。即使是那些幸运儿也必须在永无止境的大规模计算游戏中相互竞争处理器时间。商品零件为少数用户提供了机会,让他们在一台能够在合理的时间内解决巨大计算问题的机器上拥有大量的处理器周期。Linux 和自由软件运动提供了充分利用硬件功能的软件。
Jim Hill (jlhill@lanl.gov) 是洛斯阿拉莫斯国家实验室的研究生助理,他正在考虑将他的两台 Linux 机器之一重命名为零度超立方体。

