一套出人意料的主流软件工具来自一个不太可能的来源——一个名为 Gelato Federation 的科学导向组织。该组织于 2002 年 3 月正式成立,旨在应用在英特尔先进的安腾处理器上运行的开源 Linux 软件作为一项使能技术,以实现构建大型、高度可扩展的 64 位系统集群的目标。
Gelato 组织认为,这种可扩展性是过去 10 到 15 年高性能计算领域最重要的趋势。它标志着一种强大且更经济的替代方案,可以取代 20 世纪 80 年代和 90 年代早期遍布大学实验室的 Cray 超级计算机。
事实上,集群(在行话中也称为网格,尽管简单的描述符“网络”通常也同样贴切)被认为是利用当前技术将整体性能提升到万亿次浮点运算区域的最快途径。
这些指标通常在高性计算的顶端领域被谈论。然而,随着快速的向下渗透,今天的最先进技术变成了明天的中端技术,Gelato 两年前开始的许多工作可能已经与大多数 IT 专业人员相关。
因此,在 Gelato 下开发的用于支持集群的工具现在可以作为免费、高质量的辅助工具,帮助完成大量的网络任务。
以 SmartFrog(对象组智能框架;见图 1)为例,这是一种通过 Gelato 提供的工具,最初在英国布里斯托尔的惠普实验室开发。Gelato 连接的出现是因为 SmartFrog 可以管理软件在集群中的部署方式。
根据其常见问题解答,SmartFrog 是一个软件框架,“用于帮助构建分布式、基于组件的软件系统,使其易于配置、自动安装和启动,以及自动关闭。” 我更认为它是在类固醇上的脚本,只是您不必费力编写逐行的类 Perl 程序。
一个突出的例子是使用 SmartFrog 部署 Apache Web 服务器。SmartFrog 可用于编写简单的 SmartFrog 组件,这些组件可以安装和配置 Apache,以及启动和停止 Apache 在远程系统上的执行。
SmartFrog 是作为一个研究项目的一部分而创建的,该项目致力于分布式系统和网格计算中使用的配置管理。SmartFrog 完全用 Java 编写。
SmartFrog 声称与现有的安装程序不同,例如那些使用启动时协议来安装操作系统镜像的安装程序,或微软的 Windows Installer XML,这是一种用于构建 Windows 产品安装包的工具集。(令人惊讶的是,后者最近由微软在 SourceForge 开源网站上公开。1)。SmartFrog 扩展了这些方法,主要通过其处理运行时管理的能力。
就其应用而言,SmartFrog 帮助用户自动化软件部署。其关键特性是一种系统描述语言,可以编写该语言来创建详细说明如何将软件组件分配到网络中不同系统的清单。例如,系统描述语言可用于定义要使用的软件组件,并命名这些组件要在其上运行的计算机。此外,它还可以详细说明如何配置各个组件以及何时启动和停止它们。
除了语言之外,SmartFrog 还有一个运行时组件,其形式为守护进程。SmartFrog 通过其守护进程部署,这些守护进程被放到网络中的所有系统上。守护进程解释 SmartFrog 系统描述语言,并按照指示创建、配置和启动软件(例如,在我们的示例中,Apache)。
SmartFrog 是开源的,根据 LGPL(GNU 宽通用公共许可证)免费提供用于商业或非商业目的。第三方可以构建专有插件。它可以在 http://sourceforge.net/projects/smartfrog 获取。
除了 SmartFrog 之外,另外两个与主流相关的 Gelato 工具是 PAPI(性能应用程序编程接口)和 HPCToolkit。两者都是性能分析工具。
PAPI 是一个跨平台库接口,用于访问大多数现代微处理器上可用的硬件性能计数器。因此,PAPI 可以作为一种监视实际芯片级性能的方法——这是尝试优化系统和集群运行的重要工具。根据其文档,PAPI 使软件工程师能够近实时地看到软件性能与处理器事件之间的关系。
HPCToolkit 是一个开源的多平台工具套件,用于基于配置文件的应用程序性能分析。它由多个组件组成,围绕一个类似 PAPI 的工具构建,该工具通过对安腾微处理器上的性能计数器进行统计采样来分析应用程序二进制文件的执行情况。该工具包还包含一个发现程序循环的工具——这是优化代码的重要辅助工具。该软件包还可以创建其收集的性能信息数据库,以便开发人员可以查找长期趋势。
Gelato 是如何从最初的科学使命演变为如此有用的软件工具来源的?简短的答案是,它并没有。Gelato 仍然专注于其科学根基,但技术向下渗透效应使其研究成果变得有用,并且在未来几年应该会继续如此。
该研究正在继续进行,重点关注五个特定领域:集群、并行文件系统、单系统可扩展性、集群和单系统的性能工具以及编译器。
Gelato 使用运行英特尔下一代安腾硬件(以前称为 IA-64)的高端系统,以及软件方面的开源 Linux 内核来研究这些领域。Gelato 选择安腾是因为 64 位架构已证明其在超高端机器中的能力。也许部分原因也是因为惠普作为该组织的赞助成员的存在而促成了这一选择。
惠普的参与毫不奇怪,因为该公司从 1994 年开始与英特尔共同开发 IA-64 架构。对于 Gelato 而言,通过安腾进行的 64 位计算提供了对科学领域至关重要的显著优势:更大的地址空间。在 32 位系统中,地址空间为 2 千兆字节。将内存寻址字的宽度加倍立即将 2 千兆字节计数增加到 10 艾字节(10 x 1018 字节)。即使对于许多科学应用程序中固有的庞大数据集,这也被认为是充足的余量。
同样重要的是,英特尔专注于在其基于安腾的微处理器中提供极佳的浮点性能。这在英特尔修订后的 64 位架构实现中得到了清晰的体现,该架构于 2002 年 7 月以安腾 2 微处理器的形式开始出货。在浮点性能方面,英特尔表示,安腾 2 的 SPECfp2000(标准性能评估公司浮点)基准测试结果为 1,350。这几乎是第一代安腾达到的 701 的两倍。
值得注意的是,Gelato 不推荐 Linux 的特定版本;它与发行版无关。
除了惠普之外,Gelato 的其他成员还包括伊利诺伊大学厄巴纳-香槟分校的国家超级计算应用中心 (NCSA);EISEE 集团,一个位于法国巴黎的先进技术和科学教育中心;加拿大滑铁卢大学;澳大利亚新南威尔士大学;匹兹堡超级计算机中心;以及欧洲核子研究组织 CERN。
这些成员中的许多人都在推进他们自己的研究工作。例如,在集群方面,Gelato 成员 NCSA 正在努力组建一个提供 10 万亿次浮点运算的 Linux 集群。这样的设置可能由多达 1,000 个单独的节点组成。
(当然,创新不仅仅发生在像 Gelato 这样有指导的努力范围内。截至撰写本文时,也许最大的集群工作正在加利福尼亚州劳伦斯利弗莫尔国家实验室进行。在那里,一个代号为 Thunder 的超级计算机集群正在由 3,960 个安腾 2 处理器配置而成。Thunder 的架构为 960 个节点,每个节点使用四个以 1.4 吉赫兹运行的安腾 2 处理器。整个集群完成后的理论性能预计将超过 20 万亿次浮点运算。)
除了像 SmartFrog 这样从集群研究中发展出来的工具之外,其他的软件优势也正在被收获。例如,Gelato 成员正在努力采用 Eclipse2 开源工具框架,并为 Linux 上的 IA-64 创建一个 IDE(集成开发环境)。这项工作正在进行中;初步的补丁和库集已可用。
Gelato 还在提供一个名为 Perforce 的版本控制软件包。该软件包是商业软件,但为开源项目免费提供。
Gelato 追随者非常感兴趣的是惠普的安腾架构 Ski 模拟器,该公司正在其企业网站上提供该模拟器 (http://www.software.hp.com/products/LIA64/overview4a.htm)。它被誉为功能模拟器,它模拟 IA-64 指令集,而不是英特尔的特定微处理器实现。惠普指出,由于功能模拟是在指令级别执行的,因此 Ski 非常快。
然而,由于 Ski 在功能级别而不是微架构级别进行模拟,因此它不能用于确定模拟程序的真实世界性能。Ski 执行单处理器流,不能模拟多处理器的行为。
Ski 旨在与惠普的 NUE(本机用户环境)结合使用,后者提供运行 IA-64 应用程序所需的编译器、链接器、汇编器、软件库和执行环境。
另一个强大的基于 Linux 的安腾工具来自伊利诺伊大学,它是一个名为 IMPACT(伊利诺伊微架构项目利用高级编译器技术)的编译器。
在新南威尔士大学,与项目相关的工作重点是开发设备驱动程序和向 Linux 内核添加增强功能所需的工具和增强功能。(IA-64 内核工作通过 http://www.ia64-linux.org 的 Linux IA-64 小组单独协调。)
Gelato 不是唯一一个致力于 IA-64 开源软件的组织。工作站巨头 Silicon Graphics Inc. 正在推进对 NUMA(非统一内存访问)架构的 Linux 支持以及多处理器可扩展性的研究。IBM 正在为 Linux 内核创建新一代 Posix 线程。
Atlas 项目现在已基本失效,该项目是一个由公司组成的联盟,旨在推广大型系统上的 Linux。尽管资金已经枯竭,但仍有一些志愿者致力于开发内核测试。
对于希望成为 Gelato 社区一部分的开发人员,该组织欣然接受 Linux 安腾软件的贡献,这些软件可以直接发布到该组织的 Web 门户。3
GELATO
Gelato Federation 主页位于 http://www.gelato.org
注意:Gelato 软件贡献可以提交到 http://www.gelato.org/software/add.php
SmartFrog 软件框架位于 http://www.hpl.hp.com/research/smartfrog/
PAPI 性能应用程序编程接口位于 http://icl.cs.utk.edu/papi/
GELATO:相关
用于基于配置文件的应用程序性能分析的 HPCToolkit 套件位于 http://hipersoft.cs.rice.edu/hpctoolkit/
关于惠普 IA-64 Linux 模拟器 (Ski) 的信息位于 http://www.software.hp.com/products/LIA64/overview4a.htm
新南威尔士大学对 Gelato 的贡献,包括 Linux IA-64 内核邮件列表存档,位于 http://www.gelato.unsw.edu.au/
Silicon Graphics 对非统一内存访问 (NUMA) 架构和多处理器可扩展性的研究位于
http://oss.sgi.com/projects/numa/
http://oss.sgi.com/projects/linux-scalability/
IBM 的下一代 Posix 线程项目位于 http://oss.software.ibm.com/pthreads/
Atlas 64 项目的摘要位于 http://sourceforge.net/projects/atlas-64/
用于 IA-64 Linux 的 Eclipse 通用工具平台的版本位于 http://gelato.uiuc.edu/projects/eclipse/
LINUX
Linux 内核的补丁在 ftp.kernel.org 维护
其他
关于劳伦斯利弗莫尔的安腾 2 集群的描述位于 http://www.intel.com/pressroom/archive/releases/20031116corp.htm
1. Hines, M. 微软在线发布工具源代码。ZDNet(2004 年 4 月 6 日); http://zdnet.com.com/2100-1104_2-5185549.html。
2. Wolfe, A. Eclipse:平台成为开源 Woodstock。 1, 8 (2003 年 11 月), 14–16.
3. 要贡献 Linux 安腾软件,请访问 Gelato Web 门户:http://www.gelato.org/software/add.php。
喜欢它,讨厌它?请告诉我们
[email protected] 或 www.acmqueue.com/forums
ALEXANDER WOLFE 获得了纽约市库珀联盟学院的电气工程学位。他是一位居住在纽约州森林小丘的科学作家,曾为IEEE Spectrum、EE Times、Embedded Systems Programming 和 Byte.com 撰稿。
© 2004 1542-7730/04/0600 $5.00
最初发表于 Queue vol. 2, no. 4—
在 数字图书馆 中评论本文