Minigrid na KMMOA, Laboratórium vývoja unixových aplikácií.

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.

Prihlásenie sa na riadiaci uzol (master).

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ť.

Zistenie, ako sme na tom, ktoré počítače sú v akom stave (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é.

Spustenie dávky na paralelné spracovanie (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

Sledovanie priebehu výpočtu (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é).

Zrušenie výpočtu (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ť.