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

High Performance Computing Cluster in einer Cloud-Umgebung

High Performance Computing (HPC) ermöglicht es Wissenschaftlern und Forschern, komplexe Probleme zu lösen, die viele Rechenkapazitäten erfordern. HPC verwendet normalerweise ein Message Passing Interface (MPI), um zwischen verschiedenen Knoten zu kommunizieren.

HPC in der Cloud

Derzeit laufen die meisten Projekte, die HPC erfordern, noch auf älteren UNIX®-Systemen. Die Migration dieser Projekte zu einer Cloud-basierten Installation ist sehr einfach und erfordert nicht viel zusätzliche Einrichtung. Dieses Tutorial erstellt einen HPC-Cluster mit Open MPI in der Rackspace Cloud und führt eine Open MPI-Anwendung auf dem Cluster aus. Am Ende dieses Tutorials sollten Sie wissen, wie Sie die Cloud nutzen können, um schnell einen HPC-Cluster für die Datenverarbeitung in Echtzeit aufzubauen und zu skalieren und gleichzeitig die Abhängigkeit von der physischen Infrastruktur zu beseitigen.

MPI öffnen

Um Hochleistungs-Clustering in der Cloud zu erreichen, können Sie OpenMPI verwenden, ein Message Passing Interface (MPI)-Projekt. Es bietet Parallelverarbeitung, Thread-Sicherheit und Parallelität, dynamisches Prozess-Spawning sowie Netzwerk- und Fehlertoleranz. Die schnellsten Supercomputer der Welt verwenden diese Bibliothek, und die Bibliothek versorgt viele Petaflops mit Strom. Um mehr über die Open MPI-Bibliothek zu erfahren, besuchen Sie ihre Website.

Ziel

Dieses Tutorial zeigt Ihnen, wie Sie mit den folgenden Tools einen HPC-Cluster erstellen:

  • Vier Rackspace Cloud-Server
  • MPI öffnen

Das Tutorial richtet einen Cluster mit vier Knoten ein, führt eine Anwendung darauf aus und misst die Leistung, wie in der folgenden Abbildung gezeigt:

Abbildung 1 – HPC auf der Cloud-High-Level-Architektur

Voraussetzungen

Sie benötigen die folgenden drei Elemente, um dieses Tutorial erfolgreich abzuschließen:

  • Ein Rackspace Cloud-Konto.
  • Ein Secure Shell (SSH)-Client. Windows®-Benutzer können PuTTY verwenden.
  • Grundkenntnisse von Linux® und Open MPI.

Anleitung

Das Tutorial behandelt die folgenden Aufgaben:

  1. Erstellen Sie einen Cloud-Server.
  2. Installieren Sie Open MPI.
  3. Clustering aktivieren.
  4. HPC konfigurieren.
  5. Erstellen und implementieren Sie ein Cloud Server-Image.
  6. Installieren Sie eine Open MPI-fähige Beispielanwendung und führen Sie sie aus.

Erstellen Sie einen Cloud-Server

Melden Sie sich beim Cloud Control Panel an und erstellen Sie einen Cloud-Server über die Weboberfläche mit den folgenden Attributen:

  • Servername:IhrName-HPC-Knoten-01
  • Region:Dallas (DFW)
  • Image (Rackspace):Ubuntu 12.04 LTS (Precise Pangolin)
  • Größe:2 GB RAM oder höher

Klicken Sie auf Server erstellen und der Cloud Server-Build-Prozess beginnt. Während des Aufbaus zeigt ein Popup-Fenster Ihr Cloud-Server-Passwort an. Notieren Sie sich das Passwort für zukünftige Referenz. Schließen Sie das Popup-Fenster und warten Sie, bis die Servererstellung abgeschlossen ist. Nachdem die IP-Adresse des neuen Servers verfügbar ist, notieren Sie sie.

Installieren Sie Open MPI

Nachdem der Server den Aufbau abgeschlossen hat und Verfügbar ist Status, SSH in den Server und melden Sie sich mit der IP-Adresse und dem Passwort an, die Sie zuvor notiert haben.

ssh root@<Your Server IP>

Führen Sie nach der Anmeldung die folgenden Befehle aus, um Open MPI zu installieren:

apt-get update
apt-get install build-essential -y
apt-get install openmpi-bin openmpi-checkpoint openmpi-common openmpi-doc libopenmpi-dev -y

Clustering aktivieren

Open MPI erleichtert die Kommunikation zwischen Knoten durch die Verwendung von SSH, daher müssen Sie schlüsselbasierte Anmeldungen für SSH aktivieren.

Führen Sie dazu die folgenden Befehle aus:

chmod 700 ~/.ssh
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Open MPI"

Die Ausgabe dieser Befehle sollte dem folgenden Beispiel ähneln:

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:85:97:3c:98:89:8d:bc:58:96:97:41:ad:0b:a6:c8 Enter an optional comment about your key
The key's randomart image is:
+--[ RSA 2048]----+
|       . *oX..   |
|        B O.*    |
|       + ooo .   |
|      . +...     |
|   . . oS. .     |
|    E .   .      |
|                 |
|                 |
|                 |
+-----------------+

