juhaj@iki.fi Turku, 16.11.2012 Nordita KTH Royal Institute of Technology and Stockholm University Stockholm Sweden



Samankaltaiset tiedostot
CUDA. Moniydinohjelmointi Mikko Honkonen

TK Palvelinympäristö

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

Luento 3. Timo Savola. 7. huhtikuuta 2006

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

2 Konekieli, aliohjelmat, keskeytykset

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Materiaalitutkimuksen grid (M-grid)

Zeon PDF Driver Trial

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Tähtitieteen käytännön menetelmiä Kevät 2009

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

Metropolia Ammattikorkeakoulu

Työasema- ja palvelinarkkitehtuurit IC Tallennusjärjestelmät. Tallennusjärjestelmät. 5 opintopistettä.

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Linuxissa uusi elämä 1

Unix-perusteet. Tiedosto-oikeudet

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Backup Exec 3600 Appliance

WINDOWSIN ASENTAMINEN

Lumejärjestelmä Xen. Reino Miettinen

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

KYMENLAAKSON AMMATTIKORKEAKOULU. Ubuntu. Yukun Zhou

Unix-perusteet. Unix/Linux-käyttöjärjestelmä ja sen ominaisuudet

Kuva maailmasta Pakettiverkot (Luento 1)

Työasema- ja palvelinarkkitehtuurit IC Storage. Storage - trendit. 5 opintopistettä. Petri Nuutinen

Päivitys käyttäen USB-tikkua

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Febdok 5.5.x, Varmuuskopiot OHJEISTUS

LAITTEISTOKOKOONPANON SELVITTÄMINEN JA AJURIEN ASENTAMINEN

Ohjelmoinnin perusteet, syksy 2006

Simulaattorin asennus- ja käyttöohje

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Yhteydensaantiongelmien ja muiden ongelmien ratkaisuita

Unix-perusteet. Tulostaminen

Selvitysraportti. MySQL serverin asennus Windows ympäristöön

Office ohjelmiston asennusohje

Harjoitus 3 -- Ratkaisut

VERKON ASETUKSET SEKÄ WINDOWSIN PÄIVITTÄMINEN

CSC:n tieteellisen laskennan palvelut. Korkeakoulujen IT-päivät, TkT Jussi Heikonen CSC Tieteen tietotekniikan keskus

Maiju Mykkänen Susanna Sällinen

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

ASENNUSOHJEET INTERNET-ASENNUS. Navita Yritysmalli. YHTEYSTIEDOT Visma Solutions Oy Mannerheiminkatu LAPPEENRANTA Puh.

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Coolselector Asennusohje

KYMENLAAKSON AMMATTIKORKEAKOULU

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle.

Scifest-loppuraportti Jani Hovi kortin temppu

TK Palvelinympäristö

Vedä ja pudota Maamittauslaitoksen JPEG2000-ortoilmakuva GeoTIFF-muotoon

ipad:n päivitys versioon ios 7 Porin kaupungin luottamushenkilöt

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 4. Timo Savola. 21. huhtikuuta 2006

OHJE RFID - Suoraohjauskoodin muodostamiseen Toshiba SX sarjan tulostimilla

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

Käyttöjärjestelmät: prosessit

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

Lisenssin hakeminen PTC:n verkkosivun kautta

1 (5) VUOKRALISENSSIN KÄYTTÖÖNOTTO JA PILVIPISTEET AUTODESK ACCOUNTISSA. Milloin vuokra-aika alkaa?

A TIETORAKENTEET JA ALGORITMIT

VMware virtualisointiohjelmiston asennus ja käyttöönotto

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

Laskuharjoitus 2 ( ): Tehtävien vastauksia

11/20: Konepelti auki

POWER analytiikka-alustana

Verkkolisenssin käyttöönotto

Luento 1 Tietokonejärjestelmän rakenne

Virtualisoi viisaasti paranna palvelua. Iikka Taanila Systems Architect IBM Systems and Technology Group

Kieliteknologian ATK-ympäristö Viides luento

ClassPad fx-cp400 päivitys. + Manager for ClassPad II Subscription päivitys

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Kieliteknologian ATK-ympäristö Viides luento

1. Lineaarialgebraa A := Matriisin osia voidaan muutella päivittämällä riviä, saraketta tai osamatriisia (Matlabmaisesti): B :=

Octave-opas. Mikä on Octave ja miksi? Asennus

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Julkaiseminen verkossa

ANVIA ONLINE BACKUP ASENNUSOPAS 1(7) ANVIA ONLINE BACKUP ASENNUSOPAS 1.0

EDMODO. -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO

Linux - käyttöoikeudet

Transkriptio:

yleiskatsaus Suurteholaskentaklusterit: juhaj@iki.fi Nordita KTH Royal Institute of Technology and Stockholm University Stockholm Sweden Turku, 16.11.2012

Suurteholaskenta () yleiskatsaus Throughput/capacity computing kasapäin pieniä laskuja eri parametreillä: rajoitteena seinäkelloaika onnistuu perus-pc:llä, kunhan niitä on käytettävissä monta yhtä aikaa usein lasketaan sama lasku monella parametrillä tyyliin x [0,10 6 ] Z : f (x) :n kannalta oleellista on yksi yhteinen front-end heterogeeninenkin rauta käy koneiden ei aina tarvitse edes kommunikoida keskenään cycle-scavenging-systeemejä: condor, boinc, seti@home...

yleiskatsaus Suurteholaskenta () Capability computing isoja laskuja, käytettävät resurssit rajoitteena muistia (> 100 GiB) laskuaikaa (> 1000 ydinpäivää) levytilaa (> 1 TiB pitkäaikaisesti tai > 10 TiB väliaikaisesti) hajautettu muisti monta konetta yhteen liitettynä yhteistyössä jotain temppuja tehtävä että saa hyödynnettyä yli yhden koneen verran muistia de-facto standardi nykyään MPI (lisää kappaleessa ) heterogeeninen rauta paha jaettu muisti hirvittävän kallista jopa tässä hintaluokassa yhtä ydintä käyttäessä: prosessorin ja muistin nopeus merkittävä rajoite harkitse ohjelman vaihtoa useaa ydintä käyttäessä ei sen helpompaa kuin hajautettu muisti

Suurteholaskenta () yleiskatsaus Väliinputoajat välimuodot esim. 40 kpl 20 GiB vaativaa laskua onnistuu yleensä seka throughput että capability -laitteella tai pleioneen unohdetaan helposti jos tarviit näitä, muista pitää ääntä: Jälkikäsittely ja visualisointi usein unohdetaan kokonaan yleensä varsinainen -ongelma vain kun lasku tuottaa hyvin suuria määriä dataa (> 100 GiB) sisältää myös jälkikäsittelyn jälkeisen loppusijoituksen (kappale )

yleiskatsaus Jaettu ja hajautettu muisti jaettu yksi core pystyy hallitsemaan koneen koko muistia huisin kallista suuremmissa määrin hajautettu muistinhallinta hajautettu jos haluat naapurin muistista tietoa, joudut pyytämään kauniisti vain rinnakkaisohjelmat pystyvät hyödyntämään kaiken grid ideana hyötykäyttää toisten tyhjäkäynti M-grid ja FGI jopa lupaavat tietyn kapasiteetin grid-käyttäjille jo ajoissa oleviin ei vaikuta jos grid-käyttö on vähäistä ja oma kluseri tukossa, gridin läpi pääsee (mahdollisesti: FGI?) silti läpi

yleiskatsaus Interconnect (kommunikaatioverkko) rinnakkaislaskennan ja jaetun levyjärjestelmän käyttämä verkko jota pitkin kommunikaatio ja data liikkuvat Remote Direct Memory Access (RDMA) lisälaite käyttää muistia suoraan vaivaamatta prosessoria dataa voi siirtää verkon yli prosessorin tehdessä muuta halpisratkaisu: ethernet (1 Gbps (topaasi) tai jopa 100 Gbps) hirvittävä latenssi (satoja mikrosekunteja) isoilla paketeilla siedettävä ratkaisu RDMA vasta tulossa infiniband latenssi millisekunnin luokkaa, jopa alle 2-300 Gbps (tyypillinen 25 tai 40) RDMA spesialisoitu verkko Crayn Gemini: latenssi 2 µs (2.625 GBps/core) IBM Blue Gene/Q: 80 ns!!! - 3 µs (2.74 GBps/core) tyypillisesti RDMA tai vastaava

yleiskatsaus Klusteri yleensä keskitason -laitteisto (< capability-laskut) periaatteessa ostettavissa osina lähimmästä konekaupasta liitetty jotenkin toisiinsa yhdessä käytettäväksi (interconnect) aina hajautetun muistin laitteita tyypillisesti käytetään erillisen edustakoneen läpi nykyään usein pleionen kaltaisia blade-ratkaisuja (joita ei ainakaan BPC Solutions myy) Vektoriprosessori tehokas suorittamaan saman laskutoimituksen tuhansia kertoja peräkkäin ( vektorille ) vaikeita ohjelmoitavia GPU-kiihdyttimet kevyitä vektoriprosessoreja ehkä tulossa uudestaan NEC SX-10:n ja GPU:iden myötä

