使用 Ansible 在 Raspberry Pi 上构建基于 Linux 的 HPC 系统

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

Opensource.com

在我之前为 Opensource.com 撰写的文章中,我介绍了 OpenHPC 项目,该项目旨在加速高性能计算 (HPC) 领域的创新。本文更进一步,利用 OpenHPC 的功能构建一个小型 HPC 系统。称其为HPC 系统听起来可能有点夸大,所以或许说这是一个基于 OpenHPC 项目发布的集群构建配方的系统更为合适。

最终的集群由两台 Raspberry Pi 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 核心的 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 提供的软件来启动利用我所有 Raspberry Pi CPU 的 MPI 应用程序。


要了解更多关于使用 OpenHPC 构建 Raspberry Pi 集群的信息,请参加 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 的一些信息?

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.