Hinweis: Während dieses Vorgangs werden Sie zur Eingabe einer Passphrase aufgefordert. Lassen Sie es leer.

Führen Sie die folgenden Befehle aus, um den Schlüssel in den autorisierten Schlüsselordner zu kopieren und die Berechtigungen zu ändern, um SSH-Anmeldungen zuzulassen:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

HPC konfigurieren

Konfigurieren Sie nun den primären HPC-Knoten, indem Sie eine Hostdatei erstellen. Stellen Sie dazu sicher, dass Sie über SSH beim ersten Knoten angemeldet sind, und erstellen Sie die folgende Datei, in der <Your Server IP> ist die IP-Adresse, die Sie für die SSH-Verbindung mit dem Computer verwendet haben:

cd ~/
echo <Your Server IP> >> mpi_hosts

Führen Sie den folgenden Befehl aus, um die Datei zu überprüfen:

cat mpi_hosts

Sie sollten das folgende Ergebnis sehen:

<Your Server IP>

Um Ihre Konfiguration zu überprüfen, verwenden Sie hello_c.c aus den in Open MPI enthaltenen Beispielen.

Befolgen Sie dazu die folgenden Befehle:

mkdir /root/samples
cd /root/samples
wget https://svn.open-mpi.org/svn/ompi/tags/v1.6-series/v1.6.4/examples/hello_c.c
mpicc hello_c.c -o hello
mpirun ./hello

Dies sollte das folgende Ergebnis ausgeben:

Hello, world, I am 0 of 1

Jetzt, da es funktioniert, führen Sie die folgenden Befehle aus, um die Konnektivität zu testen:

wget https://svn.open-mpi.org/svn/ompi/tags/v1.6-series/v1.6.4/examples/connectivity_c.c
mpicc connectivity_c.c -o connectivity
mpirun ./connectivity

Sie sollten die folgende Ausgabe sehen:

Connectivity test on 1 processes PASSED.

Dies bestätigt, dass der erste Knoten online und betriebsbereit ist.

Erstellen Sie ein Cloud-Server-Image und stellen Sie es bereit

Mit dem ersten erstellten Knoten können Sie einen Cluster einrichten. Erstellen Sie zunächst Kopien des soeben erstellten Knotens. Befolgen Sie diese Schritte, um ein Bild zu erstellen:

  1. Melden Sie sich beim Cloud Control Panel an.
  2. Klicken Sie in der oberen Navigationsleiste auf Produkt auswählen> Rackspace Cloud .
  3. Wählen Sie Server> Cloud-Server aus .
  4. Wählen Sie in der Serverliste den Server aus, den Sie für den ersten Knoten erstellt haben.
  5. Klicken Sie auf die Aktionen Dropdown-Menü.
  6. Klicken Sie auf Bild erstellen .
  7. Geben Sie bei Aufforderung einen aussagekräftigen Namen ein.
  8. Klicken Sie abschließend auf Bild erstellen und warten Sie einige Minuten, bis das Image erstellt wurde.

Nachdem das Image erstellt wurde, stellen Sie einen neuen Cloud-Server bereit, indem Sie das vorherige Verfahren mit der folgenden Ausnahme verwenden:Wenn Sie zur Eingabe des Images aufgefordert werden, klicken Sie auf Gespeichert und wählen Sie Ihr Bild aus. Geben Sie erneut einen aussagekräftigen Servernamen an und notieren Sie sich das Passwort und die IP-Adresse des neuen Servers.

Um den neuen Knoten zum Cluster hinzuzufügen, führen Sie die folgenden Befehle aus (vorausgesetzt, dass die IP Ihres neuen Servers 10.20.30.40 ist und die IP/der Hostname Ihres ersten Servers ist <Your Server IP> ):

SSH to your first server
cd ~/
cat >> mpi_hosts <<EOF
10.20.30.40
EOF

Nun sollte Ihre Hostdatei dem folgenden Beispiel ähneln:

<Your Server IP>
10.20.30.40

Um die Konnektivität zwischen den Knoten zu testen, führen Sie den folgenden Befehl aus:

mpirun -v -np 2 --hostfile ~/mpi_hosts /root/samples/connectivity

Wenn Sie keine Fehler erhalten, haben Sie gerade erfolgreich Ihren eigenen Cloud-Cluster erstellt und getestet. Um die Größe des Clusters zu erhöhen, fügen Sie nach demselben Verfahren zwei weitere Knoten hinzu.

Führen Sie den folgenden Befehl aus, um die Konnektivität innerhalb des Vier-Knoten-Clusters zu testen:

mpirun -v -np 4 --hostfile ~/mpi_hosts /root/samples/connectivity

Installieren Sie eine Open MPI-fähige Beispielanwendung und führen Sie sie aus

Nachdem Sie nun über einen Open MPI-Cluster verfügen, überprüfen Sie dessen Leistung. Verwenden Sie eine Simpleray-Tracing-Anwendung, die auf einem einzelnen Knoten oder auf einem Open MPI-Cluster ausgeführt werden kann, um die Leistung zu vergleichen.

