在我之前为 Opensource.com 撰写的文章中,我介绍了旨在加速高性能计算 (HPC) 创新的 OpenHPC 项目。本文更进一步,使用 OpenHPC 的功能构建一个小型 HPC 系统。称之为HPC 系统可能听起来比实际情况要大,因此也许最好说这是一个基于 OpenHPC 项目发布的 集群构建指南的系统。
最终的集群由两台充当计算节点的树莓派 3 系统和一台充当主节点的虚拟机组成

opensource.com
我的主节点在 x86_64 上运行 CentOS,我的计算节点在 aarch64 上运行略微修改过的 CentOS。
这就是现实生活中的设置

opensource.com
为了像 HPC 系统一样设置我的系统,我遵循了 OpenHPC 集群构建指南中的一些步骤 CentOS 7.4/aarch64 + Warewulf + Slurm 安装指南 (PDF)。该指南包括使用 Warewulf 的配置说明;因为我是手动安装的这三个系统,所以我跳过了 Warewulf 部分,并为我采取的步骤创建了一个 Ansible playbook。
一旦我的集群通过 Ansible playbook 设置完成,我就可以开始向我的资源管理器提交作业。在我的例子中,资源管理器 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 核心的树莓派 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 并行化作业。我正在使用一个基于 生命游戏 的应用程序,该应用程序在一个名为“使用红帽企业 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 应用程序,从而利用我所有树莓派的 CPU。
要了解更多关于使用 OpenHPC 构建树莓派集群的信息,请参加 Adrian Reber 在捷克共和国布尔诺举行的 DevConf.cz 2018(1 月 26-28 日)和在布鲁塞尔举行的 CentOS Dojo 2018(2 月 2 日)上的演讲。
8 条评论