yleiskatsaus Super(tieto)kone :lle suunniteltu spesiaalilaitteisto (capability-laskut) harvoja jaetun muistin supereita lukuunottamatta näitäkin käytetään edustakoneen läpi nykyään monet käyttävät termiä cluster halvemmista -laitteista ja supercomputer or parallel computer kalliimmista nykyään usein teknisesti (blade-pohjaisia) klustereita, joten rajat hämäriä IBM BlueGene, Fujitsun K ja Cray X? -sarjat edelleen aitoja supereita

yleiskatsaus (ei-ylläpitäjät voi ottaa nopeat torkut) Levy tässä yhteydessä levy = fyysinen tallennusväline, jolle tai joille data lopulta päätyy Block device kernelin rajapinta laitteelle tukee fread- ja fseek-kutsuja tukee datan lukemista mv kohdasta myös kirjoitus mv kohtaan, jos JOS ylipäätään tukee kirjoitusta levy on jokaiselle tuttu esimerkki ( /dev/sda ) rauta -RAID Redundant Array of Inexpensive Discs levyohjain liittää nipun levyjä yhteen vain nippu näytetään laitteena kernelille kerneli tarjoaa nipun käytettäväksi block devicenä

yleiskatsaus softa -RAID linux-kerneli liittää nipun block devicejä (sic!) yhteen nippu tarjotaan käytettäväksi uutena block devicenä esim. block deviceinä /dev/sda, /dev/sdb, /dev/sdc näkyvät levyt voidaan yhdistää block deviceksi /dev/md0 HUOM! älä sorki suoraan osadevicejä Relevantit RAID tasot 1: mirror : kaikki data kahdella block devicellä käyttö voi jatkua toisen hajottua kapasiteetti = pienemmän block devicen kapasiteetti 5: N+1 block deviceä +1 käytetään tarkistussumman tallettamiseen (pariteetti) kestää yhden hajoamisen keskeytyksettä kapasiteetti = N pienimmän kapasiteetti 6: kuin raid-5, mutta kaksi tarkistussummaa

yleiskatsaus Logical Volume Manager (LVM) muodostaa vähintään yhdestä block devicestä loogisen kokonaisuuden nimeltä logical volume group (tämä EI ole block device!) volume group:iin voidaan luoda logical volumeita, jotka tarjotaan käyttöön block deviceinä Tiedostojärjestelmä elää block devicellä Fyysinen medium RAID Logical volume (LVM) Tiedostojärjestelmä

yleiskatsaus Storage Area Network (SAN) levyt omassa verkossaan suoraan verkossa kiinni moni laite voi lukea ja kirjoittaa samoja levyjä iscsi, ATA-over-Ethernet aiemmin Fibre Channel, nykyään varsinkin :ssä yleensä InfiniBand jokainen levy asiakaskoneelle kuin tavallinen paikallinen levy näiden päälle voi sitten rakentaa RAID:n tms tiedostojärjestelmän ymmärrettävä huomioida usean käyttäjän tilanne :ssä tiedostojärjestelmä käytännössä aina IBM GPFS

yleiskatsaus Network Attached Storage (NAS) asiakaskoneelle näkyy palvelin jakamassa levyä levy voi itse asiassa olla SAN! :ssä yleensä palvelimia todellisuudessa monta tiedostojärjestelmänä yleensä Lustre (tai GPFS) yksi metadata-server (MDS) joka näkyy asiakkaille levyä jakavana palvelimena yksi tai useampi object storage server (OSD), joilla itse data on hajautettu tiedostojärjestelmä, mutta EI hajautettua metadataa! ei ota kantaa OSD:n käyttämiin tiedostojärjestelmiin, RAIDiin tms RDMA! muita vaihtoehtoja: GlusterFS, GFS cephfs mielenkiintoinen tulokas (mm. täysin hajautettu!) NFS/CIFS/samba ei voi hajauttaa Nyt saa herätä!

yleiskatsaus Rinnakkaislaskenta ongelman ratkaiseminen useampaa ydintä (OpenMP ja MPI) tai konetta (MPI) käyttäen hajautetulla muistilla aina MPI jaetulla muistilla joko MPI, OpenMP tai molemmat jos näet termin pvm, juokse pakoon (1999!) Skaalautuvuus s = t(n)/t(2n), missä N on käytettyjen ytimien määrä ja t aika tavoite yleensä s > 1.8 erikoistapauksissa jopa s > 2: miten?

yleiskatsaus Kuorman jako (load blancing) kaikki N pitää saada tekemään työtä koko ajan, mitään lapionvarteen nojailua ei sallita domain decomposition jaetaan kaikille (melkein) sama laskutehtävä kuormakin jakautuu tasaisesti joskus reunaehdot sekoittavat tasapainoa muut rinnakkaistusmallit haasteellisempia master+workers: master usein epätasapainossa dynaamiset jaot: pitää varoa ettei (uudelleen)jakamiseen kulu liikaa aikaa

yleiskatsaus Profilointi mikä kuluttaa aikaa? miksi? voiko tehdä jotain? pyöriikö ytimet täysillä mutta kuitenkin turhaan ( pyörät sutii ) lisää kappaleessa CSC:n optimointipalvelun ennätys: 10000-kertainen nopeus oma tulos pelkällä kääntäjän vaihdolla: 4.11 Rinnakkaistiedostojärjestelmä (parallel fs) klusteroi tiedostojärjestelmän kuten klusteri rinnakkaislaskennan tiedostoa kirjoitetaan usean kommunikaatiolinkin läpi (eikä yhden kuten NFS:llä tms)

yleiskatsaus Kirjasto kokoelma lainattavia ohjelmanpätkiä käytät ainakin yhtä vaikket tietäisikään (libc) muita kirjastoja lisää kappaleessa kaksi toteutustapaa jaettu staattinen vektorikirjasto emuloi vektoriprosessoria tavallisella skalaarilla joissakin kääntäjissä sisäänrakennettuna oikeilla valinnoilla säästät ohjelmointi- ja ajoaikaa merkittävästi miten olikaan taas se 10000-kertainen? tyypillistä hyötyä vaikea arvioida

yleiskatsaus Capability computing itsessään on haaste vaatii sähköä ja tilaa CSC lähti Kajaaniin vanhaan paperitehtaaseen miten hyödyntää vaikkapa 10 6 corea? tehokkaasti? mitä tehdä datalle? Miten pitää kaikki tyytyväisinä jokaiselle oma kone ylläpitopainajainen rahaa hukkaan joka sekunti kun et laske 100% teholla yhteinen kone kaikki haluaa laskea nyt eikä odottaa jonojen säätäminen haastavaa (lisää kappaleessa Cluster administration)

yleiskatsaus Isot datamäärät jälkikäsittely: miten kaivaa tulokset ulos suunnattomasta datamäärästä redusoida data ymmärrettävään tai hahmotettavaan muotoon esittää se muille pitkäaikaissäilöntä ja varmuuskopiointi en ole vielä kertaakaan nähnyt näitä hoidetun huolella varmuuskopiointi ongelmallista kopiointi kestää kauan (IBM Sequoia: 70 PB/470 GB/s = 41 päivää) varastomedia maksavat paljon data pitäisi validoidakin ajoittain ettei media rapistu CSC:llä $ARCHIVE, mutta ei riitä Isolle Datalle

yleiskatsaus Pullonkaula 1: FLOPS vs muistikaista Blue Gene/Q 204.8 GFLOPS vs 42.6 GB/s jokaiselle kaksoistarkkuuden liukuluvulle tehtävä 40 operaatiota suhteet samanmoisia x86-64-koneilla kiihdyttimet omaa luokkaansa suhde jopa kertaluokkaa huonompi ja pitää vielä kopioida dataa eri muistien välillä! muuttumassa: NVIDIA Kepler välttää ongelman joissain tilanteissa ei oikeasti ihan näin paha tilanne useampi kerros cachea ja prefetching out-of-order suoritus 40 ei oikeastaan kovin iso luku arvioitava muistikaistan riittävyyttä

yleiskatsaus Pullonkaula 2: MPI:n tiedonvälitys kommunikaatioverkko ainakin kertaluokkaa hitaampi kuin muisti arvioitava paljonko dataa välitettävä eri ongelmat/algoritmit vaativat eri määriä samoin eri rinnakkaistustavat ethernetillä ja infinibandillä ylimääräinen pullonkaula node 1 node 2 node N kytkin 1 kytkin 2

yleiskatsaus Pullonkaula 3: Levy-I/O hajautetulla tiedostojärjestelmällä tyypillisesti 3-6 kertaluokkaa hitaampaa kuin muisti (R)DMA auttaa: levyille kirjoitetaan prosessorin jatkaessa laskujaan taas arvioitava riittääkö kaista ihan kaikkea ei kannattane tallettaa

yleiskatsaus unix shell (CSC:llä tutkijan käyttöliittymä ) asenna/kirjoita ohjelma valitse kääntäjä jos ohjelma pitää kääntää GNU, PathScale, Intel, PGI, IBM XL... käännä ja testaa edustakoneessa lyhyillä ja pienillä töillä kirjoita eräajoscripti lähetä työ eräajojonoon slurm, PBS, SGE, LoadLeveler, moab/torque... kahvia ja ehkä parit yöunetkin ihmettele tuloksia loppusijoita data johonkin

yleiskatsaus Module -järjestelmä käyttäjä valitsee itse haluamansa ohjelma- ja kirjastoversiot mahdollistaa eri käyttäjille eri versiot mahdollistaa helpon kääntäjän vaihtamisen teknisesti vain asetetaan ympäristömuuttujia rsync kopioi tiedostosi komennolla rsync -va tai rsync -vau säilyttää aikaleimat yms kopioi vain ne osat tiedostosta, jotka on pakko (=säästää aikaa) bzip2 puristaa tiedostot tiiviiksi syntaksi arkaainen edistyneemmät tiedostomuodot (kuten HDF5) osaavat pakata sisäisesti

Ohjelman asennus/kirjoittaminen yleiskatsaus Ohjelman asennus tai kirjoittaminen oletetaan tutuksi HUOM! vältä viimeiseen asti kääntäjäkohtaisia erikoisominaisuuksia! koskee varta vasten käytettyjä vektorikirjastojakin tuottavat vaikeuksia kun laitteisto vaihtuu hyvin suunnitellulla koodilla saa lähes aina saman edun poikkeuksena Fortran77 mutta ethän enää aloita uutta ohjelmaa sillä, ethän? manuaalin mukainen asentaminen superkoneisiin joskus kinkkistä CSC yleensä auttaa

yleiskatsaus GNU (gcc, gfortran, g++) löytyy mille tahansa koneelle erinomainen standardituki uudemmat versiot (>4.5) kohtuullisia vektoroimaan (tästä lisää kappaleessa ; älä sekoita vektorikirjastoon) pidä aina huoli että ohjelmasi toimii GNU-kääntäjillä: helppo varmistua että koodi toimii aina uudessa koneessa (vaikka sitten lopulta kääntäisikin varsinaisen tuotanto koodin toisella kääntäjällä)

yleiskatsaus PathScale käyttää GNU:ta edustanaan standardituki ja toimivuus GNU:n tasoa aiemmin selvästi paras optimoimaan koodi x86-64:lle erinomainen silmukoiden optimoija hyvä vektoroimaan sisäänrakennettu automaattinen vektorikirjasto varta vasten käytettynä kääntäjäkohtainen erikoisominaisuus kallis (nightly buildit saa ilmaiseksi, jos uskaltaa kokeilla semmoista) PGI monien suosikki kallis allekirjoittanut ei ole löytänyt mitään hyvää

yleiskatsaus Intel yllättäen löytyy vain Intel-yhteensopivalle raudalle erinomainen optimoija hyvä vektoroimaan aiemmat versiot eivät optimoineet AMD:lle lainkaan! (nykyiset?) sisäänrakennettu automaattinen vektorikirjasto varta vasten käytettynä kääntäjäkohtainen erikoisominaisuus ilmainen

yleiskatsaus Käännös Lähdekooditiedostoista kannattaa standardoida tekstin asettelu (mieluusti automatisoidusti) IDE: eclipse, spyder, emacs+cscope+etags+... mielummin paljon pieniä kuin yksi iso tiedosto vältä tiedostonnimien, paljaiden numeroiden jne käyttöä Makefile säästä hermojasi ja opettele käyttämään vähänkin pidemmän koodin kanssa säästät aikaakin Kääntäjäoptiot 1. -g -O0 kun testataan 2. laskuja varten -O3 -ffast-math (tai vastaava)

yleiskatsaus Eräajoscripti Shell script (sh-perhe) lista shell-komentoja: voit copy-pasteta käsin kirjottamasi (ba)sh osaa myös for-silmukat ja if-lauseet! muuttujat shell-scripteissä: ympäristömuuttuja sh-perheessä asetetaan: export MUUTTUJA=ARVO tulostetaan ARVO : echo ${MUUTTUJA} alkaa maagisella rivillä #!/polku/haluttuun/shelliin anna suoritusoikeudet: chmod 700 tiedosto yhdessä suoritusoikeus ja maaginen rivi mahdollistavat scriptin suorittamisen tavallisena komentona Eräajoscripti huolehdittava ympäristömuuttujista eräajojärjestelmä tulkitsee scriptistä erikoisrivejä slurmin erikoisrivit tultava heti maagisen rivin jälkeen ovat muotoa #SBATCH parametri parametrit: man sbatch

yleiskatsaus Eräajoscripti Esimerkki #!/ bin / bash # SBATCH -J testjob # kuvaava nimi # SBATCH -t 03: 00: 00 # varataaan 3 tuntia aikaa # SBATCH -o test. out # tulostus test. out : iin # SBATCH -e test. err # virhetulosteet test. err :\ iin # SBATCH -n 4 # varataan 4 ydinta # rivin voi katkaista katkaisematta kenoviivalla\ yo tapaan export MYDIR = path # ladataan pari modulia module load numpy openmpi /1.6 - intel use. own # ajastetaan ja ajetaan rinnakkaisohelma time mpirun python ${ MYDIR }/ myprogram Huom: python ei ole rinnakkaisohjelma, ${MYDIR}/myprogram:n on huolehdittava rinnakkaisjutut

Eräajo yleiskatsaus Front end vs node erot konekohtaisia klusterit yleensä helppoja: nodeissa ja edustassa sama käyttöjärjestelmä Crayt ja IBM BlueGenet haastavimpia: nodeissa eri käyttöjärjestelmä, cross-compilation Fujitsu? tiedostojärjestelmät nodet yleensä näkevät vain rinnakkaistiedostojärjestelmät jos muita näkyy, vältä niiden käyttöä pätee CSC:n louhessa pleionessa kotikin on rinnakkainen, käytä vapaasti kirjastot pleionessa tehty kivasti: kaikki paitsi frontendin /appl näkyy paikalliset asennukset: /home/opt/apps/ best bet: slurmin --export=all parametri

Eräajo yleiskatsaus Slurm-eräajojärjestelmä, osa I jonot (queue) listaa jonot: sinfo tarkemmat tiedot jonoista: sinfo --long ja nodeista sinfo --Node --long backfill mahdollistaa jonossa etuilun ohittaa vain riittäviä resursseja odottavia töitä vain riittävän lyhyet ja pienet työt voivat etuilla aikarajat käytä #SBATCH --time <days-hours:minutes:seconds> varaa vain tarvitsemasi aika: muutkin haluavat laskea talleta data levylle ja jatka siitä, mihin jäit jos kertalaaki ei riitä lyhyet työt backfillautuvat helpommin

Eräajo yleiskatsaus Slurm-eräajojärjestelmä, osa II muistirajat käytä #SBATCH --mem <MEM-IN-MB> tai --mem-per-cpu pleionessa oletus toimii melkein aina pienempi muistimäärä auttaa myös backfilliin joissakin tilanteissa ketjutus: haluat ajaa työn A vasta kun B on päättynyt #SBATCH --dependency=after:<b:n JOBID> squeue kertoo JOBID:n joudut tietenkin itse pitämään huolen että A osaa huomioida B:n tulokset esim. python-scrpiti prosessoi B:n tulokset ja käynnistää A:n oikeilla parametreillä slurm ei tiedä eikä voikaan tietää mitään työn tuloksista tai parametreistä visuaalinen jonostatus: smap

Kahvi ja tulokset yleiskatsaus Oletus jokainen osaa tuhlata aikaansa tehokkaasti koneen laskiessa Tulosten käsittely tapauskohtaista vinkki prosessoi mahdollisuuksien mukaan automaattisesti scriptillä tms

Kotitehtävän ratkaisu yleiskatsaus cache