Installieren Sie zunächst die Anwendung auf allen Knoten des Clusters. Stellen Sie dazu eine SSH-Verbindung zum primären Knoten her und führen Sie den folgenden Befehl aus:

for i in `cat mpi_hosts`; do ssh root@$i "curl -l https://openstack.prov12n.com/files/tachyon.sh | bash"; done
cd ~/tachyon/compile/linux-mpi

Das Tachyon Parallel-/Multiprozessor-Raytracing-System enthält mehrere Beispieldatendateien in den Szenen Ordner, den Sie zum Ausführen Ihrer Tests verwenden können. Führen Sie zuerst den Test auf einem Knoten aus, indem Sie den folgenden Befehl verwenden:

cd ~/tachyon/compile/linux-mpi
./tachyon ../../scenes/teapot.dat

Sie sollten die folgende Ausgabe sehen:

Tachyon Parallel/Multiprocessor Ray Tracer   Version 0.99
Copyright 1994-2011,    John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time:     0.0221 seconds
Scene contains 2330 objects.
Preprocessing Time:     0.0052 seconds
Rendering Progress:       100% complete
  Ray Tracing Time:     2.1399 seconds
    Image I/O Time:     0.0174 seconds

Führen Sie den folgenden Befehl aus und beachten Sie die Raytracing-Zeit, damit Sie sie mit Ihrem Parallellauf vergleichen können:

mpirun -np 4 --hostfile ~/mpi_hosts ./tachyon ../../scenes/teapot.dat -format BMP

Sie sollten die folgende Ausgabe sehen:

Tachyon Parallel/Multiprocessor Ray Tracer   Version 0.99
Copyright 1994-2011,    John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time:     0.0230 seconds
Scene contains 2330 objects.
Preprocessing Time:     0.0052 seconds
Rendering Progress:       100% complete
  Ray Tracing Time:     0.6048 seconds
    Image I/O Time:     0.0182 seconds

Ihr Cluster besteht aus vier Knoten und jeweils einer CPU. Daher ist die Leistungssteigerung fast viermal größer. Sie sollten deutliche Verbesserungen sehen, selbst wenn Sie nicht über mehrere Knoten verfügen und Ihre Anwendung stattdessen auf nur einem Knoten mit OpenMPI unter Verwendung beider CPUs ausführen.

Es ist wichtig, dass Sie Ihren Server mit mindestens 2 GB RAM erstellt haben, da Größen von 2 GB und höher Zugriff auf mindestens 2 CPUs haben. Weitere Informationen zu Größen finden Sie unter Cloud-Server.

Führen Sie den folgenden Befehl aus, um diesen Code auf mehreren CPUs eines einzelnen Servers auszuführen:

mpirun -np 2 ./tachyon ../../scenes/teapot.dat -format BMP

Sie sollten die folgende Ausgabe sehen:

Tachyon Parallel/Multiprocessor Ray Tracer   Version 0.99
Copyright 1994-2011,    John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time:     0.0222 seconds
Scene contains 2330 objects.
Preprocessing Time:     0.0050 seconds
Rendering Progress:       100% complete
  Ray Tracing Time:     1.0888 seconds
    Image I/O Time:     0.0181 seconds

Beachten Sie, dass sich die Leistung selbst bei Ausführung auf einem einzelnen Knoten unter Verwendung von Open MPI fast verdoppelt hat. Um mehr über diese Raytracing-Anwendung zu erfahren, besuchen Sie https://jedi.ks.uiuc.edu/~johns/raytracer/.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie Cloud-Server erstellen und ein Image erstellen. Außerdem haben Sie gelernt, wie Sie mit Open MPI einen HPC-Cluster einrichten. Nach dem Einrichten und Konfigurieren des Clusters haben Sie eine kleine Raytracing-Anwendung installiert, um die Vorteile der Verwendung mehrerer Knoten anstelle eines Knotens zu demonstrieren.


Linux
  1. HPL (High Performance Linpack):Benchmarking von Raspberry PIs

  2. Nachteil bei der Verwendung eines Chroot im High Performance Computing?

  3. Cloud9 – Eine Cloud-basierte Entwicklungsumgebung für Webprojekte

  4. 10 Nuggets aus den Cloud-Computing-Statistiken 2015

  5. Wie erstelle ich einen hochauflösenden Timer in Linux, um die Programmleistung zu messen?

So richten Sie Kubernetes-Cluster auf der Google Cloud Platform (GCP) ein

So stellen Sie einen fehlertoleranten Cluster mit kontinuierlicher oder hoher Verfügbarkeit bereit

So richten Sie einen Pacemaker-Cluster für Linux mit hoher Verfügbarkeit ein

So stellen Sie WordPress in Jelastic Cloud bereit

So installieren und konfigurieren Sie NGINX und PHP auf Jelastic Cloud

So stellen Sie Docker-Container in Jelastic Cloud bereit