Módosítások

Budapest2 klaszter

5 887 bájt hozzáadva, 2015. május 20., 12:09
nincs szerkesztési összefoglaló
slicenses
</code>
 
==== 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:
<code>
sreservations
</code>
 
==== Összesített felhasználás ====
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:
<code>
susage
</code>
 
==== 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:
<code>
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01
</code>
 
=== 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
#SBTACH --gres=gpu:N
</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".
 
Az <code>N</code> a GPU-k/node számát adja meg, ami 1 és 2 lehet maximum.
 
A jobok feladását a következő parancs végzi:
<code>
sbatch slurm.sh
</code>
 
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:
<code>
scancel JOBID
</code>
 
==== 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 teszt partícióban 1 GPU található (<code>--gres=gpu:1</code>)
 
==== 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>
 
==== Memória foglalás ====
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:
<pre>
#SBATCH --mem-per-cpu=MEMORY
</pre>
ahol <code>MEMORY</code> MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 3000 MB.
 
==== Email értesítés ====
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):
<pre>
#SBATCH --mail-type=ALL
#SBATCH --mail-user=EMAIL
</pre>
ahol az <code>EMAIL</code> az értesítendő emial cím.
 
==== 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-96
srun envtest.sh
</pre>
 
==== 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=test
srun -n 1 program input1 &
srun -n 1 program input2 &
srun -n 1 program input3
wait
</pre>
 
==== OpenMPI feladatok ====
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 egy node-ban található CPU core-ok száma. A párhuzamos programot az <code>mpirun</code> paranccsal kell 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>
214
szerkesztés

Navigációs menü