Je to 20 výpočtových uzlov, každý štvorjadrový (Intel Core 2 Quad, 2.6 GHz), každý má po 4GB pamäti. Sú na gigabitovej sieti a komunikujú cez MPI (Message Passing Interface), konkrétne je tam implementácia Open MPI, verzia 1.6.5.
Okrem 20 výpočtárov, máme riadiaci uzol, na ktorom sa spúšťajú (dávkovo, batch) úlohy. O frontu úloh sa stará plánovač SLURM (Simple Linux Utility for Resource Management). Na výpočtové uzly sa netreba prihlasovať, SLURM všetko zariadi.
Minigrid je vhodný na výučbu paralelizácie pomocou MPI a aj na reálne výpočty, ak nemáme prehnané nároky. Ukážeme základy práce.
Musíte sa prihlásiť na náš laboratórny server ulabserv (funguje prihlasovanie cez fakultné LDAP), napr. z Linuxov cez
ssh -P 7022 kaukic@ulabserv.fri.uniza.sk
(dá sa zariadiť prihlasovanie bez hesla cez dvojicu šifrovaných kľučov, záujemcom vysvetlím). Odtiaľ sa môžete hlásiť na riadiaci uzol (má meno master
) takto:
ssh kaukic@master alebo cez IP ssh kaukic@192.168.150.30
Keď uvidíte kaukic@master:~$
je to už dobre, môžete začať prikazovať.
(sinfo)
¶kaukic@master:~$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
unixlab* up infinite 15 down* unixlab[5-16,18-20]
unixlab* up infinite 4 idle unixlab[1-4,17]
To znamená, že unixlab1 - unixlab4, unixlab17
sú voľné, ostatné počítače sú vypnuté.
(sbatch)
¶Predpokladajme, že máme skompilovaný vykonávateľný program na MPI paralelizáciu, nazvime ho heuri_mpi4py
(môže to byť výstup z kompilácie C/C++ ale aj skript, napr. Pythonovský ako v našom prípade). Vytvoríme dávkový súbor, batch1.sh
v ľubovoľnom editore (vim, joe, nano
,...)
#!/bin/bash
#
#SBATCH -o results.txt
#
#SBATCH -n 16
#SBATCH -t 120:00
#SBATCH --mem-per-cpu=400
mpiexec python3 heuri_mpi4py.py
Vidno, že chceme výsledky (resp. to, čo by sa vypisovalo na obrazovku) zapísať do súboru results.txt
,
že chceme 16 jadier, čas výpočtu maximálne 2 hodiny a na každom jadre po 400MB pamäti.
Tento výpočet spustíme cez
sbatch batch1.sh
(squeue)
¶squeue -u kaukic
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
78 unixlab batch1.sh kaukic R 0:11 4 unixlab[1-4]
Tu vidíme, že číslo nášho džobu je 78, vidíme aj uplynutý čas (11 sekúnd teraz) a aj že sa to vykonáva na strojoch unixlab[1-4]
. Ak by sa to malo počítať napr. celý víkend, nemusíme sa o výpočet starať, len sa čas od času pozrieme, v akom je stave. Dá sa do dávkového súboru dať aj príkaz, aby nám poslal mail, keď skončí (nemáme zatiaľ odskúšané).
(scancel)
¶scancel 78
To číslo (JOBID) vieme z príkazu squeue
.
To je asi pre začiatok všetko, ak viete vytvárať MPI programy, môžete začať.