Miskolc UV 2000
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
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