使用 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 并行作业。我正在使用一个基于 生命游戏 的应用程序,该应用程序在一个名为“在具有红帽企业 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 是红帽公司的高级软件工程师,至少自 2010 年以来一直在迁移流程。他最初在一个高性能计算环境中开始迁移流程,并在某个时候迁移了如此多的流程,以至于他为此获得了博士学位,自从加入红帽公司以来,他开始迁移容器。

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.