Johdatus rinnakkaislaskentaan Markus Inkeroinen Optimointiryhmän seminaari

Samankaltaiset tiedostot
Numeriikan kirjastoja

S Rinnakkaislaskenta laskennallisessa tieteessä:

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

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

Rinnakkaistietokoneet luento S

CUDA. Moniydinohjelmointi Mikko Honkonen

Samanaikaisuuden hallinta

Datahajautettu klusterointi. ITKC35 Rinnakkaislaskenta Harjoitustyö. Sami Äyrämö

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh

Rinnakkaisalgoritmit ja rinnakkaistietokoneet

Algoritmit 1. Luento 3 Ti Timo Männikkö

GPU-laskennan optimointi

Intel Threading Building Blocks

2 Konekieli, aliohjelmat, keskeytykset

Algoritmit 1. Luento 1 Ti Timo Männikkö

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Makrojen mystinen maailma lyhyt oppimäärä

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3

TEKNIIKKA JA LIIKENNE. Tietotekniikka. Ohjelmistotekniikka INSINÖÖRITYÖ RINNAKKAISLASKENTA MPI-YMPÄRISTÖSSÄ

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Tietokonearkkitehtuuri 2 TKT-3201 (5 op)

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Tietokoneet täh++eteessä

Luento 1 Tietokonejärjestelmän rakenne

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

Luento 1 Tietokonejärjestelmän rakenne

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

automaattisen tietotyypin tunnistamisen osalta, minkä Smith koki olevan avaintekijä onnistuneen rinnakkaisen ohjelmointikielen toteuttamisessa.

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

TK Palvelinympäristö

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Efficiency change over time

Rinnakkaisuuden hyväksikäyttö tietokonepeleissä

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

4. Lausekielinen ohjelmointi 4.1

Dynaaminen ohjelmointi ja vaikutuskaaviot

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

CT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa

Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)

Käännös, linkitys ja lataus

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Koulutuksen digitalisaatio Tulevaisuutta kohti

Scheduling of Genetic Analysis Workflows on Grid Environments (valmiin työn esittely) Arttu Voutilainen

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Käyttöjärjestelmät: poissulkeminen ja synkronointi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

C++11 seminaari, kevät Johannes Koskinen

Sovellusarkkitehtuurit

Esimerkkejä vaativuusluokista

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

11/20: Konepelti auki

Rinnakkaistietokoneet luento S

Tietorakenteet ja algoritmit - syksy

Page 1 of 9. Ryhmä/group: L = luento, lecture H = harjoitus, exercises A, ATK = atk-harjoitukset, computer exercises

JOHDATUS TEKOÄLYYN TEEMU ROOS

8/20: Luokat, oliot ja APIt

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

HOJ J2EE & EJB & SOAP &...

S Rinnakkaislaskenta laskennallisessa tieteessä: Matriisilaskenta. Mika Prunnila S T

THM-MALLIN NUMERIIKKA. Antti Niemistö, Janne Martikainen Numerola oy

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

PC-LAITTEEN TESTAAMINEN

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Työasema- ja palvelinarkkitehtuurit (IC130301) Apumuistit. Kiintolevyt. 5 opintopistettä. Petri Nuutinen

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

Sisältöä SÄIKEET, SMP

Ohjelmoinnin peruskurssien laaja oppimäärä

Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi

ASCII-taidetta. Intro: Python

Other approaches to restrict multipliers

Use of spatial data in the new production environment and in a data warehouse

JOHDATUS TEKOÄLYYN TEEMU ROOS

MUISTIPIIRIT H. Honkanen

Tietorakenteet ja algoritmit

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Test-Driven Development

Ohjelmoinnin peruskurssien laaja oppimäärä

Rinnakkaistietokoneet luento S

.NET ajoympäristö. Juha Järvensivu 2007

Integrointialgoritmit molekyylidynamiikassa

Moniydinsuorittimien rinnakkaisohjelmointi

Ohjelmistoarkkitehtuurit

