在我在 Opensource.com 上发表的前一篇文章中,我介绍了 OpenHPC 项目,该项目旨在加速高性能计算 (HPC) 领域的创新。本文通过使用 OpenHPC 的功能来构建一个小型 HPC 系统,更进一步。称其为 *HPC 系统* 可能听起来比它实际的规模更大,所以也许最好说这是一个基于 OpenHPC 项目发布的 集群构建方案 的系统。
最终集群由两个 Raspberry Pi 3 系统作为计算节点和一个虚拟机作为主节点组成

opensource.com
我的主节点在 x86_64 上运行 CentOS,而我的计算节点在 aarch64 上运行一个稍微修改过的 CentOS。
这是实际设置的样子

opensource.com
为了像 HPC 系统一样设置我的系统,我遵循了 OpenHPC 集群构建方案中的一些步骤,即 CentOS 7.4/aarch64 + Warewulf + Slurm 的安装指南(PDF)。该方案包括使用 Warewulf 进行配置的说明;因为我是手动安装这三个系统,所以我跳过了 Warewulf 部分,并为我采取的步骤创建了一个 Ansible playbook。
一旦我的集群通过 Ansible playbooks 设置好,我就可以开始向我的资源管理器提交作业。资源管理器,在我的例子中是 Slurm,它是集群中决定我的作业在何处以及何时执行的实例。在集群上启动一个简单作业的一种可能性是
[ohpc@centos01 ~]$ srun hostname
calvin
如果我需要更多资源,我可以告诉 Slurm 我想在八个 CPU 上运行我的命令
[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin
在第一个例子中,Slurm 在一个 CPU 上运行了指定的命令 (hostname
),在第二个例子中,Slurm 在八个 CPU 上运行了该命令。我的一个计算节点名为 calvin
,另一个名为 hobbes
;这可以在上述命令的输出中看到。每个计算节点都是一个具有四个 CPU 核心的 Raspberry Pi 3。
向我的集群提交作业的另一种方法是命令 sbatch
,它可以用来执行脚本,并将输出写入文件而不是我的终端。
[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101
这将创建一个名为 slurm-101.out
的输出文件,其内容如下
Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017
为了演示资源管理器的基本功能,简单和串行的命令行工具是合适的,但在完成设置类似 HPC 系统的所有工作后,有点无聊。
一个更有趣的应用是在集群上所有可用 CPU 上运行一个 Open MPI 并行化作业。我正在使用一个基于 生命游戏 的应用程序,它在 视频 中被称为“在具有 Red Hat Enterprise Linux 的多个架构上运行生命游戏”。除了之前使用的基于 MPI 的生命游戏实现之外,现在在我集群上运行的版本为每个参与主机着色不同的单元格。以下脚本以图形输出交互方式启动应用程序
$ cat life.mpi
#!/bin/bash
module load gnu6 openmpi3
if [[ "$SLURM_PROCID" != "0" ]]; then
exit
fi
mpirun ./mpi_life -a -p -b
我使用以下命令启动作业,该命令告诉 Slurm 为该作业分配八个 CPU
$ srun -n 8 --x11 life.mpi
出于演示目的,该作业具有一个图形界面,显示了当前计算结果

opensource.com
红色单元的位置在一个计算节点上计算,绿色单元在另一个计算节点上计算。我也可以告诉生命游戏程序为每个使用的 CPU (每个计算节点有四个) 单元着色不同的颜色,这将导致以下输出

opensource.com
感谢 OpenHPC 提供的安装方案和软件包,我能够以 HPC 类型配置设置两个计算节点和一个主节点。我可以向我的资源管理器提交作业,并且可以使用 OpenHPC 提供的软件来启动 MPI 应用程序,利用我所有 Raspberry Pi 的 CPU。
要了解更多关于使用 OpenHPC 构建 Raspberry Pi 集群的信息,请参加 Adrian Reber 在捷克共和国布尔诺举行的 DevConf.cz 2018(1 月 26-28 日)和在布鲁塞尔举行的 CentOS Dojo 2018(2 月 2 日)的演讲。
8 条评论