GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Aufbau eines Linux-basierten HPC-Systems auf dem Raspberry Pi mit Ansible

In meinem vorherigen Artikel für Opensource.com habe ich das OpenHPC-Projekt vorgestellt, das darauf abzielt, Innovationen im High-Performance-Computing (HPC) zu beschleunigen. Dieser Artikel geht noch einen Schritt weiter, indem er die Funktionen von OpenHPC nutzt, um ein kleines HPC-System zu erstellen. Um es ein HPC-System zu nennen klingt vielleicht größer, als es ist, also ist es vielleicht besser zu sagen, dass dies ein System ist, das auf den vom OpenHPC-Projekt veröffentlichten Cluster Building Recipes basiert.

Der resultierende Cluster besteht aus zwei Raspberry Pi 3-Systemen, die als Rechenknoten fungieren, und einer virtuellen Maschine, die als Master-Knoten fungiert:

Auf meinem Master-Knoten läuft CentOS auf x86_64 und auf meinen Rechenknoten läuft ein leicht modifiziertes CentOS auf aarch64.

So sieht das Setup im wirklichen Leben aus:

Um mein System wie ein HPC-System einzurichten, habe ich einige der Schritte aus der OpenHPC-Installationsanleitung für Cluster Building Recipes für CentOS 7.4/aarch64 + Warewulf + Slurm (PDF) befolgt. Dieses Rezept enthält Bereitstellungsanweisungen mit Warewulf; Da ich meine drei Systeme manuell installiert habe, habe ich die Warewulf-Teile übersprungen und ein Ansible-Playbook für die Schritte erstellt, die ich unternommen habe.

Linux-Container

  • Was sind Linux-Container?
  • Eine Einführung in die Containerterminologie
  • Download:Einführung in Container
  • Kubernetes-Operatoren:Automatisierung der Container-Orchestrierungsplattform
  • eBook:Kubernetes-Muster zum Entwerfen cloudnativer Apps
  • Was ist Kubernetes?

Sobald mein Cluster von den Ansible-Playbooks eingerichtet wurde, konnte ich damit beginnen, Jobs an meinen Ressourcenmanager zu senden. Der Ressourcenmanager, in meinem Fall Slurm, ist die Instanz im Cluster, die entscheidet, wo und wann meine Jobs ausgeführt werden. Eine Möglichkeit einen einfachen Job auf dem Cluster zu starten ist:

[ohpc@centos01 ~]$ srun hostname
calvin

Wenn ich mehr Ressourcen benötige, kann ich Slurm mitteilen, dass ich meinen Befehl auf acht CPUs ausführen möchte:

[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin

Im ersten Beispiel hat Slurm den angegebenen Befehl ausgeführt (hostname ) auf einer einzelnen CPU, und im zweiten Beispiel führte Slurm den Befehl auf acht CPUs aus. Einer meiner Rechenknoten heißt calvin und der andere heißt hobbes; das kann in der Ausgabe der obigen Befehle gesehen werden. Jeder der Rechenknoten ist ein Raspberry Pi 3 mit vier CPU-Kernen.

Eine andere Möglichkeit, Jobs an meinen Cluster zu senden, ist der Befehl sbatch , die verwendet werden kann, um Skripte auszuführen, deren Ausgabe in eine Datei statt in mein Terminal geschrieben wird.

[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101

Dadurch wird eine Ausgabedatei namens slurm-101.out erstellt mit folgendem Inhalt:

Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017

Um die Grundfunktionalität des Ressourcenmanagers zu demonstrieren, sind einfache und serielle Kommandozeilen-Tools geeignet – aber nach all der Arbeit, ein HPC-ähnliches System einzurichten, etwas langweilig.

Eine interessantere Anwendung ist die Ausführung eines parallelisierten Open MPI-Jobs auf allen verfügbaren CPUs im Cluster. Ich verwende eine auf Game of Life basierende Anwendung, die in einem Video mit dem Titel „Running Game of Life across multiple architectures with Red Hat Enterprise Linux“ verwendet wurde. Neben der bisher verwendeten MPI-basierten Game-of-Life-Implementierung färbt die Version, die jetzt auf meinem Cluster läuft, die Zellen für jeden beteiligten Host unterschiedlich ein. Das folgende Skript startet die Anwendung interaktiv mit einer grafischen Ausgabe:

$ cat life.mpi
#!/bin/bash

module load gnu6 openmpi3

if [[ "$SLURM_PROCID" != "0" ]]; then
    exit
fi

mpirun ./mpi_life -a -p -b

Ich starte den Job mit dem folgenden Befehl, der Slurm anweist, acht CPUs für den Job zuzuweisen:

$ srun -n 8 --x11 life.mpi

Zu Demonstrationszwecken verfügt der Job über eine grafische Oberfläche, die das aktuelle Ergebnis der Berechnung anzeigt:

Die Position der roten Zellen wird auf einem der Rechenknoten berechnet, und die grünen Zellen werden auf dem anderen Rechenknoten berechnet. Ich kann dem Game of Life-Programm auch mitteilen, dass es die Zelle für jede verwendete CPU (es gibt vier pro Rechenknoten) unterschiedlich einfärbt, was zu folgender Ausgabe führt:

Dank der Installationsrezepte und der von OpenHPC bereitgestellten Softwarepakete konnte ich zwei Rechenknoten und einen Masterknoten in einer HPC-ähnlichen Konfiguration einrichten. Ich kann Aufträge an meinen Ressourcenmanager senden und die von OpenHPC bereitgestellte Software verwenden, um MPI-Anwendungen zu starten, die alle CPUs meiner Raspberry Pis verwenden.


Um mehr über die Verwendung von OpenHPC zum Erstellen eines Raspberry Pi-Clusters zu erfahren, besuchen Sie bitte die Vorträge von Adrian Reber auf der DevConf.cz 2018 vom 26. bis 28. Januar in Brünn, Tschechische Republik, und beim CentOS Dojo 2018 am 2. Februar in Brüssel.


Linux
  1. So verwenden Sie Ansible zum Einrichten der Systemüberwachung mit Prometheus

  2. Kubernetes-Cluster mit Rancher einrichten

  3. Kann ich das System mit einer Live-CD aktualisieren?

  4. Aufbau der Steuer-Cloud

  5. Reparieren Sie ein Systemabbild mit DISM

Einführung in das Linux-Dateisystem

So beenden Sie Prozesse auf dem Linux-Desktop mit xkill

Ansible Guide:Das Ad-hoc-Kommando

So automatisieren Sie Systemneustarts mit dem Ansible-Neustartmodul

Sicherheitsaudit mit Lynis

Wie man mit dem Raspberry Pi eine LED zum Blinken bringt