RINNAKKAINEN OHJELMOINTI A,

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Transkriptio:

Johdatus rinnakkaislaskentaan Markus Inkeroinen Optimointiryhmän seminaari 9.2.2004 0

MITÄ ON RINNAKKAISLASKENTA? 1

A parallel computer is a set of processors that are albe to work cooperatively to solve a computational problem, Ian T. Foster. Rinnakkaisohjelmoinnin avulla voidaan laskentatehtävä jakaa useammaksi osatehtäväksi suoritettavaksi usealla prosessorilla. Näin laskutehtävän ratkaisemiseen kuluvaa seinäkelloaikaa voidaan usein merkittävästi lyhentää, Juha Haataja, Jari Järvinen ja Yrjö Leino (CSC). "Sequential programming is only the expression of our inability to transfer the natural parallelism of the world to a machine," Craig C. Douglas, Gundolf Haase and Ulrich Langer. 2

MIHIN RINNAKKAISLASKENTAA KÄYTETÄÄN? 3

-Sää- ja ilmastomallit -Teollisuusprosessien simuloiminen -Mekaniikka ( törmäyskokeet ) -Kuvankäsittely, viihdeteollisuus -Suurien tietomäärien käsittely (data mining) -Laskennallinen tiede (molekyylimallit, virtauslaskenta,...) -Keinotodellisuus... 4

MIKSI RINNAKKAISLASKENTAA KÄYTETÄÄN? 5

-Laskut kestävät muuten hyvin kauan -Laskut kestävät liian kauan -Tarvitaan paljon muistia -Helpompi, halvempi? 6

RINNAKKAISKONEIDEN LUOKITTELU 7

Luokittelu muistin mukaan -Karkealla jaolla on kahdenlaisia rinnakkaiskoneita -SMP-tietokone (symmetric multiprocessor): prosessoreilla yhteinen keskusmuisti. (Shared Memory, jaetun muistin koneet, yhteisen muistin koneet.) -MPP-tietokone (massively parallel prosessors): prosessoreilla omat hajautetut keskusmuistit. (Distributet Memory, hajautetun muistin koneet.) 8

SMP-tietokone 9

-Prosessoreilla yhteinen muisti SMP-tietokone -Prosessoreja yleensä vähän (Josefissa 8 prosessoria) -Kommunikointi muistin välityksellä -Helppo ohjelmoida -Helppo tehdä ei-determististä koodia -Peräkkäisohjelma (sequential code) helppo rinnakkaistaa askel askeleelta -Skaalautuu hyvin pienillä prosessorimäärillä, suurilla muistin käyttö pullonkaulana -Kallista tekniikkaa 10

SMP-tietokone UMA (Uniform Memory Access): Kaikki prosessorit käyttävät (lukevat/kirjoittavat) koko muistia yhtä nopeasti. (Välimuistia ei huomioida.) NUMA( Non Uniform Memory Access): Muistin käyttöön kuluva aika riippuu prosessorin sijainnista. DMS (Distributed Shared Memory), Virtual Shared Memory: Koko muisti hajautettu fyysisesti prosessorien kesken, mutta sitä voidaan käyttää kuten yhteistä muistia. esim. Cray T3D 11

MMP-tietokone -Jokaisella prosessorilla oma muisti -Kommunikointi viestinvälityksen avulla -Mahdollisuus hyvin skaalautuviin ohjelmiin (parempi kuin SMP-koneissa) -Peräkkäisohjelman rinnakkaistaminen hankalaa (ei asteittain) -Laskennan ja kommunikoinnin välinen suhde merkittävä - Halpaa tekniikkaa 12

MPP-tietokone 13

Klusteriarkkitehtuuri Prosessorit muodostavat solmuja (node), joissa yhteinen muisti. Solmut kommunikoivat viestinvälityksen avulla. esim. IBM SP 10 solmua, jokaisessa 4 prosessoria, (Agora). IBM SC 16 solmua, jokaisessa 32 prosessoria. Solmuissa sisäinen rakenne, (CSC, Espoo). Terascale GRID Computers Laskentakeskukset muodostavat jättimäisen laskentaverkon. Nopeat yhteydet. Tietosuojaongelmat? 14

