High Performance Computing (HPC) umožňuje vědcům a výzkumníkům řešit složité problémy, které vyžadují mnoho výpočetních schopností. HPC typicky používá rozhraní pro předávání zpráv (MPI) ke komunikaci mezi různými uzly.
HPC v cloudu
V současné době většina projektů vyžadujících HPC stále běží na starších systémech UNIX®. Migrace těchto projektů do cloudové instalace je velmi jednoduchá a nevyžaduje mnoho dalšího nastavení. Tento výukový program vytváří HPC cluster s Open MPI na Rackspace Cloud a spouští Open MPIapplication na vrcholu clusteru. Na konci tohoto tutoriálu byste měli vědět, jak využít cloud k rychlému vybudování a škálování HPC clusteru pro zpracování dat v reálném čase a zároveň odstranit závislost na fyzické infrastruktuře.
Otevřít MPI
K dosažení vysokého výkonu clusteringu v cloudu můžete použít OpenMPI, což je projekt Message Passing Interface (MPI). Poskytuje paralelní zpracování, bezpečnost a souběžnost vláken, dynamické vytváření procesů a odolnost vůči síti a chybám. Tuto knihovnu používají nejrychlejší superpočítače na světě a knihovna pohání mnoho petaflopů. Chcete-li se dozvědět více o knihovně Open MPI, navštivte jejich stránky.
Cíl
Tento tutoriál vám ukáže, jak vytvořit HPC cluster pomocí následujících nástrojů:
- Čtyři cloudové servery Rackspace
- Otevřít MPI
Výukový program nastaví čtyřuzlový cluster, spustí na něm aplikaci a změří výkon, jak ukazuje následující obrázek:
Obrázek 1 – HPC v cloudové architektuře vysoké úrovně
Předpoklady
K úspěšnému dokončení tohoto kurzu potřebujete následující tři položky:
- Účet Rackspace Cloud.
- Klient Secure Shell (SSH). Uživatelé Windows® mohou používat PuTTY.
- Základní znalost Linuxu® a Open MPI.
Výukový program
Výukový program pokrývá následující úkoly:
- Vytvořte cloudový server.
- Nainstalujte Open MPI.
- Povolte shlukování.
- Nakonfigurujte HPC.
- Vytvořte a nasaďte image cloudového serveru.
- Nainstalujte a spusťte ukázkovou aplikaci Open MPI.
Vytvořte cloudový server
Přihlaste se do Cloud Control Panel a vytvořte aCloud Server z webového rozhraní s následujícími atributy:
- Název serveru:vaše jméno-HPC-uzel-01
- Oblast:Dallas (DFW)
- Obrázek (Rackspace):Ubuntu 12.04 LTS (Precise Pangolin)
- Velikost:2 GB RAM nebo vyšší
Klikněte na Vytvořit server a začíná proces vytváření cloudového serveru. Během vytváření se ve vyskakovacím okně zobrazuje vaše heslo cloudového serveru. Poznamenejte si heslo pro budoucí použití. Zavřete vyskakovací okno a počkejte na dokončení sestavení serveru. Jakmile bude IP adresa nového serveru k dispozici, zaznamenejte si ji.
Instalovat Open MPI
Poté, co server dokončí sestavování a bude v Dostupný stav, SSH na server a přihlaste se pomocí IP adresy a hesla, které jste si zaznamenali dříve.
ssh root@<Your Server IP>
Po přihlášení spusťte následující příkazy pro instalaci 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
Povolit shlukování
Open MPI usnadňuje komunikaci mezi uzly pomocí SSH, takže pro SSH musíte povolit přihlašování na základě klíče.
Chcete-li to provést, spusťte následující příkazy:
chmod 700 ~/.ssh
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Open MPI"
Výstup těchto příkazů by měl vypadat podobně jako v následujícím příkladu:
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 . . |
| |
| |
| |
+-----------------+
Poznámka: Během tohoto procesu budete vyzváni k zadání přístupové fráze. Nechte jej prázdné.
Spuštěním následujících příkazů zkopírujte klíč do složky autorizovaných klíčů a změňte oprávnění tak, aby umožňovala přihlášení SSH:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Konfigurace HPC
Nyní nakonfigurujte primární uzel HPC vytvořením souboru hostitele. Chcete-li to provést, ujistěte se, že jste přihlášeni k prvnímu uzlu přes SSH a vytvořte následující soubor, kde <Your Server IP>
je IP adresa, kterou jste použili pro SSH do počítače:
cd ~/
echo <Your Server IP> >> mpi_hosts
Chcete-li ověřit soubor, spusťte následující příkaz:
cat mpi_hosts
Měli byste vidět následující výsledek:
<Your Server IP>
Pro ověření konfigurace použijte hello_c.c z příkladů zahrnutých s Open MPI.
Chcete-li to provést, postupujte podle těchto příkazů:
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
Výsledkem by měl být následující výsledek:
Hello, world, I am 0 of 1
Nyní, když to funguje, spusťte následující příkazy a otestujte připojení:
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
Měli byste vidět následující výstup:
Connectivity test on 1 processes PASSED.
To potvrzuje, že první uzel je online a funkční.
Vytvoření a nasazení obrazu cloudového serveru
Po vytvoření prvního uzlu jste připraveni nastavit cluster. Chcete-li začít, vytvořte kopie uzlu, který jste právě vytvořili. Chcete-li vytvořit animaci, postupujte takto:
- Přihlaste se do Cloud Control Panel.
- V horní navigační liště klikněte na Vybrat produkt> Rackspace Cloud .
- Vyberte Servery> Cloudové servery .
- V seznamu serverů vyberte server, který jste vytvořili pro první uzel.
- Klikněte na Akce rozbalovací nabídka.
- Klikněte na tlačítko Vytvořit obrázek .
- Po zobrazení výzvy zadejte smysluplný název.
- Nakonec klikněte na Vytvořit obrázek a počkejte několik minut, než se obrázek vytvoří.
Po vytvoření bitové kopie nasaďte nový cloudový server pomocí předchozího postupu s následující výjimkou:po zobrazení výzvy k zadání bitové kopie klikněte na tlačítko Uloženo a vyberte svůj obrázek. Opět zadejte smysluplný název serveru a poznamenejte si heslo a IP adresu nového serveru.
Chcete-li přidat nový uzel do clusteru, spusťte následující příkazy (za předpokladu, že IP vašeho nového serveru je 10.20.30.40
a IP/název hostitele vašeho prvního serveru je <Your Server IP>
):
SSH to your first server
cd ~/
cat >> mpi_hosts <<EOF
10.20.30.40
EOF
Nyní by váš hostitelský soubor měl vypadat jako následující příklad:
<Your Server IP>
10.20.30.40
Chcete-li otestovat konektivitu mezi uzly, spusťte následující příkaz:
mpirun -v -np 2 --hostfile ~/mpi_hosts /root/samples/connectivity
Pokud se neobjeví žádné chyby, právě jste úspěšně vytvořili a otestovali svůj vlastní cloudový cluster. Chcete-li zvětšit velikost clusteru, přidejte další dva uzly pomocí stejného postupu.
Chcete-li otestovat připojení v rámci klastru se čtyřmi uzly, spusťte následující příkaz:
mpirun -v -np 4 --hostfile ~/mpi_hosts /root/samples/connectivity
Nainstalujte a spusťte ukázkovou aplikaci s podporou Open MPI
Nyní, když máte otevřený cluster MPI, zkontrolujte, jak funguje. K porovnání výkonu použijte aplikaci pro jednoduché sledování paprsků, která může běžet na jediném uzlu nebo na otevřeném clusteru MPI.
Nejprve nainstalujte aplikaci na všechny uzly clusteru. Chcete-li to provést, zadejte SSH do primárního uzlu a spusťte následující příkaz:
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
Tachyon Parallel/Multiprocessor Ray Tracing System přichází s několika ukázkovými datovými soubory ve scénách složku, kterou můžete použít ke spuštění testů. Nejprve spusťte test na jednom uzlu pomocí následujícího příkazu:
cd ~/tachyon/compile/linux-mpi
./tachyon ../../scenes/teapot.dat
Měli byste vidět následující výstup:
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
Spusťte následující příkaz a všimněte si doby sledování paprsku, abyste ji mohli porovnat s paralelním spuštěním:
mpirun -np 4 --hostfile ~/mpi_hosts ./tachyon ../../scenes/teapot.dat -format BMP
Měli byste vidět následující výstup:
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
Váš cluster se skládá ze čtyř uzlů a jednoho CPU pro každý z nich. Zlepšení výkonu je tedy téměř čtyřikrát větší. Měli byste vidět významná zlepšení, i když nemáte více uzlů a místo toho spouštíte svou aplikaci pouze na jednom uzlu s OpenMPI pomocí obou CPU.
Je důležité, abyste svůj server vytvořili s alespoň 2 GB RAM, protože velikosti 2 GB a vyšší mají přístup alespoň ke 2 CPU. Další informace o velikostech naleznete v části Cloudové servery.
Chcete-li tento kód spustit na více procesorech jednoho serveru, spusťte následující příkaz:
mpirun -np 2 ./tachyon ../../scenes/teapot.dat -format BMP
Měli byste vidět následující výstup:
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
Všimněte si, že i když běží na jediném uzlu, ale využívá Open MPI, výkon se téměř zdvojnásobil. Chcete-li si přečíst více o této aplikaci sledování paprsků, navštivte https://jedi.ks.uiuc.edu/~johns/raytracer/.
Přehled
V tomto tutoriálu jste se naučili vytvářet a zobrazovat cloudové servery. Také jste se naučili, jak nastavit HPC cluster pomocí Open MPI. Po nastavení a konfiguraci clusteru jste nainstalovali malou aplikaci pro sledování paprsků, abyste demonstrovali výhody použití více uzlů místo jednoho uzlu.