„NIIF szuperszámítógépek használata” változatai közötti eltérés

Innen: KIFÜ Wiki
272. sor: 272. sor:
 
</code>
 
</code>
 
A képen látható ábráknak megfelelő terhelési grafikonokat kell kapnunk. A grafikonok jellege más HPC alkalmazások esetén is ilyennek kell legyen ("egyenes" zöld vonal).
 
A képen látható ábráknak megfelelő terhelési grafikonokat kell kapnunk. A grafikonok jellege más HPC alkalmazások esetén is ilyennek kell legyen ("egyenes" zöld vonal).
 +
<br />
 
[[File:Linpack_cpu.jpg|frame|left|320px|Linpack teszt processzorterhelés]]
 
[[File:Linpack_cpu.jpg|frame|left|320px|Linpack teszt processzorterhelés]]
 +
<br />
 
[[File:Linpack_mem.jpg|frame|left|320px|Linpack teszt memóriaterhelés]]
 
[[File:Linpack_mem.jpg|frame|left|320px|Linpack teszt memóriaterhelés]]
 
<br />
 
<br />

A lap 2013. június 19., 15:55-kori változata

Az oldal célja

Ez a wiki oldal a NIIF Intézet (Nemzeti Információs Infrastruktúra Fejlesztési Intézet) szuperszámítógépes szolgáltatásához kapcsolódó információkat tartalmazza.

A szuperszámítógépekről

Az NIIF Intézet 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 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 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 ü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ézettel. 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 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.

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.

Hozzáférés a Shell Framework használatával

A Shell Framework egy összetett Bash alapú keretrendszer, ami kifejezetten a HPC felhasználók igényei alapján lett kifejlesztve. Jelentősen egyszerűsíti az SSH-val és a jobok kezelésével kapcsolatos teendőket. Támogatott operációs rendszerek: OS X, Linux.

Telepítés és frissítés

A keretrendszer a github.com-ról telepíthető és frissíthető. A telepítéséhez a következő parancsokat kell futtatni a terminálban:

   cd $HOME
   git clone git://github.com/hornos/shf3.git
   echo 'source $HOME/shf3/bin/shfrc' >> $HOME/.profile
   source .profile

A frissítéseket a következő paranccsal tudjuk letölteni:

   shfmgr -u

SSH elérés beállítása

Az SSH modul független a $HOME/.ssh könyvtárban található konfigurációtól. Minden SSH login/gép pároshoz tartozik egy MID fájl. Ebben a fájlban vannak tárolva az SSH paraméterei kulcs=érték formában. A MID fájl Bash formátumú szkript fájl, amelyet más programokban a source paranccsal tudunk beolvasni. A $HOME/shf3 könyvtár tartalmazza a teljes keretrendszert és a beállításokat is, ezért ezt a könyvtárat tehetjük egy titkosított USB meghajtóra is és symlinkelhetjük a home könyvtárunkba.

Új SSH MID-et a következő paranccsal tudunk létrehozni:

   sshmgr -n <MID>

A következő beállításokat kell beleírni a MID fájlba:

   # a távoli gép IP címe vagy DNS neve
   mid_ssh_fqdn="skynet.cyberdy.ne"
   # távoli felhasználói név
   mid_ssh_user="$USER"
   # SSH port
   mid_ssh_port=22
   # explicit ellenőrzés
   mid_ssh_port_check="ping"

Amennyiben nincs még SSH kulcsunk a szkript létrehozza ezt. Az SSH kulcsokat a $HOME/shf3/key/ssh könyvtár alatt találjuk: privát kulcs: <MID>.sec, publikus kulcs: <MID>.pub. A publikus részt kell eljuttatni a távoli gépre ill. elküldeni a regisztráció során. Ha vannak már kulcsaink, akkor ebbe a könyvtárba kell másolni az előbb említett nevekkel. Az SSH MID-ek a $HOME/shf3/mid/ssh könyvtár alatt vannak a <MID> nevű fájlokban. Minden SSH-val kapcsolatos parancs ezekt a fájlokat olvassa és használja a kulcsokat, ha elérhetők.


Felhasználói felület

A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:

              rövid CWD
                   |
   BUDAPEST[login] ~ (0)$
       |      |       |
  HPC állomás |       |
        rövid gép név |
              korábbi parancs exit kódja

Általános jellemzők

A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:

   ulimit -a

