参数化建模:Linux 集群的杀手级应用

作者:David Abramson

经过近 20 年的研发,并行计算技术仍然没有得到广泛应用。然而,随着基于 PC 的硬件和网络产品的最新进展,现在可以使用工业标准、商业化的现成产品构建并行计算机。Beowulf 项目(参见 http://beowulf.gsfc.nasa.gov/)中使用的那些方法提倡将许多基于 Linux 的工作站或高端 PC 与高速网络硬件和适当的软件连接起来,作为可行并行计算机的基础。这些系统支持使用消息传递方法的并行编程。尽管如此,仍然缺乏良好、广泛的并行应用程序。

我认为应用程序的缺乏主要有两个原因。首先,硬件架构的快速变化和软件标准的缺乏使得开发健壮、可移植和高效的软件变得困难。其次,开发并行程序的许多努力都集中在低级编程问题上,例如如何在可移植的方式下支持消息传递。因此,对围绕特定应用领域构建的高级并行编程环境的关注不足。因此,构建并行程序的应用程序开发人员被迫考虑非常低级的问题,这些问题与他们的基础学科(如物理学、化学和商业)相去甚远。

1994 年,我和我的一些同事开始了一个名为 Nimrod 的研究项目,目标是为特定类型的应用(即参数化建模实验)生成一个并行问题解决环境。在尝试使用可用工具在分布式计算机上执行一些大规模计算建模实验后,我们感到沮丧,因此受到启发开展了这个项目的工作。我们要么被迫手动执行工作,要么使用 PVM(并行虚拟机)和批处理排队系统等低级并行编程工具。这些自动化方法都与我们想要执行的工作类型不匹配,当时我们想要执行的工作是模拟空气污染并探索不同的控制策略。该项目促成了一个名为 EnFuzion 的商业工具的开发(参见 http://www.turbolinux.com/),该工具可在包括 Linux 在内的各种 UNIX 平台上运行。它还促成了许多非常成功的应用,为相关研究人员带来了可观的回报。其他类型的问题也可以被表述为参数化实验,因此也可以利用 EnFuzion。

参数化建模

参数化建模关注使用不同的输入参数值计算函数值。结果使得探索不同的参数和设计选项成为可能。电子表格软件的普及使得这种广泛的方法非常流行,在电子表格软件中,可以快速评估许多不同的选项并显示结果。然而,我们感兴趣的不仅仅是计算函数值,而是运行可执行程序,因此探索许多设计方案所需的时间可能很长。例如,财务模型可能需要大约一个小时才能在 PC 上计算一个方案。因此,要考虑 100 种不同的方案,需要 100 个小时,即超过四天的计算时间。只有使用多台计算机并行运行程序的多个调用,这种类型的实验才有可能实现。例如,20 台机器可以在大约五个小时的运行时间内解决相同的问题。

尽管使用多台机器解决一个大型参数化实验具有明显的优势,但几乎没有高级工具可用于支持在分布式计算机上多次执行相同的程序。电子表格软件并非设计用于并发执行程序或利用分布式计算机。可以使用 PVM(参见 http://www.epm.ornl.gov/pvm/)、消息传递接口(参见 http://www.mpi-forum.org/)和远程过程调用 (RPC) 等低级并行编程工具编写程序,以支持其在多台机器上执行;然而,这种方法有许多缺点。

  • 首先,程序的源代码必须可用,并且必须修改它以支持并行执行。对于复杂的商业软件来说,这并非总是可能或理想的。

  • 其次,必须将任务分配的所有方面都构建到应用程序中。应用程序程序员通常既不是自己学科的专家,也不是并行编程的专家;简而言之,这很困难。

  • 第三,除非将容错构建到应用程序中,否则生成的程序将无法处理网络或单个机器中的故障。这种容错性会显着复杂化应用程序。

因此,这种方法在实践中很少使用也就不足为奇了。

另一种方法是使用远程作业分发系统,如 Platform Computing Load Sharing Facility(参见 www.platform.com)、Network Queueing System(参见 www.shef.ac.uk/uni/projects/nqs)或 Portable Batch Scheduler(参见 pbs.mrj.com)。这些系统允许用户将作业提交到由许多单个机器构建的虚拟计算机。虽然比以前的并行编程方法更通用,但远程排队系统的主要缺点是它们的目标是运行作业,而不一定是执行参数化研究。因此,您必须构建额外的软件,用于运行基于不同参数值生成的作业,并在聚合结果之后进行处理。这可能会使用户面临许多低级系统问题,例如网络队列的管理、底层机器的位置和性质、共享文件系统的可用性、将数据从一台机器传输到另一台机器的方法等等。

进入 TurboLinux EnFuzion

EnFuzion 介于用户级工具和软件开发环境之间。EnFuzion 的设计旨在使构建用于参数化建模实验的容错分布式应用程序在几分钟内成为可能。在许多情况下,EnFuzion 不需要编程;您只需向系统描述参数,并给出有关如何运行程序的一些说明。EnFuzion 管理代码与不同参数值的实例化,将文件发送到远程机器并检索它们,最后,它分发执行。如果程序或系统失败,EnFuzion 会自动在另一台机器上重新运行该程序。

运行 EnFuzion 实验需要三个阶段:准备、生成和分发。在准备阶段,您开发一个名为计划的描述性文件。计划包含参数、其类型和可能值的描述。它还包含用于将文件发送到远程机器、检索文件和运行作业的命令。EnFuzion 提供了一个名为 Preparator 的工具,该工具具有用于生成标准计划文件的向导,如图 1 所示。或者,如果您准备学习 EnFuzion 的简单脚本语言,则可以使用普通文本编辑器构建计划。图 1 所示的计划是简单实验的典型代表,并且非常小。

Parametric Modelling: Killer Apps for Linux Clusters

图 1. 计划文件

计划文件由一个名为生成器的工具处理,该工具要求用户指定参数的实际值。例如,计划文件可能指定参数是整数范围,但不给出起始值、结束值或增量值。生成器工具允许用户填写这些值。然后,它通过取所有参数值的叉积来报告执行实验所需的独立程序执行次数。图 2 显示了与 CAD 工具的示例生成器交互,其中时钟周期参数设置为 75 和 100 纳秒的值,成本表参数从 1 变化到 100。此交互生成了 CAD 软件包的 200 个单独执行。

Parametric Modelling: Killer Apps for Linux Clusters

图 2. 示例生成器

生成器生成一个运行文件,其中包含有关要使用的参数值以及如何运行作业的所有信息。此文件由一个名为调度器的工具处理,该工具组织实际执行。EnFuzion 将您开发计划的机器称为根机器。工作在许多计算节点上执行,如图 3 所示。文件根据需要从根机器发送到计算节点。输出返回到根机器以进行后处理。

Parametric Modelling: Killer Apps for Linux Clusters

图 3. 计算节点

调度器选择将工作发送到用户提供的文件中命名的机器,因此每个用户都可以拥有不同的机器列表。调度器联系节点并确定是否可以开始执行任务。EnFuzion 允许您使用许多不同的阈值来限制运行的任务数,例如最大任务数、节点可用的时间以及机器的峰值负载平均值。在莫纳什大学,我们使用 UNIX 命令 nice 增强了 EnFuzion。这允许一个节点运行比可用处理器更多的任务,但长时间运行的作业会被“nice”处理,以便短时间运行的作业比长时间运行的作业具有更高的优先级。这似乎是在不人为限制作业混合的情况下混合短时间运行和长时间运行作业的好方法。

莫纳什参数化建模引擎

在莫纳什大学,我们构建了一个由 30 台双处理器奔腾机器组成的集群,运行 Linux,称为莫纳什参数化建模引擎 (MPME)。一台机器充当主机,并连接到公共网络和用于连接计算节点的专用 100Mbit 网络。图 4 显示了这台机器的一部分。

Parametric Modelling: Killer Apps for Linux Clusters

图 4. 莫纳什参数化建模引擎

每个 MPME 节点都运行完整的 Linux Red Hat 5.2 内核和标准的 GNU 工具,如 gcc、gdb 等。通常,用户登录到主机并使用 EnFuzion 在节点上调度工作。我们将系统配置为每个节点最多接受五个作业,即使每个节点仅包含两个处理器。为了控制每台机器的负载,运行一个脚本,该脚本会随着每个进程执行时间的延长而增加其 nice 级别。这意味着可以在平台上混合长时间运行和短时间运行的作业。相比之下,当我们将作业数量限制为处理器数量时,我们发现长时间运行的作业垄断了节点,而短时间运行的作业很少运行。

迄今为止,我们已使用 MPME 来支持广泛的应用。表 1 显示了 1998 年和 1999 年期间安装的应用列表。其中许多是学生项目,作为学期科目的一部分完成。在侧边栏“案例研究”中,我们的一位研究生 Carlo Kopp 描述了使用集群执行其网络模拟的情况。结果非常显着,在这种情况下,额外的计算资源使他能够探索比他最初认为可能的更多的设计选项。

表 1

案例研究

资源

Parametric Modelling: Killer Apps for Linux Clusters
电子邮件:davida@dgs.monash.edu.au

David Abramson (davida@dgs.monash.edu.au) 是澳大利亚莫纳什大学计算机科学与软件工程学院的院长。Abramson 教授自 1979 年以来一直从事计算机体系结构和高性能计算研究,目前是分布式系统 Nimrod 项目合作研究中心的项目负责人。他目前的研究兴趣是高性能计算机系统设计、用于编程并行和分布式超级计算机的软件工程工具以及彩色玻璃窗。

加载 Disqus 评论