Módosítások

Budapest2 klaszter

7 513 bájt hozzáadva, 2017. március 15., 12:33
a
nincs szerkesztési összefoglaló
|-
| Típus
| HPSL250s
|-
| core / node
| 10 × 2 Xeon E5-2680v2 2.80GHz
|-
| GPU Intel Xeon Phi / node| 2 × Nvidia K20 Intel(R) Xeon Phi(TM) MIC SE10/7120P
|-
| CN számCompute node-ok| 14db|-| Max Walltime| 7-00:00:00|-| Max core-ok / projekt| 140 (7db node)|-| Max mem / core| 3000 MB
|}
== Felhasználói felület ==
<codepre>
rövid CWD
|
rövid gép név |
előző parancs exit kódja
</codepre>
=== Modul környezet ===
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER
</pre>
 
== 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: <code>hpc-forum kukac listserv.niif.hu</code>. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum 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 <code>hpc-support kukac niif.hu</code> címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.
 
== Intel Xeon Phi használata ==
 
* [[Intel_Xeon_Phi |Részletes]] használati és alkalmazás optimalizációs leírás
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban
* [https://software.intel.com/en-us/xeonphionlinecatalog Itt] található az Intel által hivatalosan támogatott alkalmazások listája
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről
== SLURM ütemező használata ==
A szupergépen szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáraól állapotáról a következő parancs ad információt:<codepre>
sbalance
</codepre>A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik 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 alérhető elérhető (Available) gépidőről ad tájékoztatást.
<pre>
Scheduler Account Balance
=== 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ó:
<codepre>
sestimate -N NODES -t WALLTIME
</codepre>
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.
=== Állapotinformációk ===
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:
<codepre>
scontrol show job JOBID
</codepre>
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:
<codepre>
sacct -l -j JOBID
</codepre>
A felhasznált memóriáról a következő parancs ad tájékoztatást:
<codepre>
smemory JOBID
</codepre>
A lemezhasználatról pedig a
<codepre>
sdisk JOBID
</codepre>
==== Slurm figyelmeztető üzenetek ====
<pre>
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
</pre>
Az utóbbi esetben, csőkkenteni csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben. ==== Licenszek ellenőrzése ====Az elérhető és éppen használt licenszekről a következő parancs ad információt:<pre>slicenses</pre> ==== 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:<pre>sreservations</pre> ==== Összesített felhasználás ====Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:<pre>susage</pre> ==== 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:<pre>sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01</pre> === 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 <code>#SBATCH</code> direktívával kell megadni. ==== Kötelező paraméterek ====A következő paramétereket minden esetben meg kell adni:<pre>#!/bin/bash#SBATCH -A ACCOUNT#SBATCH --job-name=NAME#SBATCH --time=TIME</pre>ahol az <code>ACCOUNT</code> a terhelendő számla neve (elérhető számláinkről az <code>sbalance</code> parancs ad felvilágosítást), a <code>NAME</code> a job rövid neve, a <code>TIME</code> pedig a maximális walltime idő (<code>DD-HH:MM:SS</code>). 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". ==== Intel Xeon Phi-k lefoglalása ====A Intel Xeon Phi-k lefoglalása a következő direktívával történik:<pre>#SBATCH --gres=mic:N</pre>Az <code>N</code> az Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum. ==== Job-ok indítása ====A jobok feladását a következő parancs végzi:<pre>sbatch slurm.sh</pre> Sikeres feladás esetén a következő kimenetet kapjuk:<pre>Submitted batch job JOBID</pre>ahol a <code>JOBID</code> a feladat egyedi azonosítószáma. A feladat leállítását a következő parancs végzi:<pre>scancel JOBID</pre> ==== Nem újrainduló jobok ====Nem újrainduló jobokhoz a következő direktívát kell használni:<pre>#SBATCH --no-requeue</pre> ==== Feladat sorok ====A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a <code>test</code> sor és a <code>prod</code> sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a <code>prod</code>. A teszt partíciót a következő direktívával lehet kiválasztani:<pre>#SBATCH --partition=test</pre> ==== A szolgáltatás minősége (QOS) ====A szolgáltatást alapértelmezett minősége <code>normal</code>, azaz nem megszakítható a futás. ===== 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.<pre>#SBATCH --qos=fast</pre> ===== 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.<pre>#SBATCH --qos=lowpri</pre>
Az ütemezőben 3 feladat ==== Memória foglalás ====Alapértelmezetten 1 CPU core-hoz 1000 MB memória 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övidrendelve, informatív neveket érdemes adni.ennél többet a következő direktívával igényelhetünk:
<pre>
squeue #SBATCH -l-mem-per-cpu=MEMORY</pre>ahol <code>MEMORY</code> MB egységben van megadva. A maximális memória/core 3000 MB lehet.
Wed Oct 16 08:30Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:07 2013 JOBID PARTITION NAME USER STATE TIME TIMELIMIT NODES NODELIST(REASON)<pre>591_[1ulimit -96] normal array alice PENDING 0:00 30:00 1 (None) 589 normal mpi bob RUNNING 25:55 2:00:00 4 cn[05-08] 590 normal omp alice RUNNING 0:25 1:00:00 1 cn09v unlimited
</pre>
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt==== Email értesítés ====Levél küldése job állapotának változásakor (elindulás,leállás,hiba): kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.
<pre>
smemory 430#SBATCH --mail-type=ALL#SBATCH --mail-user=EMAIL</pre>ahol az <code>EMAIL</code> az értesítendő emial cím.
MaxVMSize MaxVMSizeNode AveVMSize MaxRSS MaxRSSNode AveRSS==== Tömbfeladatok (arrayjob) ====Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a <code>SLURM_ARRAY_TASK_ID</code> környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a <code>slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out</code> fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető] <pre>#!/bin/bash#SBATCH -A ACCOUNT#SBATCH --job-name=array#SBATCH --time=24:00:00#SBATCH - -array=1------------- ---------- ---------- ---------- ----------10271792K cn06 10271792K 6544524K cn06 6544524K 9610085152K cn07 10085152K 6538492K cn07 6534876K srun envtest.sh
</pre>
==== CPU felhasználás ellenőrzése Soros (serial) jobok ====Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.<pre>#!/bin/bash #SBATCH -A ACCOUNT#SBATCH --job-name=serial#SBATCH --time=24:30:00#SBATCH -n 3#SBATCH --partition=testsrun -n 1 program input1 &srun -n 1 program input2 &srun -n 1 program input3wait</pre> ==== IntelMPI feladatok ====Nagyon fontos meggyőződni arról, hogy MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (<code>#SBATCH --ntasks-per-node=</code>). A leggyakoribb esetben ez az alkalmazás kihasználjaegy node-e a rendelkezésre álló gépidőtban található CPU core-ok száma. Egy futó alkalmazás a következő A párhuzamos programot az <code>mpirun</code> paranccsal tudunk monitoroznikell indítani.<pre>#!/bin/bash#SBATCH -A ACCOUNT#SBATCH --job-name=mpi#SBATCH -N 2#SBATCH --ntasks-per-node=20#SBATCH --time=12:00:00 mpirun PROGRAM</pre> OpenMPI FAQ: http://www.open-mpi.org/faq ==== OpenMP (OMP) feladatok ====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>
sjobcheck JOBIDexport OMP_NUM_THREADS=10
</code>
Ez A következő példában egy taskhoz 10 CPU core-t rendeltunk, a job 4 10 CPU core-nak egy node-on futkell lennie. A LOAD csoport CPU core-ok számát a gép általános terheléséről ad információt <code>SLURM_CPUS_PER_TASK</code> változó tartalmazza, és kbez állítja be az OMP szálak számát is.  Alice felhasználó a corefoobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.<pre>#!/bin/bash#SBATCH -A foobar#SBATCH --job-name=omp#SBATCH --time=06:00:00#SBATCH --ntasks=1#SBATCH --cpus-per-ok számával egyezik megtask=10OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK . A helyes felhasználásról /a CPU csoport ad tájékoztatást. Ideális esetben a <code>Userout</codepre> oszlop értékei 90 fölött vannak ==== Hibrid MPI-OMP feladatok ====Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell. Ez alatt valamilyen probléma lépett fel  A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a futást érdemes megszakítanifoobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.
<pre>
Hostname LOAD CPU Gexec #!/bin/bash#SBATCH -A foobar#SBATCH --job-name=mpiomp CPUs (Procs/Total) [ 1, 5, 15min] [ User, Nice, System, Idle, Wio]#SBATCH --time=08:00:00cn08 24 ( 25/ 529) [ 24.83, 24.84, 20.98] [ 99.8, 0.0, 0.#SBATCH -N 2, 0.0, 0.0] OFFcn07 24 ( 25/ 529) [ 24.93, 24.88, 20.98] [ 99.8, 0.0, 0.#SBATCH --ntasks=2, 0.0, 0.0] OFFcn06 24 ( 25/ 529) [ 25.00, 24.90, 20.97] [ 99.9, 0.0, 0.#SBATCH --ntasks-per-node=1, 0#SBATCH --cpus-per-task=10#SBATCH -o slurm.0, 0outexport OMP_NUM_THREADS=$SLURM_CPUS_PER_TASKmpirun .0] OFFcn05 24 ( 25/ 544) [ 25.11, 24.96, 20.97] [ 99.8, 0.0, 0.2, 0.0, 0a.0] OFFout
</pre>
==== Licenszek ellenőrzése ====Az elérhető és éppen használt licenszekről a következő parancs ad információt[[Kategória:<code>slicenses</code>HPC]]

Navigációs menü