linux ansible
在上一篇有关Opensource.com的文章中 ,我介绍了OpenHPC项目,该项目旨在加速高性能计算(HPC)的创新。 本文通过使用OpenHPC的功能来构建小型HPC系统,进一步走了一步。 称呼它为HPC系统听起来可能比实际的要大,所以也许最好说这是一个基于OpenHPC项目发布的集群构建食谱的系统。
最终的集群由两个充当计算节点的Raspberry Pi 3系统和一个充当主节点的虚拟机组成:
我的主节点在x86_64上运行CentOS,而我的计算节点在aarch64上运行经过稍微修改的CentOS。
这是现实生活中的设置:
为了像HPC系统一样设置我的系统,我遵循了OpenHPC的《 CentOS 7.4 / aarch64 + Warewulf + Slurm (PDF)》的《集群构建食谱》 安装指南中的一些步骤。 该配方包括使用Warewulf的供应指令; 因为我手动安装了三个系统,所以跳过了Warewulf部件,并为执行的步骤创建了Ansible剧本 。
糟糕的剧本,我可以开始向我的资源经理提交工作了。 资源管理器(在我的情况下为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并行化作业。 我正在使用一个基于Game of Life的应用程序,该应用程序在名为“使用Red Hat Enterprise Linux在多种体系结构上运行Life of Game”的视频中使用。 除了以前使用的基于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
出于演示目的,该作业具有一个图形界面,显示了当前的计算结果:
在一个计算节点上计算红色单元格的位置,并在另一个计算节点上计算绿色单元格。 我还可以告诉“生命游戏”程序对每个使用的CPU(每个计算节点有四个)的单元进行不同的着色,这将导致以下输出:
借助OpenHPC提供的安装配方和软件包,我能够在HPC类型的配置中设置两个计算节点和一个主节点。 我可以将作业提交给资源管理器,并且可以使用OpenHPC提供的软件来利用我的所有Raspberry Pis CPU启动MPI应用程序。
要了解有关使用OpenHPC构建Raspberry Pi集群的更多信息,请参加Adrian Reber在1月26日至28日在捷克布尔诺的DevConf.cz 2018年以及2月2日在布鲁塞尔举行的CentOS Dojo 2018上的演讲。
翻译自: https://opensource.com/article/18/1/how-build-hpc-system-raspberry-pi-and-openhpc
linux ansible