yleiskatsaus (MPI-standardi) mainos: MPI (Parallel Programming with MPI (December 11-13, 2012): http://www.csc.fi/courses/archive/mpi-2012) perusidea: jaetaan ongelma niin itsenäisiin osiin kuin mahdollista MPI toimii viestinviejänä osien välllä deadlocks: muna-kana-ongelmat esimerkkijako: 1000 3 hila, 64 ydintä, jokaisella 250 3 osahila MPI Cart create luo MPI-kommunikaattorin kommunikointia varten MPI Cart shift kertoo kuka milläkin puolella majailee MPI Sendrecv yksi vaihtoehto datan kopiointiin (yo tietoa käyttäen) MPI Allreduce lasketaan tulokset yhteen ja välitetään kaikille master+slaves -jaossa ei geometrioita (MPI Cart...)

yleiskatsaus useita vaihtoehtoja käsitellään tässä OpenMP (älä sekoita OpenMPI:in) tärkein käsittelemätön vaihtoehto on säikeistys deadlocks: muna-kana-ongelmat OpenMP automaattinen rinnakkaistus jaetun muistin sisällä voi (ja kannattaa) käyttää yhdessä MPI:n kanssa gcc: -fopenmp -parametri rinnakkaistusta ohjataan #pragma omp -preprosessoridirektiiveillä käytännössä isot silmukat jaetaan useammalle corelle TAAS deadlocks osaa rajoitetusti haistaa ongelmatilanteita itse http://www.openmp.org/

yleiskatsaus /apuprosessorit laitetaan koneeseen prosessorin lisäksi joku toinenkin laskukone yleisin: NVIDIA Fermi ja Kepler -perheet muita: AMD FirePro, Intel Xeon Phi, Clearspeed... yhdessä kiihdyttimessä tehoa jopa 20-80 tavallisen ytimen verran haasteita siirrettävyys uuteen koneeseen: kaikilla omat ohjelmointi kielensä muistinkaista ja MPI kommunikaatio vaikeita käyttää verrattuna rinnakkaistukseen MPI:llä tai OpenMP:llä ratkaisuja yhteiset ohjelmointitavat: OpenCL, OpenHMPP, OpenACC Kepler osaa itse MPI:tä valmiit kirjastot rajoitus: eivät taivu kaikentyyppisiin laskuihin

Kirjastojen käyttö yleiskatsaus Käyttö näkyvät koodissa kuin tavalliset funktiokutsut: sin(x) tarvitsevat kääntäjäparametrejä käännettäessä (oikeastaan preprosessoidessa): -I/polku/kirjaston/headerhakemistoon linkatessa -L/polku/kirjaston/kirjastohakemistoon ja -lkirjastonnimi parametrien järjestys merkitsevä komentorivi luetaan vasemmalta oikealle kirjastosta haetaan vain siihen mennessä vastaan tulleet funktiot

yleiskatsaus Kirjastoja PETSc harvojen matriisien lineaarialgebra iteratiiviset ratkaisimet aika-askeltimet sopii sekä FD, FEM että FVM -koodeihin ei generoi mitään TAO optimointialgoritmeja (vaatii PETScin alleen) myös constraint minimisation FEniCS Finite-Element -kirjasto automaattinen koodingeneroija hilageneraattori

Kirjastoja yleiskatsaus Kielten sovittimia melkein mikä tahansa kielipari: swig C ja C++ ja python: cython Pari suositusta elmer: CSC:n FEM-ohjelmisto OpenFOAM: nestedynamiikkakirjasto, CSC mukana GPAW: CSC mukana kehitystyössä, hyvä tuki

yleiskatsaus Käännös gcc: -O3 -ffast-math -fno-trapping-math -funswitch-loops -march=native intel: -O3 -fast -fp-model fast=2 lue manuaalista mitä kaikkea menetät: mm. nollan etumerkin ja 1:n virheilmoitukset muista, että liukuluvuille a + b + c c + b + a ja 1.0 1 = 0.99999994 HUOM native-vivut eivät toimi cross-compile-ympäristössä Profilointi auttaa hamottamaan mikä maksaa, jopa koodirivin tarkkuudella vaatii vähän vaivannäköä ja uudelleenkääntämisen MPI-liikenteen profilointi vaatii MPI-profilointikirjaston TAU, Scalasca, Cray PAT, PAPI (sis. MPI-profilointi) poor man s choice: gprof ja gcc -pg -g

yleiskatsaus Isot silmukat järjestä oikein: C:ssä p[i][j][k] viimeinen indeksi muuttuu nopeiten fortranissa toisin päin! kääntäjät joskus osaavat vaihaa järjestystä (gcc: -funswitch-loops) yritä vektoroida silmukat: SIMD-käskyt käyttöön älä sekoita vektorikirjastoon (mutta yritä toki saada nekin käyttöön) if-lauseet isoissa silmukoissa vaarallisia kääntäjät joskus osaa ottaa iffit ulos (-funswitch-loops) funktiokutsut isoissa silmukoissa hidastavat koskee myös Fortranin intrinsicejä (ne on oikeasti kirjastofunktioita) trigonometriset, hypertrigonometriset sekä exp ja log voidaan korvata vektorikirjastolla

yleiskatsaus Isot silmukat, osa II cachea rajoitetusti jaettu riveihin : muistista haetaan aina kokonainen rivi paha silmukka hyppää joka kerta rivin alusta seuraavan alkuun harvoin tilaa useammalle kuin kahdelle isolle taulukolle onneksi kääntäjät osaavat (joskus) fissioida silmukoita (gcc: -ftree-loop-distribution) Iso määrä dataa tiedostoissa kirjoita usealta MPI-prosessilta (ei välttämättä kaikilta) välttääksesi pullonkaulat ilman kunnon rinnakkaistiedostoformaattia ja -kirjastoa (HDF5), eri prosessien kirjoitettava eri tiedostoihin print ja sukulaiset voi unohtaa printattu 3.1415926535897931 vie 18 tavua, fwrite(&pi,1,sizeof(double),f) vain 8 lyhyempi printti kadottaa dataa kamala kasa konversioita tehtävänä

yleiskatsaus Muita temppuja MPI Irecv ja MPI Isend: voit laskea datan siirtyessä BLAS, BLAS, BLAS, BLAS; harvoille matriiseille ARPACK ja tiheille LAPACK näistäkin on optimoituja ja optimoimattomia versioita! MPI: harvoille matriiseille PETSc, tiheille esim ScaLAPACK preconditioning: Ax = b sijaan ratkaise AP 1 y = b,px = y ylipäätään valitse moderni algoritmi ja kirjasto

yleiskatsaus Etähallinta pleionessa ilo yleisin IPMI (automaatio, skriptaus) etä BIOS etävirtakytkin virtualisaatio (virt-manager, kvm, virtualbox jne) kerneli kernelissä helpottaa ylläpitovaivaa kun ei ole rautaa vaivana joskus myös tehostaa käyttöä

yleiskatsaus Virransyötöstä front-end ja levyt UPS:n takana laskentaraudalla ei välttämättä UPS:iä CSC:llä on diesel jonka takana on kaikki virtojen kytkentä päälle tapahduttava hallitusti isommassa klusterissa virtapiikit todella suuria

yleiskatsaus Ilmastointi ei parane unohtaa: vie enemmän sähköä kuin itse kone isoissa laitteissa valtava päänsärky top-1: Cray Titan: 8209 kw (green500 puuttuu) green-1: IBM Sequoia: 7890 kw (2.1 GF/W) top-3: K: 12660 kw (830 MF/W) ClearSpeed: 6 GF/W, mutta ei virallisia lukuja 2GF/W muilla nykykiihdyttimillä ja BG/Q (top: AMD FirePro ja Xeon Φ) <1000 MF/W vanhemmilla kiihdyttimillä <400 MF/W ilman

yleiskatsaus Scientific Linux Scientific Linux perustuu RedHatiin perusasennus sisältää suuren määrän tieteellisiä ohjelmistoja lisääkin löytyy Ohjelmiston asentaminen osa ohjelmista asentuu CSC:n toimesta RedHatin paketinhallintatyökalut: yum ja rpm käytä näitä kun vaan mahdollistaa klusteriympäristö pitää huomioida uuden laskentaohjelman näyttävä myös nodeissa!

yleiskatsaus Lisääminen ja poisto varmaankin jo tiedossa Name Service Switch (NSS) määrittää, mistä käyttäjä- ja ryhmätiedot haetaan pleionessa haetaan verkon yli NIS/YP:stä muita vaihtoehtoja LDAP (palvelimelta verkon yli) Windows AD (oikeasti vain rajoitettu LDAP) flat files : /etc/passwd, /etc/group, /etc/shadow: peruslinuxin oletus voidaan pinota useami tapa hoitaa myös kaikki nimi numero -muunnokset

yleiskatsaus Pluggable Authentication Modules (PAM) päättää onko käyttäjä olemassa tyypillisesti kysyy tämän NSS:ltä autentikoi käyttäjät autorisoi käyttäjät alustaa istunnot useita autentikointimenetelmiä (pluggable!) NIS/YP Kerberos LDAP /etc/shadow vastaava lista autorisoinnille ja istunnoille

yleiskatsaus Lisensseistä Scientific Linux on vapaasti käytettävää tyypillisesti ei-vapaat lisenssit kysyväyt lisenssipalvelimelta olisko lisenssiä yleensä maksetaan yhtä aikaa käytettävien mukaan (esim. 10 lisenssiä 20 käyttäjälle) toinen vaihtoehto on käyttää käyttäjäryhmiä kummassakin ongelmansa: esim. Mathematican lisenssi ovat varattuna aina kun Mathematican kerneli on käynnissä PathScale taas antaa lisenssin esim. 10 min kerrallaan jolloin voit menettää lisenssin kesken käännösprosessin! käyttäjäryhmä-ratkaisussa joutuu maksamaan ryhmän jäsenten määrän mukaan

yleiskatsaus Asenna yhteisesti käytettäväksi PETSc 3.3 tai uudempi Paraview 3.14.1 tai uudempi TAO 2.1 tai uudempi (haastava!) PathScale EKOPath (haastava!) TAU/Scalasca HDF5 1.8-sarjan rinnakkaisversio FEniCS 1.1.0 tai uudempi