Návody


Prihlásenie

Pred prvým prihlásením na klaster musí používateľ najskôr požiadať o vytvorenie používateľského účtu a evidenciu projektu/úlohy v používateľskej zóne

Po získaní autentifikačných údajov je prihlásenie možné prostredníctvom ssh (len zo siete STU alebo sietí partnerských organizácií), kde prebehne autentifikácia pomocou prihlasovacieho mena a hesla.

ssh [username@]login.hpc.stuba.sk

V prostredí OS Windows doporučujeme použiť terminál s emuláciou X11 a FTP klientom MobaXterm

Enviroment moduly

V prostredí klastra sú k dispozícii moduly, pomocou ktorých je možné rýchle nastavenie ciest k vybraným knižniciam, programom, kompilátorom, alebo nastavenie rôznych "env" premenných.

Príkaz na zistenie aktuálne dostupných modulov:

% module avail

------------------------------------------ /etc/modulefiles -----------------------------------------
cuda/6.5   nwchem/6.1.1  openmpi/1.4.5   openmpi/1.4.5-int8   openmpi/1.6.5  intel/libs_2011
gcc/4.7.3  dirac/13.1    mvapich2/1.9    openmpi/1.6.5-int8   orca/2.9.1     intel/composer_xe_2011
...

Zobrazenie modulu a jeho načítanie:

% module show openmpi
-------------------------------------------------------------------
/apps/modulefiles/openmpi/1.6.5:

module-whatis    GCC473 Open MPI v1.6.5 library
prepend-path     PATH /apps/mpi/gnu/openmpi/1.6.5/bin/
prepend-path     LD_LIBRARY_PATH /apps/mpi/gnu/openmpi/1.6.5/lib
prepend-path     MANPATH /apps/mpi/gnu/openmpi/1.6.5/share/man
...
-------------------------------------------------------------------

% module load openmpi

Ďalšie možnosti:

module unload < modulename > -> vypnúť modul
module purge                 -> vypnúť všetky moduly
module list                  -> zobraziť načítané moduly
module whatis                -> zobraziť dostupné moduly aj s popisom 
module help  < modulename >  -> zobraziť nápovedu ak je dostupná 

Spustenie úlohy

Kompilácia aplikácií

Kompilácia paralelnej aplikácie GCC kompilátorom s využitím OpenMPI knižnice

% module load openmpi
% mpicc -O2 /apps/examples/hello-world.c -o hello-world

// alebo napr.

% module load gcc/4.7.3    // volba kompilátora iného ako default Redhat GCC 4.4.7
% gcc -march=native -O2 hello-world.c -I/apps/mpi/gnu/openmpi/1.6.5/include -L/apps/mpi/gnu/openmpi/1.6.5/lib -lmpi -o hello-world

Zadávanie úloh do výpočtovej fronty

Na spustenie úlohy je nutné najprv vytvoriť spustiteľný skript, ktorý sa zaradí do fronty príkazom

% qsub simple.pbs

Parametre pre správcu front (PBS/Torque) je možné zadávať priamo aj do príkazového riadku

% qsub -A projektX -l nodes=1:ppn=12,pmem=1024mb,walltime=04:00:00 my_job.pbs

Príklad jednoduchého skriptu sériovej úlohy

#!/bin/sh 
# názov úlohy vo fronte
#PBS -N simple_job

# skript žiada o jeden výpočtový uzol, jedno procesorové jadro a 1GB fyzickej pamäte na 4 hodiny
#PBS -l nodes=1:ppn=1,pmem=1gb,walltime=04:00:00

# Voľba projektu je povinný parameter. Zoznam evidovaných projektov je možné získať po prihlásení na www portal
#PBS -A < projekt-id >

# výber výpočtovej fronty "serial"
#PBS -q serial

# po skončení úlohy chybový výstup zapísať do súboru "job.stderr"
#PBS -e job.stderr

