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

Samankaltaiset tiedostot
Rinnakkaisuuden hyväksikäyttö tietokonepeleissä

Rinnakkaistietokoneet luento S

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Intel Threading Building Blocks

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

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S

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

2 Konekieli, aliohjelmat, keskeytykset

Transaktiot - kertausta

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

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

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

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

811120P Diskreetit rakenteet

MONISÄIKEISTYS PELIMOOTTOREISSA

Ohjelmoinnin peruskurssien laaja oppimäärä

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

5. Luento: Rinnakkaisuus ja jako prosesseihin (+ lyhyesti reaaliajasta) Arto Salminen,

Ohjelmistojen suunnittelu

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

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

Rinnakkaisuus. Tarkastelemme, miten algoritmien suoritusta voi nopeuttaa käyttämällä useaa laskentayksikköä samanaikaisesti.

Kontrollilaitteet. Arsenaali

811120P Diskreetit rakenteet

Ohjelmoinnin peruskurssien laaja oppimäärä

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

LIITE. asiakirjaan. komission delegoitu asetus

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

58131 Tietorakenteet ja algoritmit (syksy 2015)

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Peliohjelmointi: Kontrollilaitteet. Teppo Soininen

Erlang. Miika Heinonen ja Lassi Uosukainen (Group 92) TIE Principles of Programming Languages Seminaariessee. Yleistä

Ohjelmointi 1 / syksy /20: IDE

Harjoitustyön testaus. Juha Taina

Käyttöjärjestelmän rakenne

12. Javan toistorakenteet 12.1

Kirjanpidon ALV-muutos

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

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

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

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

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Verkon värittämistä hajautetuilla algoritmeilla

Ohjelmistoradio tehtävät 4. P1: Ekvalisointi ja demodulaatio. OFDM-symbolien generoiminen

Alfa-ohjelmat, verkkoasennus, asennusohje 2006 syyskuu. Alfa-ohjelmat ASENNUSOHJE. Verkkoasennus-CD, versio Kielioppi & kirjallisuus

11. Javan toistorakenteet 11.1

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

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

Rinnakkaistietokoneet luento S

Ratkaisuehdotukset LH 7 / vko 47

Ohjelmoinnin perusteet, syksy 2006

Johdatus tn-laskentaan perjantai

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Rinnakkaislaskentamallien arviointi: Intel Threading Building Blocks

CUDA. Moniydinohjelmointi Mikko Honkonen

Stabiloivat synkronoijat ja nimeäminen

Zeon PDF Driver Trial

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ohjelmoinnin perusteet Y Python

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

WINE API ja Virtualisointiohjelmistot

Abstraktiot ja analyysi algoritmit ja informaation esitykset

Tarkennamme geneeristä painamiskorotusalgoritmia

5. Rinnakkaisuus ja jako prosesseihin

Algoritmit 2. Luento 13 Ti Timo Männikkö

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

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

Matematiikan ohjelmointi. Joakim von Wright

Clojure, funktionaalinen Lisp murre

12. Javan toistorakenteet 12.1

Stabilointi. Marja Hassinen. p.1/48

Moderneissa grafiikkakorteissa hyödynnetään myös samanlaista toimintamallia

Rinnakkaisten ohjelmien testaus Keskeisiä periaatteita ja strategioita

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

Yhteensopiva ja stabiili. Käsitteellistää suunnittelun. Parempi kuin koskaan aiemmin. Yksityiskohtien tarkka kuvaus. Saumaton kommunikaatio

Hajautetut algoritmit. seminaari syksyllä 2007 vastuuhenkilö Jyrki Kivinen toinen vetäjä Timo Karvi

Muistutus aikatauluista

Harjoitus 2 (viikko 45)

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

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Luento 5. Timo Savola. 28. huhtikuuta 2006

7.4 Sormenjälkitekniikka

Tietorakenteet, laskuharjoitus 7, ratkaisuja

LUENTO 7 TAULUKKOLASKENTA I

Algoritmit 1. Luento 1 Ti Timo Männikkö

Asteri Palkanmaksun uudistuksia 2006

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Autismiosamäärä. Nimi: ********************************************************************************

Pohjoismainen työturvallisuusilmapiirikyselylomake

2.1 b) Muunnokset ja vaakamalli

Matematiikan tukikurssi

TIE Principles of Programming Languages CEYLON

Rinnakkaisohjelmointi.NET-ympäristössä

Transkriptio:

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

Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli Tehtävien riippuvuusanalyysi OpenMP Loppusanat 2

Johdantoa Prosessorien suorituskyvyn kasvulle alkanut tulla raja vastaan Prosessorien valmistajat alkaneet hakea lisätehoja monisäikeisyydestä ja moniydinarkkitehtuureista Ohjelmistoihin pitää lisätä rinnakkaisuutta 3

Rinnakkaisuus Useamman kuin yhden tehtävän suorittamista samanaikaisesti Moniajoa jos vain yksi prosessori Jos useita voidaan ajaa yhtä montaa prosessia kuin on prosessoreita Ongelman jakaminen rinnakkain suoritettaviin osiin, rinnakkaisten osien kommunikoinnin ja synkronisoinnin suunnittelu ja toisiinsa läheisesti liittyvien osien yhdistäminen 4