A limitek a compute node-okon és az UV-n nincsenek beállítva.

JVM heap méret

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, ami a frontend gépeken maximum 3500m:

   java -Xmx512m -version
   javac -J-Xmx512m -version

HP Budapest

Fordítás

Elérhető fordítók listája

Forító Soros Párhuzamos
Intel Fortran ifort mpiif90
Intel C icc mpiicc
GNU Fortran gfotran mpif90
GNU C gcc mpicc

A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:

   NCE_OFLAGS - optimalizációs kapcsolók C és Fortran
   NCE_FFLAGS - Fortran kapcsolók
   NCE_CFLAGS - C kapcsolók
   NCE_LDFLAGS - könyvtárak C és Fortran

Az NCE környezeti változó listáját az nce paranccsal kérhetjük le.

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:

   module load prace

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 Intel Link Advisor szerint kell beállítani, pl.:

   FFLAGS=-openmp -I$(MKLROOT)/include
   CFLAGS=-openmp -I$(MKLROOT)/include
   LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \
     -Wl,--start-group \
     $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \
     $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \
     $(MKLROOT)/lib/intel64/libmkl_core.a \
     $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \
     -Wl,--end-group -lpthread -lm

Párhuzamos környezet

OpenMP

Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az openmp párhuzamos SGE környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az LLNL OpenMP oldalán találtok.

MPI

Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):

   --bind-to-core --bycore

SGI UV Pécs

A pécsi gépen csak SMP vagy MPI programok futtatása engedélyezett. Minimálisan 12 szálat lehet lefoglalni. A foglalás alapegysége a numa node, ami 2x6 processzort és 60GB memóriát tartalmaz. Érdemes 12 többszörösével számolni a lefoglalalndó szálakat, pl.: 12, 24, 48, 96... Ha 2 hatványaira van szükségünk, akkor az SGE foglalást a legközelebbi 12-es szálszámmal kérjük, és az MPI-t vagy az OMP paraméterezzük 2^n szerint.

Az alapértelmezett MPI könyvtár az SGI MPT. Ez a könyvtár biztosítja a legjobb teljesítményt az UV gépen. A felhasználói programokat ehhez a könyvtárhoz kell fordítani. Fordításhoz az Intel Link Advisor-t érdemes használni. Az ajánlott fordítás opciók:

MPI fordítási opciók

   CFLAGS=-O2 -xSSE4.2
   FFLAGS=-O2 -xSSE4.2
   LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \
     -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \
     $(MKLROOT)/lib/intel64/libmkl_sequential.a \
     $(MKLROOT)/lib/intel64/libmkl_core.a \
     $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \
     -lpthread -lm

MPI és OpenMP fordítási opciók

Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.

   CFLAGS=-O2 -xSSE4.2 -openmp
   FFLAGS=-O2 -xSSE4.2 -openmp
   LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \
     -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \
     $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \
     $(MKLROOT)/lib/intel64/libmkl_core.a \
     $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \
     -liomp5 -lpthread -lm -openmp

MPI SGE job szkript példa

   #!/bin/bash
   ### SGE
   #$ -N MPITEST
   # 12 órás walltime limit 
   #$ -l h_rt=12:00:00
   # 384 szál lefoglalása az
   # mpi párhuzamos környezetben
   #$ -pe mpi 384
   # az uv.q sor használatával
   #$ -q uv.q
   # a standard kimenet ide íródik
   #$ -o StdOut
   # a hibakimenet ide íródik
   #$ -e StdErr
   # a jelenlegi shell környezet exportálódik
   #$ -V
   ### NUMA
   # az StdOut-ba írja a numa node információt
   numactl --show
   ### OMP
   # OMP beállítások
   export OMP_NUM_THREADS=1
   ### MPI
   # MPI beállítások
   export MPI_MEMMAP_OFF=1
   # saját szkript vagy az mpirun közvetlen meghívás
   # 384 MPI szál fog elindulni
   mpirun $NSLOTS dplace -s 1 <APP>

Az `<APP>` helyére kell írni a futtatandó programot és paramétereit. A `dplace` egy SGI előtétprogram, ami az MPI szálak ideális CPU elosztását végzi, megadása javasolt, mert általában javítja a teljesítményt.