# štandardný výstup zapísat do súboru "job.stdout"
#PBS -o job.stdout

# žiadosť o zaslanie emailu pri spustení úlohy (-b/begin), dokončení(-e/end), zrušení (-a/abort)
# Neposielať email (-n/none). Lokálne čítanie správ je možné programom "mutt".
#PBS -m ae

# zaslanie emailu na inú, ako lokálnu adresu
#PBS -M juraj.vedec@stuba.sk

# kopírovanie vstupných dát na lokálny disk (/scratch)
cp my_* $TMPDIR
cd $TMPDIR

./my_prog $MY_ARGS

Príklad skriptu paralelnej úlohy aj s načítaním MPI knižnice

#!/bin/bash
#
#PBS -N HelloWorld
#PBS -q parallel
#PBS -e SimpleMPI.stderr
#PBS -o SimpleMPI.stdout
#PBS -A MPI-projekt

# skript žiada o 2 výpočtové uzly, 6 procesorových jadier na uzol, pre každé jadro/proces 200MB fyzickej pamäte na 2 minúty
#PBS -l nodes=2:ppn=6,pmem=200mb,walltime=00:02:00
#PBS -m ea

application="/apps/examples/hello-world"

# štandardný výstup z aplikácie sa bude priebežne zapisovať do súboru "OUT"
options="> OUT"

. /etc/profile.d/modules.sh
module purge
module load openmpi/1.6.5
# Príklad využitia premenných (PBS/Torque)
np=$PBS_NP
ppn=$PBS_NUM_PPN
numnodes=$PBS_NUM_NODES

CMD="mpirun --report-bindings $application $options"

###############################################################

# prechod do priečinka odkiaľ bola spustená úloha
cd $PBS_O_WORKDIR
echo -e "Changed directory to `pwd`.n"
JOBID=`echo $PBS_JOBID | sed -e "s/..*$//"`

echo -e "JobID: $JOBIDn======"
echo "Time: `date`"
echo "Running on master node: `hostname`"
echo "Current directory: `pwd`"

if [ -r "$PBS_NODEFILE" ]; then
        cat $PBS_NODEFILE | uniq > machfile
        echo -e "nNodes allocated:n================"
        echo `cat machfile | sed -e "s/..*$//g"`
fi

echo -e "nnumprocs=$np, numnodes=$numnodes, ppn=$ppn"

echo -e "nExecuting command:n==================n$CMDn"

eval $CMD

Spustenie interaktívnej úlohy

% qsub -I -N Interactive_job -A <project_name> -q gpu -l nodes=1:ppn=2,walltime=10:00
qsub: waiting for job 2894.one.grid.stuba.sk to start
qsub: job 2894.one.grid.stuba.sk ready

gpu1:~ > lstopo
Machine (24GB)
  NUMANode L#0 (P#0 24GB) + Socket L#0 + L3 L#0 (12MB)
    L2 L#0 (256KB) + L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
    L2 L#1 (256KB) + L1 L#1 (32KB) + Core L#1 + PU L#1 (P#1)
  NUMANode L#1 (P#1)...

gpu1:~ > exit
logout
qsub: job 2894.one.grid.stuba.sk completed
%

Spustenie interaktívnej úlohy a aktivovanie X11 forwarding

% qsub -I -X -N Interactive_X11_job -A <project_name> -q gpu -l nodes=1:ppn=2,walltime=10:00
gpu1:~ xterm
gpu1:~ > exit

Kontrola spustených úloh

K dispozícii je niekoľko príkazov na overenie statusu úlohy vo fronte: qstat, showq a checkjob

Zobrazenie zoznamu úloh vo frontách a základných informácii o ich stave.

% qstat -a, showq

qstat ponúka aj podrobné informácie o všetkých, alebo jednej konkrétnej úlohe. checkjob aplikovateľný iba na vlastné úlohy používateľa je užitočný pri hladaní rôznych príčin nespustenia a zablokovania úlohy vo fronte. 