Amdahlin laki Amdahlin laki on helppo kaava laskea algoritmin tehonlisäys, jos osa siitä muutetaan rinnakkaiseksi. S = suorituskyvyn muutos F = sarjallisen koodin osuus N = prosessorien määrä 5

Amdahlin laki Jos 50 % suorituksesta on rinnakkaista, on kahdella prosessorilla suoritus 1,3- kertaista. Jos peräkkäisen laskennan määrä lähestyy nollaa, nopeutuu algoritmi suoraan suhteessa käytössä olevien prosessorien määrään 6

Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli Tehtävien riippuvuusanalyysi OpenMP Loppusanat 7

Rinnakkaisuuden mallit On kaksi perustapaa jakaa ohjelma rinnakkaisiin osiin Funktionaalinen Tietoperustainen Funktionaalisessa jaetaan ohjelma rinnakkain suoritettaviin säikeisiin Tietoperustainen pyrkii löytämään tietoa jolle suorittaa tehtäviä rinnakkaisesti 8

Funktionaalinen rinnakkaisuus Ideana jakaa pelimoottorin eri komponentit eri säikeisiin Synkroninen malli Asynkroninen malli 9

Synkroninen malli 10

Synkroninen malli Yritetään löytää olemassaolevasta pelisilmukasta osia, jotka voi suorittaa rinnakkain Tehtävien pitäisi olla mahdollisimman riippumattomia Tukee rajallista prosessorien määrää Olemassaolevia komponentteja ei tarvitse muuttaa paljoa 11

Asynkroninen malli 12

Asynkroninen malli Ei pelisilmukkaa vaan tehtävät päivittyvät omia aikojaan omissa säikeissään Tehtävät käyttävät viimeisintä saatavilla olevaa tietoa Saadaan myös toisistaan riippuvat tehtävät rinnakkaisiksi Ongelmana eri tehtävien suoritustiheyden aikatauluttaminen 13

Tietoperustainen malli 14

Tietoperustainen malli Jaetaan pelin hahmojen suoritus eri säikeille Säikeet mahdollisimman tasapainossa Eri säikeissä olevien hahmojen kommunikaatio Erittäin skaalautuva malli Suorituskykyisin malli silloin kun prosessoreita on paljon 15

Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli Tehtävien riippuvuusanalyysi OpenMP Loppusanat 16

Tehtävien riippuvuusanalyysi Tehtävät mahdollisimman riippumattomia Osa tehtävistä tarvitsee toisten tehtävien tarjoamaa tietoa, joten niiden täytyy odottaa näiden suorituksen päättymistä Tietoriippuvuus, hallintariippuvuus, resurssiriippuvuus 17

Tietoriippuvuus Suoritusriippuvuus = vähintään yksi S1:sen tulosteista toimii S2:sen syötteenä Antiriippuvuus = S2 seuraa S1:stä ja joku S2:sen tulosteista vaikuttaa S1:sen syötteisiin Tulosteriippuvuus = tehtävät S1 ja S2 kirjoittavat samaan muistiosoitteeseen. I/O riippuvuus = kaksi tehtävää käyttää samaa tiedostoa. Tuntematon riippuvuus = tehtävien suhteet riippuvat tiedosta, johon viitataan epäsuorasti 18

Bernsteinin ehdot Resurssiriippuvuutta Ehdot: P1 ei lue muistiosoitteita, joihin P2 kirjoittaa P2 ei lue muistiosoitteita, joihin P1 kirjoittaa P1 ja P2 eivät kirjoita samoihin muistiosoitteisiin 19

Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli Tehtävien riippuvuusanalyysi OpenMP Loppusanat 20

OpenMP Ohjelmointirajapinta, joka tukee jaettua muistia käyttävää rinnakkaisohjelmointia useilla alustoilla Kääntäjädirektiivejä, kirjastorutiineja ja ympäristömuuttujia Helppoa ja selkeää Kääntäjä ei juuri tee tarkistuksia 21

OpenMP Yhden rivin lisäyksellä koodiin, saadaan silmukan suoritus jaettua useisiin säikeisiin Selkeä parannus suorituskyvyssä Windowsin säiekutsuilla samaan toimintoon meni 60 koodiriviä 22

OpenMP Perustuu säiejoukkoon: kun ohjelman suoritus tulee rinnakkaiseen osioon, säiejoukkio aktivoituu ja suoritettuaan työnsä, jäävät odottamaan seuraavaa rinnakkaista osiota 23

OpenMP Voidaan käyttää myös funktionaaliseen rinnakkaisuuteen 24

Yhteenveto Useista prosessoreista saatava hyöty riippuu siitä, kuinka suuri osa ohjelman tehtävistä voidaan suorittaa rinnakkain Rinnakkaisuuden mallit tarjoavat tapoja jakaa ohjelma rinnakkaisiin osiin Rinnakkaisessa suorituksessa pitää ottaa huomioon tehtävien väliset riippuvuudet 25