OMP SGE job szkript példa

   #!/bin/bash
   ### SGE
   #$ -N OMPTEST
   # 12 órás walltime limit 
   #$ -l h_rt=12:00:00
   # 192 szál lefoglalása az
   # openmp párhuzamos környezetben
   #$ -pe openmp 192
   # az uv.q sor használatával
   #$ -q uv.q
   # a standard kimenet ide íródik
   #$ -o StdOut
   # a hibakimenet ide íródik
   #$ -e StdErr
   # a jelenlegi shell környezet exportálódik
   #$ -V
   ### NUMA
   # az StdOut-ba írja a numa node információt
   numactl --show
   ### OMP
   # OMP beállítások
   export OMP_NUM_THREADS=$NSLOTS
   omplace <APP>

Az `omplace` egy SGI előtétprogram, ami az MPI szálak ideális CPU elosztását végzi, megadása javasolt, mert általában javítja a teljesítményt.

Monitorozás

A jobhoz rendelt cpusetet (CPU és memória szelet) a következő parancsokkal lehet megfigyelni. A grafikonokhoz ssh -X átirányítás szükséges. A processzorterhelés grafikonján négy adat szerepel: zöld - hasznos, felhasználói terhelés, sárga - üresjárat, kék és piros - káros rendszerterhelés. Egy HPC program akkor fut "jól", ha a zöld, felhasználói terhelés maximális, a többi pedig minimális. Ideális esetben a grafikonon egyenes zöld vonalak láthatók. Nem egyenes ("ugráló") grafikon a terhelés nem egyenletes elosztására utal, ezen a CPU binding (dplace, omplace parancsok használata) általában segít.

Processzor terhelés numa node-onként (6 core), az ideális terhelés 6-nál (600%) van:

   sgemon -g -n <JOBID>

Processzor terhelés CPU-nként, az ideális terhelés 1-nél (100%) van:

   sgemon -g -n <JOBID>

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:

   sgemmon -g -m <JOBID>


Tesztelés Linpack-kal

A monitorozást egy Linpack teszt segítségével érdemes kipróbálni. A következő parancsokkal előkészítjünk egy Linpack teszt futást a test.q sorban:

   cd $HOME
   mkdir linpack
   module load hpl/2.0.mpt
   cd linpack
   cp $LINPACK_HPL_HOME/bin/{xhpl.sh,HPL.dat} .
   qsub xhpl.sh

A visszakapott jobid-vel hívjuk meg a monitor parancsot:

   sgemon -g -n <JOBID>
   sgemon -g -m <JOBID>

A képen látható ábráknak megfelelő terhelési grafikonokat kell kapnunk. A grafikonok jellege más HPC alkalmazások esetén is ilyennek kell legyen ("egyenes" zöld vonal).

Linpack teszt processzorterhelés


Linpack teszt memóriaterhelés


GY.I.K

