Miskolc UV 2000

Innen: KIFÜ Wiki


ccNUMA Miskolc
Típus SGI UV 2000
CPU / node 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz
Compute node-ok 1 db
Max Walltime 7-00:00:00
Max mem / core 3750 MB

Belépés

ssh USER@login.miskolc.hpc.niif.hu

Nem alapértelmezett kulcs használata esetén a -i KULCS kapcsolóval megadása szükséges (SSH és SCP parancsok).

Fájlok másolása SCP-vel

Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:

Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE

Adatszinkronizáció

Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni

Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY

A törölt fájlok szinkronizálásához a --delete opciót kell megadni.

Felhasználói felület

               rövid CWD
                     |
      MISKOLC[login] ~ (0)$
        |       |       |
   HPC állomás  |       |
         rövid gép név  |
               előző parancs exit kódja

Modul környezet

Az elérhető modulok listáját a következő paranccsal kapjuk meg:

module avail

a már betöltött modulok listáját:

module list

Alkalmazást a következő paranccsal tölthetünk be:

module load APP

A NIIF által beállított környezeti változókat nce parancs listázza ki.

Adatok megosztása projekt tagok számára

Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük

setfacl -m u:OTHER:rx $HOME

Addott könyvtárat (DIRECTORY) írahtóvá:

setfacl -m u:OTHER:rxw $HOME/DIRECTORY

A kiterjesztett jogokat a következő paranccsal kérhetjük le:

getfacl $HOME/DIRECTORY

Alkalmazások lefordítása

Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: hpc-forum kukac listserv.niif.hu. Feliratkozni itt lehet erre a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a hpc-support kukac niif.hu címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.

SLURM ütemező használata

A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:

sbalance

A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.

Scheduler Account Balance
---------- ----------- + ---------------- ----------- + ------------- -----------
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)
---------- ----------- + ---------------- ----------- + ------------- -----------
bob *                7 |           foobar           7 |         1,000         993
alice                0 |           foobar           7 |         1,000         993

A gépidő becslése

Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:

sestimate -c CORES -t WALLTIME

ahol a CORES a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A WALLTIME pedig a futás maximális ideje.

Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az sacct paranccsal is ellenőrizni.

Állapotinformációk

Az ütemezőben lévő jobokról az squeue, a klaszter általános állapotáról az sinfo parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:

scontrol show job JOBID

Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:

sacct -l -j JOBID

A felhasznált memóriáról a következő parancs ad tájékoztatást:

smemory JOBID

A lemezhasználatról pedig a

sdisk JOBID

Slurm figyelmeztető üzenetek

Resources/AssociationResourceLimit - Erőforrásra vár
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva
Piority - Alacsony prioritás miatt várakozik

Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.

Licenszek ellenőrzése

Az elérhető és éppen használt licenszekről a következő parancs ad információt:

slicenses

Karbantartás ellenőrzése

A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:

sreservations

Összesített felhasználás

Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:

susage

Teljes fogyasztás

Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:

sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01

Feladatok futtatása

Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a #SBATCH direktívával kell megadni.

Kötelező paraméterek

A következő paramétereket minden esetben meg kell adni:

#!/bin/bash
#SBATCH -A ACCOUNT
#SBATCH --job-name=NAME
#SBATCH --time=TIME

ahol az ACCOUNT a terhelendő számla neve (elérhető számláinkről az sbalance parancs ad felvilágosítást), a NAME a job rövid neve, a TIME pedig a maximális walltime idő (DD-HH:MM:SS). A következő időformátumok használhatók: "minutes", "minutes:seconds", "hours:minutes:seconds", "days-hours", "days-hours:minutes" és "days-hours:minutes:seconds".

Job-ok indítása

Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.

A jobok feladását a következő parancs végzi:

sbatch slurm.sh

Sikeres feladás esetén a következő kimenetet kapjuk:

Submitted batch job JOBID

ahol a JOBID a feladat egyedi azonosítószáma.

A feladat leállítását a következő parancs végzi:

scancel JOBID

Nem újrainduló jobok

Nem újrainduló jobokhoz a következő direktívát kell használni:

#SBATCH --no-requeue

A szolgáltatás minősége (QOS)

A szolgáltatást alapértelmezett minősége normal, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:

sacctmgr show qos
Magas prioritás

A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.

#SBATCH --qos=fast
Alacsony prioritás

Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.

#SBATCH --qos=lowpri
Magas prioritás

A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.

#SBATCH --qos=fast

Tesztelés

Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.

#SBATCH --qos=test

Email értesítés

Levél küldése job állapotának változásakor (elindulás,leállás,hiba):

#SBATCH --mail-type=ALL
#SBATCH --mail-user=EMAIL

ahol az EMAIL az értesítendő emial cím.

OpenMP Példa

#!/bin/bash
#SBATCH -A barfoo
#SBATCH --job-name=omp
#SBATCH -n 48
#SBATCH --time=03:00:00
#SBATCH -o slurm.out
/opt/nce/bin/numainfo
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out

SGI MPT MPI Példa

#!/bin/bash
#SBATCH -A barfoo
#SBATCH --job-name=omp
#SBATCH -n 48
#SBATCH --time=03:00:00
#SBATCH -o slurm.out
/opt/nce/bin/numainfo
mpirun $SLURM_NTASKS ./a.out