使用 Ansible 在樹莓派上構建一個基於 Linux 的高效能運算系統
使用低成本的硬體和開源軟體設計一個高效能運算叢集。
在我的 之前發表在 Opensource.com 上的文章中,我介紹了 OpenHPC 專案,它的目標是致力於加速高效能運算(HPC)的創新。這篇文章將更深入來介紹使用 OpenHPC 的特性來構建一個小型的 HPC 系統。將它稱為 HPC 系統 可能有點“扯虎皮拉大旗”的意思,因此,更確切的說法應該是,它是一個基於 OpenHPC 專案釋出的 叢集構建方法 的系統。
這個叢集由兩臺樹莓派 3 系統作為計算節點,以及一臺虛擬機器作為主節點,結構示意如下:
我的主節點執行的是 x86_64 架構的 CentOS 作業系統,而計算節點執行了 aarch64 的輕度修改版的 CentOS 作業系統。
下圖是真實的裝置工作照:
要把我的系統配置成像上圖這樣的 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
相關文章
- 樹莓派使用入門:在樹莓派上使用 Mathematica 進行高階數學運算樹莓派
- 在樹莓派上執行 DOS 系統樹莓派
- 關於在windows,ubuntu,樹莓派上安裝使用opencvWindowsUbuntu樹莓派OpenCV
- 在樹莓派上安裝 Ubuntu MATE樹莓派Ubuntu
- 超強教程!在樹莓派上構建多節點K8S叢集!樹莓派K8S
- 在樹莓派上部署yolo模型推理並使用onnx加速樹莓派YOLO模型
- 使用樹莓派構建一個嬰兒監視器樹莓派
- 在樹莓派上搭建智慧家居閘道器樹莓派
- OpenYurt 入門 - 在樹莓派上玩轉 OpenYurt樹莓派
- 在樹莓派上開發SpringBoot 之使用VSCode遠端開發樹莓派Spring BootVSCode
- 在樹莓派上安裝c++版本的opencv並執行樹莓派C++OpenCV
- 在樹莓派上設定家庭網路的家長控制功能樹莓派
- 樹莓派基金會近日釋出了新版基於 Debian 的樹莓派作業系統樹莓派作業系統
- [譯] 如何輕鬆地在樹莓派上使用深度學習檢測物件樹莓派深度學習物件
- jenkins+ansible+supervisor打造一個web構建釋出系統JenkinsWeb
- 如何使用NodeJS構建基於RPC的API系統NodeJSRPCAPI
- 「譯」如何使用 NodeJS 構建基於 RPC 的 API 系統NodeJSRPCAPI
- 樹莓派使用入門:如何啟動一個新的樹莓派樹莓派
- 樹莓派使用入門:如何購買一個樹莓派樹莓派
- 樹莓派Linux——檔案系統認知樹莓派Linux
- 樹莓派使用入門:用樹莓派學 Linux樹莓派Linux
- 樹莓派使用buildroot生成系統映象樹莓派UI
- 樹莓派上安裝USB網路攝像頭樹莓派
- 拿去面試!一個基於 DDD 的高效能短鏈系統面試
- 使用Java和Redis構建高效能的快取系統JavaRedis快取
- 樹的另一個構建方式
- 關於樹莓派64位作業系統樹莓派作業系統
- 從原始碼構建一個極簡的Linux作業系統原始碼Linux作業系統
- 樹莓派上利用Tensorflow實現小車的自動駕駛樹莓派自動駕駛
- 如何把你的樹莓派變成一個 HiFi 音樂系統樹莓派
- 基於Hyperf + Vue + Element 構建的後臺管理系統(內建聊天系統)Vue
- 使用Abp vnext構建基於Duende.IdentityServer的統一授權中心(一)IDEServer
- 綜合能力訓練:在樹莓派上動手寫一個小OS(2):實驗16-1:輸出welcome benos樹莓派
- 綜合能力訓練:在樹莓派上動手寫一個小OS(6):實驗16-5:程式建立實驗樹莓派
- 樹莓派重新刷系統樹莓派
- 構建一個基於容器的開發環境開發環境
- 基於使用者的協同過濾來構建推薦系統
- 基於 Docker 構建統一的開發環境Docker開發環境