1. Ki használhatja a szuperszámítógépet? A szuperszámítógép-rendszert felhasználói a magyar akadémiai körből, azon belül is az NIIF tagintézmények köréből kerülhetnek ki. A szuperszámítógépek tényleges felhasználói ezen intézmények munkatársai ill. hallgatói, valamint - indokolt esetben - egy NIIF tagintézmény és egy magyar vagy külföldi nem NIIF tagintézmény közötti tudományos kooperáció esetén a nem NIIF tagintézmény munkatársai lehetnek. Speciális esetben, egyéb indokokra való tekintettel (pl. nagy jelentőségű, az ország számára kiemelten fontos kutatás/fejlesztés/alkalmazás stb.) a fenti szabály alól az NIIF Program vezetése egyedi elbírálás alapján felmentést adhat. 2. Mire használható a szuperszámítógép-rendszer? A szuperszámítógép üzemeltetésének célja a magyar kutatás és felsőoktatás nagysebességű ill. kapacitású számítási igényeinek kiszolgálása. A gépek tehát felhasználhatók az alkalmazására jogosult intézmények bármelyikében folyó olyan kutatási és/vagy oktatási célra, amelyhez ilyen teljesítményű számítástechnikai kapacitás szükséges. Elsősorban az extrém számítási mennyiséget vagy sebességet igénylő vagy igen nagy memóriaigényű alkalmazások kiszolgálása a cél. A szuperszámítógépek nem használhatók a fentiektől eltérő célokra (pl. profitérdekelt tevékenység keretében folyó fejlesztésekhez, alkalmazásokhoz, vagy más, hagyományos eszközökkel is kielégítően megoldható feladatokhoz, stb.), vagy hagyományos értelemben vett hálózati szolgáltatások (pl. web-, ftp-, adatbázis- vagy file szerver) üzemeltetésére sem. 3. Hogyan lehet a szuperszámítógépekhez hozzáférni? A szuperszámítógép-rendszer mindegyik alrendszere az NIIF központban, illetve NIIF regionális központokban üzemelnek, ott ahol a magyar akadémiai Internet gerinchálózat (HBONE+) nagysebességű vonalai összefutnak. Az alrendszerek többször 10GB/s sebességű, dedikált lambda-kapcsolatokon keresztül kapcsolódnak egymáshoz, illetve a hálózathoz. Igénybevételük távolról, a hálózaton keresztül lehetséges, tetszőleges kliens számítógépről, alfanumerikus vagy grafikus terminál, ill. terminál emuláció valamint biztonságos kapcsolatot lehetővé tevő protokollok (ssh, scp), köztesréteg felhasználásával. A kitűnő hálózati kapcsolódás biztosítja, hogy a rendszert a gerinchálózat bármelyik pontjáról nagy sebességgel el lehet érni, és így még nagy mennyiségű adat mozgatása sem jelent problémát. A szuperszámítógép-rendszerhez való hozzáféréshez témaszám(ok)ra van szükség, amit az üzemeltetőtől kell igényelni. A témaszám igényléshez egy kérdőívet kell kitölteni, amelyen megadott információk alapján dönt az NIIF Intézet az igénylés jogosságáról. Szükség esetén az NIIFI konzultálhat is az igénylővel mielőtt döntést hoz. A témaszám személyre szóló és át nem ruházható. A témaszám átvételével a felhasználó deklarálja, hogy megismerte, és magára nézve kötelezőnek tartja a szuperszámítógép használatára vonatkozó szabályokat. 4. Melyek a felhasználás feltételei? A szuperszámítógépeket csak érvényes témaszám birtokában, a témaszám igénylésekor megjelölt feladatokra lehet használni a kapott kvóták keretein belül. A szuperszámítógépek felhasználásával elért tudományos eredmények, tapasztalatok hazai és nemzetközi publikációiban meg kell említeni az NIIF infrastruktúra alkalmazásának tényét. A szuperszámítógépeket felhasználó projektek státuszáról, előrehaladásáról, elért eredményeiről évente legalább egyszer rövid összegzést kell küldeni az NIIF Intézetnek. 5. Hogyan kerülnek elosztásra az erőforrások? A szuperszámítógép erőforrásai (gépidő, processzorszám, memória, háttértár) korlátozottak. Az alapvető cél az, hogy mindenki hozzájusson a számára szükséges kapacitáshoz. Amennyiben egy adott pillanatban az igények meghaladják a rendelkezésre álló kapacitást, úgy a felhasználható kvóták, és az egyes projektekhez rendelt prioritások alapján osztjuk fel az erőforrásokat. A szuperszámítógépen a CPU igényes jobok futtatása helyi ütemező és erőforrás elosztó rendszeren, illetve grid erőforrás brókeren keresztül lehetséges. 6. Milyen alkalmazások, felhasználói szoftverek ill. fejlesztő eszközök állnak rendelkezésre? A szuperszámítógépeken elérhetők az elterjedt számítógép programozási nyelvek fordítóprogramjai, könyvtárai ill. egyéb fejlesztőeszközei (pl. C, C++, Fortran), a párhuzamos alkalmazások futtatásához szükséges különféle szoftver környezetek (pl. PVM, MPI, OpenMP), egyéb, Linux környezetben használható HPC (High Performance Computing) eszközök, optimalizált párhuzamos matematikai könyvtárak, valamint különféle célalkalmazások. 7. Milyen felhasználói támogatás/segítség vehető igénybe? A szuperszámítógépek üzemeltetői helpdesk szolgáltatás keretében a gép felhasználói számára szakmai segítséggel, konzultációval, tanácsadással szolgálnak. Szervezünk továbbá a szuperszámítógéppel és felhasználásával kapcsolatos tanfolyamokat, workshopokat és szemináriumokat is. A projekt weboldalai szintén hasznos információkkal szolgálnak. 8. Mennyit kell fizetni a szuperszámítógépek használatáért? A szuperszámítógépek használata ingyenes a jogosult felhasználók számára.