Rinnakkaisohjelmoinnin mallit 15

Ohjelmointimallit ja standardit: (Ville Savolainen, CSC) -Viestinvälitys (MPI-kirjasto) -Yhteisen muistin mallit (OpenMP) -Hajautetun ja yhteisen muistin hybridimalli (MPI ja OpenMP) -Datarinnakkainen malli (HPF) -Yksisuuntainen datanvälitys (SHMEM) -Säikeet(pthreads) - OpenMP käyttää Lähde: http://www.csc.fi/suomi/koulutus/openmp/ 16

Viestinvälitys -Nykyisin yleisin rinnakkaisohjelmointimalli -Tavallisesti ohjelma standardia FORTRAN 77, Fortran 90/95 tai C/C++ -koodia -Jokaisella prosessilla omat yksityiset muuttujansa -Kommunikointi kutsumalla viestinvälityskirjaston aliohjelmia -Yleensä jokainen prosessori ajaa samaa ohjelmaa, SPMD-malli (Single Program Multiple Data) -Käyttämällä prosessien tunnisteita (identifier, ID, whoami) saadaan eri prosessit ajamaan eri osia yhteisestä ohjelmakoodista 17

Yhteisen muistin malli (Shared memory) -Kaikilla tehtävillä yhteinen muistiavaruus -Kommunikointi muistin kautta -Jako yhteisiin (shared) ja yksityisiin muuttujiin (private) -Muistinkäytön hallinta (lukot ja direktiivit OpenMP:ssä) -Helppo ohjelmoida, helppo tehdä virheitä 18

Datarinakkainen malli (Data parallel) -Käytetään omaa ohjelmointikieltä, yleensä Fortranin tai C-kielen laajennus. -Kommunikointi ja suorituksen koordinointi eivät näy ohjelmoijalle (ei pääse vaikuttamaan). -Monesti ohjelmoijalle jää pelkästään datanjako, helppo ohjelmoida. 19

Rinnakkaisohjelman suunnittelu Lähde: Designing and Building Parallel Programs, Ian T. Foster. 20

Hyvältä rinnakkaisalgoritmilta ja -ohjelmalta vaadittavia ominaisuuksia: - Rinnakkaistuvuus (concurrency). Tehtäviä on pystyttävä suorittamaan yhtäaikaisesti. - Skaalautuvuus (scalability). Algoritmin/ohjelman tulee skaalautua automaattisesti prosessorimäärän muuttuessa. - Lokaalisuus (locality). Prosessien tulee käyttää mahdollisimman paljon lokaalia (omaa) muistia ja vähän etäistä (remote) muistia. - Modulaarisuus (modularity). Ohjelma tulisi pystyä jakamaan pienempiin osiin. HUOM! Hyvä peräkkäisalgoritmi ja hyvä rinnakkaisalgoritmi samalle tehtävälle voivat olla hyvinkin erilaisia. 21

PCAM-malli 1. Laskentatehtävän jakaminen (alkeis)tehtäviin (task) (Partitioning). - Laskentatehtävä ja/tai siihen käytettävä data jaetaa suureeen määrään osatehtäviä. - Pyritään mahdollisimman suureen rinnakkaistuvuuteen. 2. Viestintä (Communication). - Määritellään tehtävien suorittamiseen vaadittava tehtävien välinen viestintä ja sen rakenne. 3. Yhteenliittäminen (Agglomeration). - Tarkastelu siirtyy tehokkuuden saavuttamiseen. - 1. kohdassa luotuja osatehtäviä kasataan yhteen paremman tehokkuuden saavuttamiseksi. 22

