Módosítások

NIIF szuperszámítógépek használata

146 bájt törölve, 2014. április 30., 14:01
a
nincs szerkesztési összefoglaló
=== SSH belépés ===
<code>
ssh USER@login.SITE.hpc.niif.hu
</code>
ahol a <code>USER</code> a felhasználónév, a <code>SITE</code> pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a <code>-i KULCS</code> kapcsolóval lehetséges.
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a <code>keys/szeged</code> fájlból olvasva:
<code>
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu
</code>
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:
<pre>
scp USER@login.SITE.hpc.niif.hu:FILE FILE scp FILE USER@login.SITE.hpc.niif.hu:FILE
</pre>
A szegedi gép HOME könyvtárában lévő <code>stuff.tgz</code> fájl letöltése a helyi gép aktuális könyvtárába:
<code>
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .
</code>
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:
<pre>
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY
</pre>
A budapesti gépre szinkronizálom a helyi <code>src</code> könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:
<code>
rsync -a -h --progress -e "ssh -i keys/budapest" ./src alice@login.budapest.hpc.niif.hu:/home/alice
</code>
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:
<code>
module avail
</code>
a már betöltött modulok listáját:
<code>
module list
</code>
Alkalmazást a következő paranccsal tölthetünk be:
<code>
module load APPS
</code>
ahol az <code>APPS</code> a betöltendő modulok space-szel elválasztott listája.
A Maple, netcfd és az R csomagok betöltése:
<code>
module load maple netcdf R
</code>
Alapértelmezés szerint a felhasználók home és scratch könyvtárát a többi felhasználó nem láthatja. Az alábbi példában a myproject projekt számára szeretnénk megosztani a /home/user/myproject könyvtárat:
<code>
 
# Először hozzáférhetővé tesszük a saját home könyvtárunkat
[login:~]$ chmod 751 .
Számláink állapotáról a következő paranccsal kapunk információt:
<code>
sbalance
</code>
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:
<code>
sestimate -N NODES -t WALLTIME
</code>
ahol a <code>NODES</code> a lefoglalni kívánt node-ok száma, a <code>WALLTIME</code> pedig a futás maximális ideje.
Az ütemezőben lévő jobokról az <code>squeue</code>, a klaszter általános állapotáról az <code>sinfo</code> 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:
<code>
scontrol show job JOBID
</code>
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:
<code>
sacct -l -j JOBID
</code>
A felhasznált memóriáról a következő parancs ad tájékoztatást:
<code>
smemory JOBID
</code>
A lemezhasználatról pedig a
<code>
sdisk JOBID
</code>
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.
<pre>
squeue -l
Wed Oct 16 08:30:07 2013
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.
<pre>
smemory 430
MaxVMSize MaxVMSizeNode AveVMSize MaxRSS MaxRSSNode AveRSS
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:
<code>
sjobcheck JOBID
</code>
Az elérhető és éppen használt licenszekről a következő parancs ad információt:
<code>
slicenses
</code>
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:
<code>
sreservations
</code>
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:
<code>
susage
</code>
A jobok feladását a következő parancs végzi:
<code>
sbatch jobscript.sh
</code>
A feladat leállítását a következő parancs végzi:
<code>
scancel JOBID
</code>
==== A szolgáltatás minősége (QOS) ====
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. A szolgáltatást alapértelmezett minősége <code>normal</code>, azaz nem megszakítható a futás.
 
Az alacsony prioritás kiválasztását a következő direktívával tehetjük meg:
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az <code>OMP_NUM_THREADS</code> környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:
<code>
export OMP_NUM_THREADS=24
</code>
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:
<code>
ulimit -a
</code>
A limitek a compute node-okon és az UV-n nincsenek beállítva.
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:
<pre>
java -Xmx512m -version javac -J-Xmx512m -version
</pre>
vagy exportálni kell a következő változót:
<pre>
export _JAVA_OPTIONS="-Xms1g -Xmx1g"
</pre>
A numerikus Python használatához a következő csomagokat kell betölteni:
<code>
module load python numpy scipy
</code>
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az <code>openmp</code> párhuzamos környezetbe kell elküldeni.
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:
<code>
module load prace
</code>
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):
<code>
--bind-to-core --bycore
</code>
Processzor terhelés numa node-onként (6 core), az ideális terhelés 6-nál (600%) van:
<code>
sgemon -g -n <JOBID>
</code>
Processzor terhelés CPU-nként, az ideális terhelés 1-nél (100%) van:
<code>
sgemon -g -n <JOBID>
</code>
Memória terhelés numa node-onként, a maximális terhelés 30 GB-nál van, ami core-onként 5GB-nak felel meg:
<code>
sgemmon -g -m <JOBID>
</code>
214
szerkesztés

Navigációs menü