使用Ansible在樹莓派上構(gòu)建一個基于Linux的高性能計算系統(tǒng)
使用低成本的硬件和開源軟件設(shè)計一個高性能計算集群。
在我的 之前發(fā)表在 Opensource.com 上的文章中,我介紹了 OpenHPC 項目,它的目標(biāo)是致力于加速高性能計算(HPC)的創(chuàng)新。這篇文章將更深入來介紹使用 OpenHPC 的特性來構(gòu)建一個小型的 HPC 系統(tǒng)。將它稱為 HPC 系統(tǒng) 可能有點“扯虎皮拉大旗”的意思,因此,更確切的說法應(yīng)該是,它是一個基于 OpenHPC 項目發(fā)布的 集群構(gòu)建方法 的系統(tǒng)。
這個集群由兩臺樹莓派 3 系統(tǒng)作為計算節(jié)點,以及一臺虛擬機作為主節(jié)點,結(jié)構(gòu)示意如下:
Map of HPC cluster
我的主節(jié)點運行的是 x86_64 架構(gòu)的 CentOS 操作系統(tǒng),而計算節(jié)點運行了 aarch64 的輕度修改版的 CentOS 操作系統(tǒng)。
下圖是真實的設(shè)備工作照:
HPC hardware setup
要把我的系統(tǒng)配置成像上圖這樣的 HPC 系統(tǒng),我是按照 OpenHPC 的集群構(gòu)建方法的 CentOS 7.4/aarch64 + Warewulf + Slurm 安裝指南 (PDF)的一些步驟來做的。這個方法包括了使用 Warewulf 的配置說明;因為我的那三個系統(tǒng)是手動安裝的,我跳過了 Warewulf 部分以及創(chuàng)建 Ansible 劇本 的一些步驟。
在 Ansible 劇本中設(shè)置完成我的集群之后,我就可以向資源管理器提交作業(yè)了。在我的這個案例中, Slurm 充當(dāng)了資源管理器,它是集群中的一個實例,由它來決定我的作業(yè)什么時候在哪里運行。在集群上啟動一個簡單的作業(yè)的方式之一:
[ohpc@centos01 ~]$ srun hostname
calvin
如果需要更多的資源,我可以去告訴 Slurm,我希望在 8 個 CPU 上去運行我的命令:
[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin
在***個示例中,Slurm 在一個單個的 CPU 上運行了指定的命令(hostname
),而在第二個示例中,Slurm 在 8 個 CPU 上運行了那個命令。我的計算節(jié)點一個命名為 calvin
,而另一個命名為 hobbes
;在上面的命令輸出部分可以看到它們的名字。每個計算節(jié)點都是由 4 個 CPU 核心的樹莓派 3 構(gòu)成的。
在我的集群中提交作業(yè)的另一種方法是使用命令 sbatch
,它可以用于運行腳本,將輸出寫入到一個文件,而不是我的終端上。
[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101
它將創(chuàng)建一個名為 slurm-101.out
的輸出文件,這個輸出文件包含下列的內(nèi)容:
Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017
為示范資源管理器的基本功能,簡單的串行命令行工具就行,但是,做各種工作去配置一個類似 HPC 系統(tǒng)就有點無聊了。
一個更有趣的應(yīng)用是在這個集群的所有可用 CPU 上運行一個 Open MPI 的并行作業(yè)。我使用了一個基于 康威生命游戲 的應(yīng)用,它被用于一個名為“使用 Red Hat 企業(yè)版 Linux 跨多種架構(gòu)運行康威生命游戲”的 視頻。除了以前基于 MPI 的 Game of Life
版本之外,在我的集群中現(xiàn)在運行的這個版本對每個涉及的主機的單元格顏色都是不同的。下面的腳本以圖形輸出的方式來交互式啟動應(yīng)用:
$ cat life.mpi
#!/bin/bash
module load gnu6 openmpi3
if [[ "$SLURM_PROCID" != "0" ]]; then
exit
fi
mpirun ./mpi_life -a -p -b
我使用下面的命令來啟動作業(yè),它告訴 Slurm,為這個作業(yè)分配 8 個 CPU:
$ srun -n 8 --x11 life.mpi
為了演示,這個作業(yè)有一個圖形界面,它展示了當(dāng)前計算的結(jié)果:
紅色單元格是由其中一個計算節(jié)點來計算的,而綠色單元格是由另外一個計算節(jié)點來計算的。我也可以讓康威生命游戲程序為使用的每個 CPU 核心(這里的每個計算節(jié)點有四個核心)去生成不同的顏色,這樣它的輸出如下:
感謝 OpenHPC 提供的軟件包和安裝方法,因為它們讓我可以去配置一個由兩個計算節(jié)點和一個主節(jié)點的 HPC 式的系統(tǒng)。我可以在資源管理器上提交作業(yè),然后使用 OpenHPC 提供的軟件在我的樹莓派的 CPU 上去啟動 MPI 應(yīng)用程序。