% qstat -f [jobid]
% checkjob < jobid >

Výpis úloh, ktoré sú z nejakého dôvodu blokované.
V príklade je zoznam blokovaných úloh, ktoré prekračujú celkový limit alokovaných jadier a maximálny strojový čas pridelený na jedného uživateľa. (R:  requested, U: used )

% showq -b
JobName      User               Reason

2798  userX1 violates active HARD MAXPROC limit of 120 for user userX1  (R: 48, U: 96)
2869  userY2 violates active HARD MAXPS limit of 50000000 for user userY2 (R: 20000000, U: 48168217)

Ak používateľ zváži, že úloha nevyužije pôvodne vyžadované zdroje. Príkazom qalter [-l resource_list] je možné nároky na rezervované zdroje znížiť a tak ich uvoľniť pre jej spustenie, prípadne spustenie ďalších úloh.

% qalter -l nodes=2:ppn=2,pmem=2000mb,walltime=01:00:00 < jobid >

Monitorovanie klastra

Celkový prehľad o využití/zaťažení jednotlivých uzlov klastra je možné získať pomocou príkazu qfree [-h].

% qfree
                                             CLUSTER STATE SUMMARY
                                                                                Local       GPFS Storage
Core        1   2   3   4   5   6   7   8   9  10  11  12    load  FreeMem     Scratch     Read     Write   State
Node  Queue                                                         [GB]        [GB]      [MB/s]    [MB/s]

comp07  T  [-] [-] [-] [-] [-] [-] [-] [-] [-] [-] [-] [-]     -      -           -          -        -     down
comp08  T  [-] [-] [-] [-] [-] [-] [-] [-] [-] [-] [-] [-]     -      -           -          -        -     down
comp10  S  [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]   12.09  44.33    3.5 (0.2%)     0.00     0.00   job-exclusive
comp11  S  [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]   12.02  44.61      0 (0.0%)     0.00     0.00   job-exclusive
comp12  S  [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ]    8.06  44.67      0 (0.0%)     0.00     0.00   free
comp13  S  [X] [X] [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]    4.02  44.67      0 (0.0%)     0.00     0.00   free
comp25  P  [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]    0.00  44.52      0 (0.0%)     0.00     0.00   free
comp26  P  [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]    9.46  41.48    0.1 (0.0%)     0.00     0.10   job-exclusive
comp27  P  [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]    0.00  44.64      0 (0.0%)     0.00     0.00   free
comp28  P  [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]   12.00  40.47      0 (0.0%)    22.95     1.50   job-exclusive
comp29  P  [O] [O] [O] [O] [O] [O] [O] [O] [O] [O] [O] [O]   12.00  20.47      0 (0.0%)     0.00     0.00   job-exclusive
comp30  P  [O] [O] [O] [O] [O] [O] [O] [O] [O] [O] [O] [O]   11.99  38.53      0 (0.0%)     6.09     1.22   job-exclusive
comp31  P  [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X]   12.00  20.42      0 (0.0%)     0.00     0.00   job-exclusive
...

CPU jadrá obsadené vlastnými úlohami sú zvýraznené žltou farbou (ak je podporované terminálom). Na príslušné výpočtové uzly je možné sa prihlásiť
(napr. % ssh comp25) a získať tak podrobné informácie o spustenej úlohe a stave jednotlivých uzlov. Dostupné sú štandardné funkcie ako top, vmstat, iostat, ps ...

Vymazanie úlohy z fronty a jej zastavenie

% qdel < jobid >
 jobid 

Viac informácií

Ďalšie informácie je možné získať z manuálov priamo v systéme, alebo zo stránok dodávateľa programového vybavenia Adaptive Computing Inc.

© 2013 Slovenská technická univerzita v Bratislave,  Centrum výpočtovej techniky, Vazovova 5, 812 43 Bratislava, HPC-Team: hpc [at] stuba.sk