使用 Ansible 在樹莓派上構建一個基於 Linux 的高性能計算系統
在我的 之前發表在 Opensource.com 上的文章中,我介紹了 OpenHPC 項目,它的目標是致力於加速高性能計算(HPC)的創新。這篇文章將更深入來介紹使用 OpenHPC 的特性來構建一個小型的 HPC 系統。將它稱為 HPC 系統 可能有點「扯虎皮拉大旗」的意思,因此,更確切的說法應該是,它是一個基於 OpenHPC 項目發布的 集群構建方法 的系統。
這個集群由兩台樹莓派 3 系統作為計算節點,以及一台虛擬機作為主節點,結構示意如下:
![Map of HPC cluster](/data/attachment/album/201803/25/110113yb3b36m33txxa6mm.png "Map of HPC cluster")
我的主節點運行的是 x86_64 架構的 CentOS 操作系統,而計算節點運行了 aarch64 的輕度修改版的 CentOS 操作系統。
下圖是真實的設備工作照:
![HPC hardware setup](/data/attachment/album/201803/25/110115czi6plkwzs57pvzz.jpg "HPC hardware setup")
要把我的系統配置成像上圖這樣的 HPC 系統,我是按照 OpenHPC 的集群構建方法的 CentOS 7.4/aarch64 + Warewulf + Slurm 安裝指南 (PDF)的一些步驟來做的。這個方法包括了使用 Warewulf 的配置說明;因為我的那三個系統是手動安裝的,我跳過了 Warewulf 部分以及創建 Ansible 劇本 的一些步驟。
在 Ansible 劇本中設置完成我的集群之後,我就可以向資源管理器提交作業了。在我的這個案例中, Slurm 充當了資源管理器,它是集群中的一個實例,由它來決定我的作業什麼時候在哪裡運行。在集群上啟動一個簡單的作業的方式之一:
[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 上運行了那個命令。我的計算節點一個命名為 calvin
,而另一個命名為 hobbes
;在上面的命令輸出部分可以看到它們的名字。每個計算節點都是由 4 個 CPU 核心的樹莓派 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 企業版 Linux 跨多種架構運行康威生命遊戲」的 視頻。除了以前基於 MPI 的 Game of Life
版本之外,在我的集群中現在運行的這個版本對每個涉及的主機的單元格顏色都是不同的。下面的腳本以圖形輸出的方式來互動式啟動應用:
$ cat life.mpi
#!/bin/bash
module load gnu6 openmpi3
if [[ "$SLURM_PROCID" != "0" ]]; then
exit
fi
mpirun ./mpi_life -a -p -b
我使用下面的命令來啟動作業,它告訴 Slurm,為這個作業分配 8 個 CPU:
$ srun -n 8 --x11 life.mpi
為了演示,這個作業有一個圖形界面,它展示了當前計算的結果:
紅色單元格是由其中一個計算節點來計算的,而綠色單元格是由另外一個計算節點來計算的。我也可以讓康威生命遊戲程序為使用的每個 CPU 核心(這裡的每個計算節點有四個核心)去生成不同的顏色,這樣它的輸出如下:
感謝 OpenHPC 提供的軟體包和安裝方法,因為它們讓我可以去配置一個由兩個計算節點和一個主節點的 HPC 式的系統。我可以在資源管理器上提交作業,然後使用 OpenHPC 提供的軟體在我的樹莓派的 CPU 上去啟動 MPI 應用程序。
想學習更多的關於使用 OpenHPC 去構建樹莓派集群,請參與 Adrian Reber 在 DevConf.cz 2018 的討論,它於 1月 26-28 日在 Brno,Czech Republic 舉行,以及在 CentOS Dojo 2018 ,它於 2 月 2 日在 Brussels 舉行。
關於作者
Adrian Reber —— Adrian 是 Red Hat 的高級軟體工程師,他早在 2010 年就開始了遷移處理過程到高性能計算環境,從那個時候起遷移了許多的處理過程,並因此獲得了博士學位,然後加入了 Red Hat 公司並開始去遷移到容器。偶爾他仍然去遷移單個處理過程,並且它至今仍然對高性能計算非常感興趣。關於我的更多信息點這裡
via: https://opensource.com/article/18/1/how-build-hpc-system-raspberry-pi-and-openhpc
作者:Adrian Reber 譯者:qhwdw 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive