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

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

Opensource.com

在我在 Opensource.com 上发表的上一篇文章中,我介绍了旨在加速高性能计算 (HPC) 创新的 OpenHPC 项目。本文更进一步,利用 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 并行化作业。 我正在使用一个基于 生命游戏 的应用程序,该应用程序在一个名为“Running Game of Life across multiple architectures with 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 的一些信息?

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