214
szerkesztés
Módosítások
a
ssh USER@login.SITE.hpc.niif.hu
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu
scp USER@login.SITE.hpc.niif.hu:FILE FILE scp FILE USER@login.SITE.hpc.niif.hu:FILE
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .
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
rsync -a -h --progress -e "ssh -i keys/budapest" ./src alice@login.budapest.hpc.niif.hu:/home/alice
module avail
module list
module load APPS
module load maple netcdf R
sbalance
sestimate -N NODES -t WALLTIME
scontrol show job JOBID
sacct -l -j JOBID
smemory JOBID
sdisk JOBID
squeue -l
smemory 430
sjobcheck JOBID
slicenses
sreservations
susage
sbatch jobscript.sh
scancel JOBID
export OMP_NUM_THREADS=24
ulimit -a
java -Xmx512m -version javac -J-Xmx512m -version
export _JAVA_OPTIONS="-Xms1g -Xmx1g"
module load python numpy scipy
module load prace
--bind-to-core --bycore
sgemon -g -n <JOBID>
sgemon -g -n <JOBID>
sgemmon -g -m <JOBID>
nincs szerkesztési összefoglaló
=== SSH belépés ===
<code>
</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>
</code>
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:
<pre>
</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>
</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>
</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>
</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>
</code>
a már betöltött modulok listáját:
<code>
</code>
Alkalmazást a következő paranccsal tölthetünk be:
<code>
</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>
</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>
</code>
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:
<code>
</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>
</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>
</code>
A felhasznált memóriáról a következő parancs ad tájékoztatást:
<code>
</code>
A lemezhasználatról pedig a
<code>
</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>
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>
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>
</code>
Az elérhető és éppen használt licenszekről a következő parancs ad információt:
<code>
</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>
</code>
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:
<code>
</code>
A jobok feladását a következő parancs végzi:
<code>
</code>
A feladat leállítását a következő parancs végzi:
<code>
</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>
</code>
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:
<code>
</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>
</pre>
vagy exportálni kell a következő változót:
<pre>
</pre>
A numerikus Python használatához a következő csomagokat kell betölteni:
<code>
</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>
</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>
</code>
Processzor terhelés numa node-onként (6 core), az ideális terhelés 6-nál (600%) van:
<code>
</code>
Processzor terhelés CPU-nként, az ideális terhelés 1-nél (100%) van:
<code>
</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>
</code>