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

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本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.