4. Tehtävien jakaminen prosesoreille (Mapping). - Tehtävät jaetaan prosessorien kesken mahdollismman tehokkaalla tavalla. HUOM. Yleensä SPMD-ohjelmat antavat luoda vain yhden prosessin prosessoria kohden, joten tämä on huomioitava kohdassa 3. Kohdissa 1 ja 2 pyritään rinnakkaistuvuuteen ja skaalautuvuuteen. Kohdissa 3 ja 4 tavoitteena on tehokkuuden lisääminen esim. lisäämällä lokaalisuutta. Mallia ei tule käsittää lineaariseksi. 23

TYÖNJAKAMINEN 24

Trivial Parallelism, nolo rinnakkaistaminen - Yksinkertaisin työnjakamismenetelmä. - Ajetaan samaa peräkkäiskoodia usealla prosessorilla samanaikaisesti. Parametrien lähtöarvot erilaiset. - Ei tarvita prosessorien välistä viestintää. - Ei auta isoissa tehtävissä. 25

Functional Decomposition 26

Functional Decomposition - Pitää varmistaa, että osatehtävät ovat yhtä isoja. - Startup ja shutdown -kustannukset. - Huono skaalautuvuus. - Yleensä helppo määritellä tarvittava viestintä. - Sopii vain osalle tehtäviä. 27

Isäntä-renki malli (Master Slave, Task Farms) 28

Isäntä-renki malli - Helppo ohjelmoida. - Dynaaminen -> kuormantasaus helppoa. - Laskennan lopettamisessa voi olla tyhjäkäyntiä. - Osatehtävien pitää olla toisistaan riippumattomia. - Isäntä voi muodostua pullonkaulaksi. - Vaatii paljon viestintää. 29

Aluejakomenetelmä (Domain Decomposition) 30

Aluejakomenetelmä - Jaetaan osa-alueet prosessorien kesken. - Voidaan hyödyntää virtuaalitopologiaa. - Jaon ei tarvitse olla säännöllinen. - Vaatii usein tiedon vaihtamista (naapuri)prosessorien kesken. - Viestinnän suunnittelu voi olla hankalaa. 31

Aluejakomenetelmä DO WHILE(.NOT.convergent) DO j=1,n DO i=1,n B(i,j)=0.25*( A(i-1,j)+A(i+1,j)+A(i,j-1)+A(i,j+1) ) END DO END DO DO j=1,n DO i=1,n A(i,j)=B(i,j) END DO END DO! convegence test END DO 32

Aluejakomenetelmä 33

VIESTINTÄ 34

Kahden välinen viestintä, (Point-to-Point) Kun vaihdetaa dataa kahden prosessin välillä niin viestintään kuluu aikaa arviolta t com = t s + mt w, missä t s on latenssiaika (startup time), m on viestin pituus, t w on sanaa kohti tarvittava aika. 35

Kollektiivinen viestintä Esim. One-to-All Brodcast t com = (t s + mt w ) log 2 p, p on prosessorien lukumäärä. 36

TEHOKKUUS 37

Relative Parallel Speedup S p (n) = T (n, 1) T (n, p), missä n=tehtävän koko, p=prosessorien lukumäärä, T (n, p)=p:llä prosessorilla tehtävän suorittamiseen kuluva aika. CSC:n vaatimus: Nopeuden pitää kasvaa 50% kun prosessorien lukumäärä kaksinkertaistuu. 38

Total (absolute) Speedup S p (n) = T best(n, 1) T (n, p), missä T best (n, 1) on parhaan tiedossa olevan peräkkäisohjelman suoritusaika. Parallel Relative Efficiency E p (n) = S p(n) p = T (n, 1) pt (n, p). 39

Suoritusaika (s): MPI:llä rinnakkaistettu liittogradienttimenetelmä n/p 1 2 4 64 0.0128237 0.0148795 0.0133744 256 0.0786092 0.0424649 0.0310696 1024 1.7684364 0.5866756 0.3191068 2048 7.2565519 3.6934085 2.0111091 4096 29.3729902 14.653452 7.6143538 Speedup: n/p 2 4 64 0.8618 0.9588 256 1.8512 2.5301 1024 3.0143 5.5418 2048 1.9647 3.6082 4096 2.0045 3.8576 40

