在树莓派上使用 Ansible 构建基于 Linux 的 HPC 系统

使用低成本硬件和开源软件创建高性能计算集群。
459 位读者喜欢这个。
An introduction to GNU Screen

Opensource.com

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

最终的集群由两台充当计算节点的树莓派 3 系统和一台充当主节点的虚拟机组成

Map of HPC cluster

opensource.com

我的主节点在 x86_64 上运行 CentOS,我的计算节点在 aarch64 上运行略微修改过的 CentOS。

这就是现实生活中的设置

HPC hardware setup

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 日)上的演讲。

User profile image.
Adrian 是 Red Hat 的高级软件工程师,并且至少从 2010 年开始迁移进程。他最初在一个高性能计算环境中开始迁移进程,并在某个时候迁移了如此多的进程,以至于他为此获得了博士学位,自从加入 Red Hat 后,他开始迁移容器。

8 条评论

你好。
您有什么理由更喜欢 Slurm 而不是 HTCondor 吗?
谢谢!

OpenHPC 带有 Slurm 和 PBS,所以我选择了这两个替代方案之一。两者都在 OpenHPC 的指南中有所记录。

回复 作者 Osqui Littleriver

您构建这个只是为了学习 HPC 吗?这个集群实际上可以从事任何有用的工作吗?看起来很有趣,想试试。

嗨,感谢您的这篇文章。
我也正在尝试用一些 rpi 构建一个小型的 openhpc 集群。

您是否有关于您为什么以及如何为 rpi 修改您的 aarch64 centos7.4 的一些信息?

嗨,感谢您的这篇文章。
我也正在尝试用一些 rpi 构建一个小型的 openhpc 集群。

您是否有关于您为什么以及如何为 rpi 修改您的 aarch64 centos7.4 的一些信息?

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.