High Performance Computing (HPC) consente a scienziati e ricercatori di risolvere problemi complessi che richiedono molte capacità di elaborazione. HPC utilizza tipicamente un'interfaccia di passaggio messaggi (MPI) per comunicare tra nodi diversi.
HPC nel cloud
Attualmente, la maggior parte dei progetti che richiedono HPC sono ancora in esecuzione su sistemi UNIX® legacy. La migrazione di questi progetti a un'installazione basata su cloud è molto semplice e non richiede molta configurazione aggiuntiva. Questo tutorial crea un cluster HPC con Open MPI su Rackspace Cloud ed esegue un'applicazione Open MPI sopra il cluster. Alla fine di questo tutorial, dovresti sapere come sfruttare il cloud per creare e scalare rapidamente un cluster HPC per l'elaborazione dei dati in tempo reale rimuovendo la dipendenza dall'infrastruttura fisica.
Apri MPI
Per ottenere un clustering ad alte prestazioni nel cloud, puoi utilizzare OpenMPI, che è un progetto Message Passing Interface (MPI). Fornisce elaborazione parallela, thread safety e concorrenza, spawn di processi dinamici e tolleranza di rete e di errore. I supercomputer più veloci del mondo usano questa libreria e la libreria alimenta molti petaflop. Per saperne di più sulla libreria Open MPI, visita il loro sito.
Obiettivo
Questo tutorial mostra come creare un cluster HPC utilizzando i seguenti strumenti:
- Quattro server cloud rackspace
- Apri MPI
Il tutorial configura un cluster a quattro nodi, esegue un'applicazione su di esso e ne misura le prestazioni, come mostrato nell'immagine seguente:
Figura 1 - Architettura di alto livello HPC sul cloud
Prerequisiti
Sono necessari i seguenti tre elementi per completare con successo questo tutorial:
- Un account Rackspace Cloud.
- Un client Secure Shell (SSH). Gli utenti Windows® possono utilizzare PuTTY.
- Una conoscenza di base di Linux® e Open MPI.
Tutorial
Il tutorial copre le seguenti attività:
- Crea un Cloud Server.
- Installa Open MPI.
- Abilita il clustering.
- Configura HPC.
- Crea e distribuisci un'immagine di Cloud Server.
- Installa ed esegui un'applicazione di esempio abilitata per Open MPI.
Crea un Cloud Server
Accedi al Cloud Control Panel e crea da interfaccia web un Cloud Server con i seguenti attributi:
- Nome server:tuonome-HPC-node-01
- Regione:Dallas (DFW)
- Image (Rackspace):Ubuntu 12.04 LTS (Precise Pangolin)
- Dimensioni:2 GB di RAM o superiore
Fai clic su Crea server e inizia il processo di creazione del Cloud Server. Durante la creazione, una finestra popup mostra la tua password del Cloud Server. Registra la password per riferimento futuro. Chiudi la finestra popup e attendi il completamento della build del server. Dopo che l'indirizzo IP del nuovo server diventa disponibile, registralo.
Installa Open MPI
Dopo che il server ha terminato la creazione ed è in Disponibile status, SSH nel server e accedi utilizzando l'indirizzo IP e la password che hai registrato in precedenza.
ssh root@<Your Server IP>
Dopo aver effettuato l'accesso, eseguire i seguenti comandi per installare Open MPI:
apt-get update
apt-get install build-essential -y
apt-get install openmpi-bin openmpi-checkpoint openmpi-common openmpi-doc libopenmpi-dev -y
Abilita il clustering
Open MPI facilita la comunicazione tra i nodi utilizzando SSH, quindi è necessario abilitare gli accessi basati su chiavi per SSH.
Per fare ciò, esegui i seguenti comandi:
chmod 700 ~/.ssh
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Open MPI"
L'output di questi comandi dovrebbe essere simile al seguente esempio:
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 . . |
| |
| |
| |
+-----------------+
Nota: Durante questo processo viene richiesta una passphrase. Lascia vuoto.
Esegui i seguenti comandi per copiare la chiave nella cartella della chiave autorizzata e modificare le autorizzazioni per consentire gli accessi SSH:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Configura HPC
Ora configura il nodo HPC primario creando un file host. Per fare ciò, assicurati di aver effettuato l'accesso al primo nodo tramite SSH e crea il seguente file, dove <Your Server IP>
è l'indirizzo IP che hai utilizzato per SSH nella macchina:
cd ~/
echo <Your Server IP> >> mpi_hosts
Per verificare il file, esegui il seguente comando:
cat mpi_hosts
Dovresti vedere il seguente risultato:
<Your Server IP>
Per verificare la tua configurazione, usa hello_c.c dagli esempi inclusi con Open MPI.
Per fare ciò, segui questi comandi:
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
Questo dovrebbe produrre il seguente risultato:
Hello, world, I am 0 of 1
Ora che funziona, esegui i seguenti comandi per testare la connettività:
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
Dovresti vedere il seguente output:
Connectivity test on 1 processes PASSED.
Ciò conferma che il primo nodo è online e operativo.
Crea e distribuisci un'immagine di Cloud Server
Con il primo nodo creato, sei pronto per configurare un cluster. Per iniziare, crea delle copie del nodo che hai appena creato. Segui questi passaggi per creare un'immagine:
- Accedi al pannello di controllo del cloud.
- Nella barra di navigazione in alto, fai clic su Seleziona un prodotto> Rackspace Cloud .
- Seleziona Server> Server cloud .
- Nell'elenco dei server, seleziona il server che hai creato per il primo nodo.
- Fai clic su Azioni menu a tendina.
- Fai clic su Crea immagine .
- Quando richiesto, fornisci un nome significativo.
- Infine, fai clic su Crea immagine e attendi qualche minuto per la creazione dell'immagine.
Dopo aver creato l'immagine, distribuire un nuovo Cloud Server utilizzando la procedura precedente con la seguente eccezione:quando viene richiesta l'immagine, fare clic su Salvato scheda e seleziona la tua immagine. Di nuovo, fornisci un nome server significativo e registra la password e l'indirizzo IP del nuovo server.
Per aggiungere il nuovo nodo al cluster, esegui i seguenti comandi (supponendo che l'IP del tuo nuovo server sia 10.20.30.40
e l'IP/nome host del tuo primo server è <Your Server IP>
):
SSH to your first server
cd ~/
cat >> mpi_hosts <<EOF
10.20.30.40
EOF
Ora, il tuo file host dovrebbe assomigliare al seguente esempio:
<Your Server IP>
10.20.30.40
Per testare la connettività tra i nodi, eseguire il comando seguente:
mpirun -v -np 2 --hostfile ~/mpi_hosts /root/samples/connectivity
Se non ricevi alcun errore, hai appena creato e testato con successo il tuo cluster cloud. Per aumentare le dimensioni del cluster, aggiungi altri due nodi utilizzando la stessa procedura.
Per testare la connettività all'interno del cluster a quattro nodi, esegui il seguente comando:
mpirun -v -np 4 --hostfile ~/mpi_hosts /root/samples/connectivity
Installa ed esegui un'applicazione di esempio abilitata per Open MPI
Ora che hai un cluster Open MPI, controlla come si comporta. Utilizza un'applicazione simpleray tracing che può essere eseguita su un singolo nodo o su un cluster Open MPI per confrontare le prestazioni.
Innanzitutto, installa l'applicazione su tutti i nodi del cluster. Per fare ciò, SSH nel nodo primario ed eseguire il seguente comando:
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
Il sistema di ray-tracing multiprocessore/parallelo tachionico viene fornito con più file di dati di esempio nelle scene cartella, che è possibile utilizzare per eseguire i test. Innanzitutto, esegui il test su un nodo utilizzando il comando seguente:
cd ~/tachyon/compile/linux-mpi
./tachyon ../../scenes/teapot.dat
Dovresti vedere il seguente output:
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
Esegui il comando seguente e osserva il tempo di ray tracing in modo da poterlo confrontare con la tua corsa parallela:
mpirun -np 4 --hostfile ~/mpi_hosts ./tachyon ../../scenes/teapot.dat -format BMP
Dovresti vedere il seguente output:
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
Il tuo cluster è composto da quattro nodi e una CPU per ciascuno. Pertanto, il miglioramento delle prestazioni è quasi quattro volte maggiore. Dovresti vedere miglioramenti significativi anche se non hai più nodi e invece esegui la tua applicazione su un solo nodo con OpenMPI usando entrambe le CPU.
È importante che tu abbia creato il tuo server con almeno 2 GB di RAM perché le dimensioni di 2 GB e superiori hanno accesso ad almeno 2 CPU. Per maggiori informazioni sulle dimensioni, consulta Cloud Server.
Esegui il comando seguente per eseguire questo codice su più CPU di un singolo server:
mpirun -np 2 ./tachyon ../../scenes/teapot.dat -format BMP
Dovresti vedere il seguente output:
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
Si noti che anche quando si esegue su un singolo nodo ma si utilizza Open MPI, le prestazioni sono quasi raddoppiate. Per saperne di più su questa applicazione di ray tracing, visitare https://jedi.ks.uiuc.edu/~johns/raytracer/.
Riepilogo
In questo tutorial, hai imparato a creare e creare immagini di server cloud. Hai anche imparato a configurare un cluster HPC utilizzando Open MPI. Dopo aver impostato e configurato il cluster, hai installato una piccola applicazione di ray tracing per dimostrare i vantaggi dell'utilizzo di più nodi invece di un nodo.