41

Message Passing Interface - MPI 42

MPI - Viestinvälityskirjasto. - SPMD-ohjelmointitapa. - Suosituin työkalu tieteellisessä laskennassa. - Sovittu standardi. - Toimii heterogeenisessa ympäristössä. - Versiot MPI-1 ja MPI-2. - Kielenä C/C++ tai Fortran. 43

MPI:n ominaisuuksia - Monipuolinen kahdenvälinen viestintä. - Paljon kollektiivisia operaatioita. - Ryhmäviestintä on joustavaa ja nopeaa ohjelmoida. - Laskentatopologoita voi luoda tarpeen mukaan. - Omia tyyppejä voi määritellä ja välittää. 44

MPI MPI-1 sisältää yli 120 rutiinia, mutta kuudella voi ohjelmoida (melkein) kaiken. MPI_INIT MPI_COMM_SIZE MPI_COMM_RANK MPI_SEND MPI_RECV MPI_FINALIZE Rinnakkaisohjelmointi MPI:llä on helppoa. Kannattaa kokeilla! 45

OpenMP -Open Multi Processing 46

OpenMP - Jaetun muistin koneiden teollisuusstandardi. - Koostuu kääntäjädirekdiiveistä, kirjastorutiineista ja ympäristömuuttujista. - Direktiiveihin voidaan lisätä tarkentimia (clauses). - Kielenä C/C++ tai Fortran. - Mahdollistaa sekä suurijakoisen (coarce grain ) että hienojakoisen (fine grain ) rinnakkaistamisen. - On mahdollista kirjoittaa koodi siten, että se toimii sekä rinnakkaisohjelmana että peräkkäissohjelmana ilman OpenMP:tä. - Mahdollistaa astettaisen rinnakkaistamisen. 47

OpenMP - Direktiivin tunniste:!$omp - Ehdollisen kääntämisen tunniste:!$ - Rinnakkaisalue muodostetaan direktiiviparilla!$omp PARALLEL!$OMP END PARALLEL. - Ennen ja jälkeen rinnakkaisaluetta ohjelmaa suorittaa yksi säie. - Rinnakkaisalueen alussa muodostetaan ryhmä säikeitä. - Muuttujat joko yhteisiä (shared) tai säikeen yksityisiä (private). (- OpenMP-koodin testaaminen syö hermoja. :) 48

OpenMP 49

Materiaalia Efficient and Accurate Parallel Genetic Algorithms, by Erick Cantu- Paz. A tutorial on Elliptic PDE Solvers and their Parallelization, by Douglas, Haase and Langer. TOP500 SUPERCOMPUTER SITES: http://www.top500.org/ Introduction to Parallel Computing, by Ananth Grama, Anshul Gupta, George Karypis ja Vipin Kumar. Designing and Building Parallel Programs, by Ian Foster. http://www-unix.mcs.anl.gov/dbpp/text/book.html 50

EPCC Edinburgh Parallel Computing Centre http://www.epcc.ed.ac.uk/ Message Passing Interface Forum http://www.mpi-forum.org/index.html Rinnakkaisohjelmointi MPI:llä,Juha Haataja ja Kaj Mustikkamäki. http://www.csc.fi/oppaat/mpi/ MPI: The Complete Reference, by Marc Snir, Steve Otto, Steven Huss- Lederman, David Walker, and Jack Dongarra. http://www.netlib.org/utk/papers/mpi-book/mpi-book.html Parallel Programming with MPI, by Peter Pacheco. Using MPI, by William Gropp, Ewing Lusk and Anthony Skjellum. 51

Using MPI-2,by William Gropp, Ewing Lusk and Rajeev Thakur. www.openmp.org http://www.openmp.org/ Official OpenMP Specifications. Parallel Programming in Fortran 95 using OpenMP, by Miguel Hermanns. Parallel Programming in OpenMP, by Rohit Chandra, Ramesh Menon, Leo Dagum, David Kohr, Dror Maydan and Jeff McDonald. 52