Ve svém předchozím článku pro Opensource.com jsem představil projekt OpenHPC , jehož cílem je urychlit inovace v oblasti vysoce výkonných počítačů (HPC). Tento článek jde ještě o krok dále tím, že využívá možnosti OpenHPC k vytvoření malého systému HPC. Nazvat to systém HPC může znít větší, než je, takže je možná lepší říci, že se jedná o systém založený na Cluster Building Recipes publikovaném projektem OpenHPC.
Výsledný cluster se skládá ze dvou systémů Raspberry Pi 3 fungujících jako výpočetní uzly a jednoho virtuálního stroje fungujícího jako hlavní uzel:
Můj hlavní uzel používá CentOS na x86_64 a moje výpočetní uzly používají mírně upravený CentOS na aarch64.
Takto vypadá nastavení v reálném životě:
Abych svůj systém nastavil jako systém HPC, postupoval jsem podle některých kroků z instalační příručky OpenHPC Cluster Building Recipes pro CentOS 7.4/aarch64 + Warewulf + Slurm (PDF). Tento recept obsahuje pokyny pro poskytování pomocí Warewulf; protože jsem ručně nainstaloval své tři systémy, přeskočil jsem části Warewulfa a vytvořil jsem si příručku Ansible pro kroky, které jsem provedl.
Linuxové kontejnery
- Co jsou kontejnery systému Linux?
- Úvod do terminologie kontejnerů
- Stáhnout:Containers Primer
- Operátoři Kubernetes:Automatizace platformy pro orchestraci kontejnerů
- eKniha:Vzory Kubernetes pro navrhování cloudových nativních aplikací
- Co je Kubernetes?
Jakmile byl můj cluster nastaven pomocí příruček Ansible, mohl jsem začít odesílat úlohy svému správci zdrojů. Správce prostředků, v mém případě Slurm, je instancí v clusteru, která rozhoduje o tom, kde a kdy se mé úlohy provedou. Jednou z možností spuštění jednoduché úlohy na clusteru je:
[ohpc@centos01 ~]$ srun hostname
calvin
Pokud potřebuji více prostředků, mohu říct Slurmovi, že chci spustit svůj příkaz na osmi CPU:
[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin
V prvním příkladu Slurm spustil zadaný příkaz (hostname
) na jednom CPU a ve druhém příkladu Slurm spustil příkaz na osmi CPU. Jeden z mých výpočetních uzlů se jmenuje calvin
a druhý se jmenuje hobbes
; které lze vidět ve výstupu výše uvedených příkazů. Každý z výpočetních uzlů je Raspberry Pi 3 se čtyřmi CPU jádry.
Dalším způsobem, jak odeslat úlohy do mého clusteru, je příkaz sbatch
, který lze použít ke spouštění skriptů s výstupem zapsaným do souboru namísto mého terminálu.
[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101
Tím se vytvoří výstupní soubor s názvem slurm-101.out
s následujícím obsahem:
Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017
K demonstraci základní funkčnosti správce zdrojů jsou vhodné jednoduché a sériové nástroje příkazového řádku – ale trochu nudné poté, co uděláte veškerou práci na nastavení systému podobného HPC.
Zajímavější aplikací je spuštění paralelní úlohy Open MPI na všech dostupných CPU v clusteru. Používám aplikaci založenou na hře Game of Life, která byla použita ve videu nazvaném „Running Game of Life napříč více architekturami s Red Hat Enterprise Linux“. Kromě dříve používané implementace Game of Life založené na MPI verze, která nyní běží na mém clusteru, barví buňky pro každého zúčastněného hostitele odlišně. Následující skript spouští aplikaci interaktivně s grafickým výstupem:
$ cat life.mpi
#!/bin/bash
module load gnu6 openmpi3
if [[ "$SLURM_PROCID" != "0" ]]; then
exit
fi
mpirun ./mpi_life -a -p -b
Spustím úlohu následujícím příkazem, který říká Slurm, aby pro úlohu přidělil osm CPU:
$ srun -n 8 --x11 life.mpi
Pro demonstrační účely má úloha grafické rozhraní, které zobrazuje aktuální výsledek výpočtu:
Poloha červených buněk se vypočítá na jednom z výpočetních uzlů a zelených buněk se vypočítá na druhém výpočetním uzlu. Mohu také říci programu Game of Life, aby obarvil buňku pro každý použitý CPU (jsou čtyři na výpočetní uzel) jinak, což vede k následujícímu výstupu:
Díky instalačním receptům a softwarovým balíčkům poskytovaným OpenHPC jsem mohl nastavit dva výpočetní uzly a hlavní uzel v konfiguraci typu HPC. Mohu odesílat úlohy svému správci zdrojů a mohu používat software poskytovaný OpenHPC ke spouštění aplikací MPI využívajících všechny CPU mého Raspberry Pis.
Chcete-li se dozvědět více o použití OpenHPC k sestavení clusteru Raspberry Pi, navštivte přednášky Adriana Rebera na DevConf.cz 2018, 26.–28. ledna, v Brně, Česká republika, a na CentOS Dojo 2018, 2. února v Brusel.