使用 Ansible 在樹莓派上構建一個基於 Linux 的高效能運算系統

Adrian Reber發表於2018-03-25

使用低成本的硬體和開源軟體設計一個高效能運算叢集。

在我的 之前發表在 Opensource.com 上的文章中,我介紹了 OpenHPC 專案,它的目標是致力於加速高效能運算(HPC)的創新。這篇文章將更深入來介紹使用 OpenHPC 的特性來構建一個小型的 HPC 系統。將它稱為 HPC 系統  可能有點“扯虎皮拉大旗”的意思,因此,更確切的說法應該是,它是一個基於 OpenHPC 專案釋出的 叢集構建方法 的系統。

這個叢集由兩臺樹莓派 3 系統作為計算節點,以及一臺虛擬機器作為主節點,結構示意如下:

Map of HPC cluster

我的主節點執行的是 x86_64 架構的 CentOS 作業系統,而計算節點執行了 aarch64 的輕度修改版的 CentOS 作業系統。

下圖是真實的裝置工作照:

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

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章