Módosítások

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

10 827 bájt hozzáadva, 2019. október 29., 15:57
a
Köszönetnyilvánítás
== A szuperszámítógépekről ==
Az NIIF Intézet A KIFÜ szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:
* Debreceni Egyetem
* NIIFI KIFÜ központ
* Pécsi Tudományegyetem
* Szegedi Tudományegyetem
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig "fat-node" fürtözött megoldás. Az alrendszereket az NIIFI a KIFÜ nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.A szuperszámítógép-rendszert az NIIFI a KIFÜ üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettela KIFÜ-vel.A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF a KIFÜ adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel. ==== Magyar Szuperszámítógépek összehasonlítása ==== {| class="wikitable" border="1" |- | Helyszín| Budapest| Szeged| Debrecen| Pécs|- | Típus| HP CP4000BL| HP CP4000BL| SGI ICE8400EX| SGI UV 1000|- | CPU-k / node | 2 | 4 | 2 | 2 |- | Core-ok / CPU | 12| 12| 6| 6|- | Memória / node | 66 GB | 132 GB| 47 GB| 6 TB|- | Memória / core | 2.75 GB | 2.75 GB| 3.9 GB| 5 GB|- | CPU | AMD Opteron 6174 @ 2.2GHz | AMD Opteron 6174 @ 2.2GHz | Intel Xeon X5680 @ 3.33 GHz| Intel Xeon X7542 @ 2.66 GHz|- | Scheduler | [http://slurm.schedmd.com/ SLURM] | [http://slurm.schedmd.com/ SLURM]| [http://slurm.schedmd.com/ SLURM]| [http://www.niif.hu/node/316 SGE] |- | MPI | OpenMPI (ompi) | OpenMPI (ompi) | SGI MPT (mpt)| SGI MPT (mpt)|}
=== Köszönetnyilvánítás ===
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:
'''We acknowledge [PRACE/NIIF] KIFÜ for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''
Where technical support has been received the following additional text should also be used:
'''The support of [name of person/people] from NIIF InstituteKIFÜ, Hungary to the technical work is gratefully acknowledged.''' == Hozzáférés a szuperszámítógépekhez == A témában több videót is készítettünk, amelyek bemutatják a hozzáférés menetét (kulcsgenerálás és hozzáférés) és a filefeltöltés gyakorlati tutoriál keretében Windows operációs rendszeren. * [http://videotorium.hu/hu/recordings/details/12290,Hozza_fe_re_s_a_HPC-hez_kezdo_le_pe_sek_elo_ada_s_e_s_demo_ Kezdő lépések (videó)] * [http://videotorium.hu/hu/recordings/details/12307,A_HPC_felhaszna_la_s_gyakorlati_le_pe_sei_demo_.mp4 A HPC felhasználás gyakorlati lépései (videó)] A fenti videók tartalmazhatnak elavult információkat pl. az ütemezővel kapcsolatban, a jelenlegi ütemező használatához külön videóanyagot ajánljunk. 
== Hozzáférés a szuperszámítógépekhez ==
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.
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.
==== Példa ====
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>
</pre>
==== Példa ====
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>
</pre>
==== Példa ====
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>
=== Adatok megosztása projekt tagok számára ===
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. <span style="color:#ce1256"> Kérjük, hogy fokozottan figyeljenek arra, hogy a teljes <code>$HOME</code> könyvtárra sose adjanak "rwx" jogot más felhasználóknak, mivel pl. a <code>.ssh</code> mappa nagyon érzékeny a jogosultságokra, és a rendszer nem fogja beengedni legközelebb a felhasználót!</span> A következő példában a <code>$HOME/Shared</code> könyvtárat osztjuk egy munkatárs számára:
<pre>
# a home könyvtár beállítása
rsync -avuP --delete $HOME/data $NCE_SHARED
</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. A KIFÜ 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.
== SLURM ütemező használata ==
Weboldal:  http://slurm.schedmd.com A SLURM ütemező bemutatása:  * [http://videotorium.hu/hu/recordings/details/6122,A_slurm_HPC_utemezo Slurm HPC ütemező]
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.
</code>
===== Példa =====A parancs Bob számára a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik 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ő (Available) gépidőről ad tájékoztatást.
<pre>
Scheduler Account Balance
'''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 <code>sacct</code> paranccsal is ellenőrizni.'''
==== Példa ====
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:
<pre>
Az utóbbi esetben, 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.
==== Példa ====
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>
</code>
===== Példa =====
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a <code>User</code> oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.
<pre>
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ő]
===== Példa =====
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A <code>#SBATCH --array=1-96</code> direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az <code>srun</code> paranccsal kell indítani. Ebben az esetben ez egy shell szkript.
<pre>
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.
===== Példa =====
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&) indítani és a wait-tel kell befejezni a job szkriptet.
<pre>
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.
===== Példa =====
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a <code>slurm.out</code> fájlba irányítja (<code>#SBATCH -o</code>).
<pre>
</pre>
==== SGI ccNUMA UV SMP 1000 (Pécs) ====
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.
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. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''
===== Példa =====
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a <code>slurm.out</code> fájlba irányítja (<code>#SBATCH -o</code>).
<pre>
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.
===== Példa =====
Egy OpenMPI-re fordított program indítása:
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=2410
</code>
A következő példában egy taskhoz 24 10 CPUcore-t rendeltunk, a 24 10 CPUcore-nak egy node-on kell lennie. A CPUcore-k ok számát a <code>
SLURM_CPUS_PER_TASK</code> változó tartalmazza, és ez állítja be az OMP szálak számát is.
===== Példa =====Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 24 10 szálas OMP alkalmazást.
<pre>
#!/bin/bash
#SBATCH --time=06:00:00
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=2410
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out
</pre>
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.
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. ===== Példa =====Alice felhasználó a foobar 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 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.
<pre>
#!/bin/bash
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (<code>${MAPLE}/toolbox/Grid/bin/startserver</code>). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (<code>#SBATCH --licenses=maplegrid:1</code>). A Maple feladat indátását a <code>${MAPLE}/toolbox/Grid/bin/joblauncher</code> paranccsal kell elvégezni.
===== Példa =====
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:
<pre>
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl
</pre>
 
==== Matlab feladatok ====
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (<code>--partition gpu</code>). A GPU-k számát a <code>--gres gpu:#</code> direktívával kell megadni.
===== Példa =====
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.
<pre>
=== Párhuzamos környezet ===
==== OpenMP ====
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az <code>openmp</code> párhuzamos SGE SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.
==== MPI ====
-liomp5 -lpthread -lm -openmp
</code>
 
== ARC köztesréteg ==
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.
 
=== Miért is használjuk?! ===
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel
* Nagyon sok operációs rendszert támogat
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program
 
=== Grid tanúsítvány igénylése ===
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra:
 
<code>
$ chmod +x slcs_unix_install.sh
$ ./slcs_unix_install.sh
$HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed
NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem
Default ARC client configuration created: $HOME/.arc/client.conf
NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem
$
</code>
 
 
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk a KIFÜ-től [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.
 
=== ARC kliensek használatba vétele ===
==== Telepítés ====
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html
'''Fontos''': 5.0-ás ARC verziót telepítsük.
 
Debian alapú rendszerek esetén:
apt-get install nordugrid-arc-client
 
Redhat alapú rendszerek esetén:
yum install nordugrid-arc-client
 
OSX csomag telepítése [http://brew.sh brew] segítségével:
brew install nordugrid-arc
 
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.
 
==== Konfigurálás ====
$HOME/.arc/client.conf:
<code>
[common]
[computing/budapest]
url=https://login.budapest.hpc.niif.hu:60000/arex
infointerface=org.nordugrid.wsrfglue2
submissioninterface=org.ogf.bes
default=yes
[computing/szeged]
url=https://login.szeged.hpc.niif.hu:60000/arex
infointerface=org.nordugrid.wsrfglue2
submissioninterface=org.ogf.bes
default=yes
[computing/debrecen]
url=https://login.debrecen.hpc.niif.hu:60000/arex
infointerface=org.nordugrid.wsrfglue2
submissioninterface=org.ogf.bes
default=yes
[computing/pecs]
url=https://login.pecs.hpc.niif.hu:60000/arex
infointerface=org.nordugrid.wsrfglue2
submissioninterface=org.ogf.bes
default=yes
# FastestQueue – ranks targets according to their queue length
brokername=FastestQueue
# Random – ranks targets randomly
#brokername=Random
# Data – ranks targets according the amount of megabytes of the requested input files that are already
# in the computing resources cache.
#brokername=Data
# PythonBroker:<module>.<class>[:arguments] – ranks targets using any user-supplied custom
# Python broker module, optionally with broker arguments. Such module can reside anywhere in
# user’s PYTHONPATH
#brokername=PythonBroker
[alias]
pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex
szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex
debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex
budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex
hp=budapest szeged
sgi=pecs debrecen
</code>
 
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.
 
=== Grid proxy készítése ===
 
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.
 
<code>
$ arcproxy
Enter pass phrase for private key:
Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe
Proxy generation succeeded
Your proxy is valid until: 2015-03-30 05:01:09
$
</code>
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:
 
<code>
$ arcinfo -c szeged
$ arcinfo -c hp -l
$ arcinfo
</code>
 
=== Grid job készítése ===
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:
 
<code>
$ cat job.xrsl
&
(executable="matlab.sh")
(arguments="matlab.m")
(stdout="stdout.txt")
(stderr="stderr.txt")
(jobname="Matlab test")
(inputFiles=
("matlab.m" "")
)
(memory>="1000")
(gmlog="gm.log")
(wallTime="240")
(runTimeEnvironment="APPS/MATH/MATLAB-7.13")
</code>
 
<code>
$ cat matlab.sh
#!/bin/bash
echo
echo "Compute node: " `/bin/hostname -f`
echo
matlab -nodisplay < $1
</code>
 
<code>
$ cat matlab.m
2+3
</code>
 
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.
 
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.
 
==== OpenMP példa ====
 
Job elkészítése:
<code>
$ cat job-openmp.xrsl
&
(executable="omp_mm")
(stdout="stdout.txt")
(stderr="stderr.txt")
(jobname="OpenMP test")
(queue="test")
(executables="omp_mm")
(count="10")
(countpernode="10")
(environment=("OMP_NUM_THREADS" "10"))
(queue="test")
(inputFiles=
("omp_mm" "")
)
(memory>="2600")
(gmlog="gm.log")
(wallTime="20")
 
Job elküldése:
 
$ arcsub job-openmp.xrsl
Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn
 
Job állapotának a lekérdezése:
 
$ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn
Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn
Name: OpenMP test
State: Finished
Exit Code: 0
Status of 1 jobs was queried, 1 jobs returned information
 
Job letöltése:
 
$ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn
Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn
Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1
zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn
zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l
total 16
drwx------ 12 joe staff 408 Mar 29 21:24 gm.log
-rw------- 1 joe staff 0 Mar 29 21:24 stderr.txt
-rw------- 1 joe staff 6362 Mar 29 21:24 stdout.txt
zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $
 
Adatok ellenőrzése:
 
zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt
Starting matrix multiple example with 10 threads
Initializing matrices...
Thread 0 starting matrix multiply...
Thread=0 did row=0
Thread 9 starting matrix multiply...
Thread 6 starting matrix multiply...
Thread=0 did row=1
Thread 5 starting matrix multiply...
Thread=5 did row=50
Thread=5 did row=51
zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$
</code>
 
==== MPI példa ====
 
<code>
$ cat job-mpi.xrsl
&
(executable="mpi.sh")
(stdout="stdout.txt")
(stderr="stderr.txt")
(jobname="MPI test")
(executables="connectivity" "mpi.sh")
(count="10")
(inputFiles=
("connectivity" "")
("mpi.sh" "")
)
(memory>="2600")
(gmlog="gm.log")
(wallTime="20")
(runTimeEnvironment>=ENV/GCC/MPI/OPENMPI-1.4.3)
 
$ cat mpi.sh
#!/bin/bash
mpirun -np 10 ./connectivity -v
</code>
 
==== Grafikus felületű ARC kliens ====
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.
[[Category: HPC]]

Navigációs menü