Supertietokoneiden tehoa janotaan: miten saada enemmän tehoa irti?

Koko: px
Aloita esitys sivulta:

Download "Supertietokoneiden tehoa janotaan: miten saada enemmän tehoa irti?"

Transkriptio

1 Tietoenkäsittelytiede Heinäkuu 2 sivut 2 2 Toimittaa: Ari Korhonen c kiroittaa(t) Supertietokoneiden tehoa anotaan: miten saada enemmän tehoa irti? Jan Westerholm, Mats Aspnäs & Artur Signell Åbo Akademi Informaatioteknologian laitos Tausta Supertietokoneiden ilmoitetut laskentatehot ovat vuosi vuodelta kasvaneet. Top 5 -listan [] kärkikoneet ovat parinsadantuhannen laskentaytimen koneita, otka teoreettisesti pystyvät tekemään yli 5 liukulukulaskutoimitusta sekunnissa eli petaflopsea. Gordon Mooren havainnon mukaan transistorien lukumäärä kaupallisissa mikropiireissä kaksinkertaistuu oka toinen vuosi. Näistä transistoreista on ennen rakennettu yhä kehittyneempiä tietokonearkkitehtuurea, mutta viime vuosina niitä on käytetty varsinkin prosessoreiden laskentaytimien lukumäärän kasvattamiseen. Vaativien laskentatehtävien suorittamiselle näyttäisi siis olevan vuosi vuodelta yhä tehokkaampia koneita käytettävissä, a laskentakapasiteetille on atkuvasti kasvava kysyntä. Supertietokoneiden tehoa anotaan a sitä näyttäisi olevan palon, mutta saavatko ohelmat kaiken tehon irti? Tietokoneohelmien rinnakkaistuksella käyttää on pyrkinyt sekä saamaan käyttöönsä suurempia muistimääriä, että lyhentämään pitkiä aoaikoa. Lyhentyneiden aoaikoen ansiosta ohelmia voidaan käytännössä aaa useammin, olloin ohelman toiminta, mahdolliset raoitteet, herkkyys alkuparametreille a ohelman tulokset ymmärretään paremmin. Tässä mielessä voi sanoa, että tieteellisten tulosten laatu paranee rinnakkaistumisen myötä. Jos sama laskenta voidaan aaa samoilla resursseilla nopeammin koodin optimoinnin ansiosta, säästyy energiaa a työaikaa, a laskentaresurssea voidaan hyödyntää paremmin palvelemalla useampia käyttäiä. Artikkelin kiroittaat kuuluvat suurteholaskennan ryhmään, oka viime vuosina on osallistunut useaan supertietokoneohelmien tehokkuutta a skaalautuvuutta parantavaan tutkimusproektiin [2, ]. Yhteistyökumppanit olivat supertietokoneille ohelmiaan tekevistä tutkimusorganisaatioista, mutta myös avointa lähdekoodia kehittävistä organisaatioista esimerkiksi bioinformatiikassa. Mukana oli muun muassa ydinfuusiofyysikoita, oille annetaan satoa tuhansia cpu-tuntea yhteiseurooppalaisissa suurteholaskentakeskuksissa. Kysymys, ohon etsimme vastausta, on seuraava: Miten supertietokoneissa aettavat ohelmat voivat paremmin hyödyntää käytettävissä olevat tehoresurssit? Tekemämme empiiriset havainnot suurtehokoneissa pyörivistä ohelmista perustuvat erityisesti ohelman rinnakkaistukseen, välimuistin käytön optimointiin, sekä vektorilaskentaan. Tarkasteltavat ohelmat olivat osana kolmea tutkimus- OHJE KIRJAPAINOLLE: B5-arkin vasen- a yläreuna kohdistetaan A4-arkin vasempaan a yläreunaan. Näin pitäisi marginaaliksi tulla taitteen puolella noin mm a muualla noin 22 mm.

2 22 Supertietokoneiden tehoa anotaan kokonaisuutta. Ensimmäisessä tutkittiin oukko kansallisen supertietokeskuksen CSC:n supertietokoneissa aettavia eri tutkimusryhmien kiroittamia ohelmia, sekä yleisessä käytössä olevaa avointa lähdekoodia. Toisessa proektissa saimme EU-yhteistyön kautta käyttöömme eurooppalaisten ydinfuusioryhmien kiroittamia lähdekoodea, a kolmanteen ryhmään laitamme tässä muiden yhteydenottoen kautta tulleita ohelmia. Ohelmointikieliä oli useampia: Fortran, C, C++, Python/C, sekä OCaml/C. Käyttöärestelmiä hallitsi Linux muutaman Windowsohelman lisäksi, a mikroprosessoriarkkitehtuurit olivat x86 a PowerPC. Sovellusalueita olivat pääasiassa fysiikan simulaatiot, kuten ydinfuusioplasmat, virtausmekaniikka, ydinkaskadit eli hiukkassuihkun simulointi mm. kudoksen läpi a konfokaalimikroskopia, sekä bioinformatiikan ohelmistot. Ohelmat olivat kiroittaneet fyysikot, kemistit sekä tietoenkäsitteliät ympäri Suomea, Eurooppaa a USA:ta. Ehkä pienenä yllätyksenä tuli havainto, että oitakin koodea oli kehitelty hyvinkin pitkään, opa 2 vuotta, mikä näkyikin selvästi vanhimmista osista lähdekoodia. Näin vanhoen koodien atkuva kehitys on varmaan ollut haasteellista, varsinkin kun rinnakkaiskoneet yleistyivät vasta noin 5 vuotta sitten. 2 Tavoitteet Alusta asti oli selvää, ettemme oman resurssipulamme takia voineet lähteä rinnakkaistamaan meille lähetettyä sekventiaalisia koodea. Sen siaan keskityimme o kertaalleen rinnakkaistettuen ohelmien parantamiseen a tehostamiseen. Tämän lisäksi suoritimme sekä sekventiaalisten että rinnakkaistettuen koodien optimointia. Jälkimmäisessä tapauksessa tavoitteena on saada sama numeerinen tulos kuin ennen optimointia, mutta nopeammin hyödyntämällä välimuistin käyttöä sekä vektorilaskentaa. Joissakin tapauksissa koodin optimointiin saattaa sisältyä tehtävien laskutoimitusten uudelleenärestelyä, olloin mikroprosessorien äärellisen liukulukulaskentatarkkuuden eiassosiatiivisuudesta seuraa, ettei 5 numeron tarkkuudella välttämättä saada samoa tuloksia kuin ennen. Joillekin koodinomistaille tämä aiheutti onkun verran hermostuneisuutta, koska oli totuttu saamaan tietynnäköisiä numeerisia tuloksia. Meidän mielestämme ei ole syytä huoleen: os lasketaan eri ärestyksessä saadaan usein eri tulos, mutta mikään ei viitannut siihen että alkuperäinen laskuärestys olisi ollut numeerisesti tarkempi tai stabiilimpi. Emme puuttuneet ongelmanasetteluun, eli emme kysyneet miksi tietyt laskut haluttiin suorittaa. Emme myöskään puuttuneet valittuun numeeriseen algoritmiin, ellei kyse ollut tarkasti modularisoidun numeerisen algoritmin korvaamisesta toisella implementaatiolla, tyypillisesti avoimen lähdekoodin kirastorutiinilla. Tässä mielessä voi sanoa että tekemämme koodin optimointi oli lähinnä o tehtyen virheiden paikkaamista: laskettavat suureet a algoritmit oli o valittu a pyrimme pelkästään virtaviivaistamaan laskuen suoritusta olemassa olevalle mikroprosessoriarkkitehtuurille. Metodologia Saatuamme uuden koodin sovelsimme siihen oukon perustyökalua, oiden avulla pyrittiin hahmottamaan potentiaaliset optimointikohteet koodissa. Tämän lisäksi osoittautui hyödylliseksi tarkistaa mahdollisia muistivuotoa, oissa ohelma ohelmointivirheen seurauksena kiroittaa varaamattomalle muistialueelle. Yllättävää oli, että moni käyttää voi elää sen kanssa, että ohelma saattaa muistivuodon takia kaatua epäsäännöllisin väliaoin.

3 Westerholm, Aspnäs, Signell 2. Koodin katselmus Hyvin monelle tutkimukseemme osallistuneelle koodille oli ominaista, että ohelma aettiin omassa ympäristössä, eikä koskaan ollut ilmennyt tarvetta lähettää koodia ulkopuoliselle taholle. Tilanne oli siis uusi kun pyysimme saada lähdekoodin sekä sopivia lähtöparametrea pienehköä aoa varten, ota käytettäisiin vertailupisteenä koodinoptimoinnin antaman nopeutuksen mittaamiseksi. Se, että ohelmaa nyt käytettäisiin uudessa ympäristössä ilman koodinkehittäien valvovaa silmää, aiheutti todennäköisesti pienen paineen saattaa koodi sellaiseen kuntoon, että se toimisi uudessa paikassa. Yksi merkki tästä oli usein esiintynyt ilmoitus kooditoimituksen viivästymisestä, koska oli ilmennyt ennen esiintymättömiä ongelmia. Saatuamme koodin loimme yleensä pikaisen katseen lähdekoodiin a sen yleiseen rakenteeseen. Tästä ilmeisen yksinkertaisesta toimenpiteestä oli usein hyötyä, sillä uudet silmäparit erottavat koodista toisia asioita kuin kehittäien silmät. Meidän tehtävämme oli keksiä ns. tyhmiä kysymyksiä ohelman rakenteesta a oskus yksityiskohdistakin, a tällä tavalla löysimme usein koodia, oka oli syntaktisesti oikein mutta toiminnallisesti väärin..2 Profilointi Ennen kuin lähdettiin optimoimaan koodea pyrittiin paikallistamaan ne kohdat tai metodit otka potentiaalisesti kannattaisi optimoida. Jos lähtee optimoimaan kaikkea, on aina olemassa riski, että optimointitulos on hyvä metodin suoritusaika lyhenee mutta sillä ei ole uurikaan vaikutusta kokonaissuoritusaikaan. Syynä tähän on yleensä se, että metodia kutsutaan vain muutama kerta suorituksen aikana a/tai kyseisen metodin suorittamiseen menee erittäin pieni osa kokonaissuoritusaasta. Parhaiten optimoinnit purevat kun ne kohdistetaan sellaisiin metodeihin, oihin suuri osa kokonaisaasta uppoaa. Muutamassa tapauksessa koodinomistailla oli näppituntuma mitkä kohdat voisivat olla hyödyllisiä optimoida, kun taas toisissa ei ollut lainkaan tietoa mihin osiin kannattaisi keskittyä. Profilointityökalut, kuten gprof, Crayn craypat sekä Intelin VTune, eivät ota mielipiteitä tai näppituntumia huomioon, vaan antavat raakaa dataa ohelman suoritusaasta a muistinkäytöstä. Perusprofilointiohelma kertoo miten palon aikaa kuluu okaiseen metodiin a miten monta kertaa kyseistä metodia kutsutaan. Kehittyneemmät profilointityökalut osaavat myös kertoa miten hyvä välimuistinkäyttö oli, miten tehokkaasti laskuoperaatioita tehtiin (flops) a rinnakkaisohelmissa miten palon aikaa käytetään kommunikaatioon, odotteluun sekä varsinaiseen laskentaan. Monesta ohelmasta löytyi yksi tai muutama metodi, ossa merkittävä osa kokonaissuoritusaasta vietettiin. Yleensä kyse oli suhteellisen lyhyistä a ytimekkäistä metodeista, oita kutsuttiin ohelmissa erittäin monta kertaa. Jos tällaisesta metodista saa % tai opa 5% suoritusaasta pois, näkyy tämän vaikutus selvästi kokonaissuoritusaassa. Yleensä eniten kiinnostava profilointia optimointikohde on suoritusaika: tuloksia halutaan nopeammin. Muistinkäyttö tulee tyypillisesti kuvioon vasta kun tämä muodostuu ongelmaksi: muisti loppuu kesken tai ohelma kaatuu muistivuodon tai puskuriylivuodon takia. Muistivuodot a puskuriylivuodot löytyvät yleensä muistinkäyttöanalysointityökalulla, kuten Valgrind [8], kunhan oppii tulkitsemaan sen tuloksia. Kokemus kertoo, että muistiongelmat kannattaa korata saman tien kun ne ilmenevät, vaikka ne eivät haittaisikaan ohelman suoritusta. Näin säästytään ongelmilta myöhemmin. Muistivuo-

4 24 Supertietokoneiden tehoa anotaan toen koraaminen vähentää myös ohelman muistinkäyttöä a voi sallia suurempien ongelmien simulointia. Rinnakkaistetun ohelman muistinkäyttö voidaan kiroittaa yksittäisen prosessorin kannalta muotoon M = S + D, missä M on yhden prosessorin muistinkäyttö, S prosessorin muistinkäyttö, oka ei riipu kokonaisprosessorimäärästä, a D muistinkäyttö, oka on riippuvainen prosessorimäärästä. Jotta ohelmaa voidaan aaa suuremmalla prosessorimäärällä, täytyy muistinkäytön kannalta olla voimassa D >> S. Ideaalitilanteessa S =, olloin muistinkäyttö prosessorissa voidaan puolittaa tuplaamalla käytettyen prosessoreiden määrä. Profilointityökalut kertovat M:n, mutta S:n a D:n suhde selviää vasta kun ohelma profiloidaan eri prosessorimäärillä a/tai parametreilla. Tarkasteltavista ohelmista yksi näytti profiloinnissa, että S D. Tästä ohtuen M oli lähes vakio a melkein riippumaton prosessorimäärästä, eikä rinnakkaistetulla ohelmalla voitu simuloida monimutkaisempaa ongelmaa kuin yhdellä prosessorilla, koska muisti loppui kesken. Syykin selvisi kooditutkiskelun älkeen: käytettiin tiheää matriisia arvoen väliaikaistallennukseen a matriisin koko oli valittu suoraan verrannolliseksi käytettyyn simulaatioavaruuden hilan kokoon. Vaihtamalla matriisi dynaamiseen tietorakenteeseen muistinkäyttö muuttui täysin siten, että D S a hilaa oli mahdollista kasvattaa kunhan käytössä oli tarpeeksi prosessoreita. 4 Rinnakkaistaminen Monen tieteellisen ohelman kehitys on aloitettu yli 5 vuotta sitten, tyypillisesti Fortran77-kielellä. Nykyaikaiset rinnakkaisohelmointikirastot tukevat kyllä Fortran77:ä, mutta ohelmat on alunperin suunniteltu a implementoitu täysin sekventiaalisiksi aikakaudella, olloin rinnakkaiskoneita ei vielä ollut yleisessä käytössä. Vuosien varrella ohelmia on muutettu osittain rinnakkaisiksi pienin askelin rinnakkaistamalla keskeisiä silmukkarakenteita a akamalla simuloitava hila useammalle prosessorille koskematta oleellisesti muihin sekventiaalisiin osiin. Rinnakkaisohelmointiparadigmaa ei siten seurattu, vaan koodia on rinnakkaistettu vain osin. Yleinen ohe rinnakkaisohelmien kiroittaille on suunnitella sekä algoritmit että tietorakenteet (vektorit, matriisit, struktuurit, ne.) siten, että tiedot voidaan luontevalla tavalla akaa pienempiin yksikköihin, otka ovat suureksi osaksi toisistaan riippumattomia. Riippumattomuus tarkoittaa, että kukin prosessori voi ainakin pääsääntöisesti tehdä laskentaa muiden prosessorien datasta riippumatta, kuitenkin siten, että välillä saatetaan lähettää suhteellisen pieniä datamääriä muutamalle toiselle prosessille. Ohelman osittaisenkin rinnakkaistamisen potentiaalinen hyöty on ilmeinen: suurempi laskentatyö aetaan yhä useammalle prosessorille, oten os rinnakkaislaskennassa tehtävä työ on verrannollinen hilapisteiden lukumäärään a rinnakkaistaminen onnistuu hyvin (esim. hilapisteessä tehtävä laskutoimitus tarvitsee vain lähinaapuripisteiden arvoa) voimme arvioida, että rinnakkaislaskenta-aika pysyy liki vakiona mikäli ongelmakoon a prosessorilukumäärän kaksinkertaistaminen tehdään samanaikaisesti. Tässä on oletettu hieman yksinkertaistaen, että kommunikaatio prosessorien välillä ei muodostu pullonkaulaksi. Yksi rinnakkaistamisella periaatteessa saavutettava hyöty on se, että tietty ohelma voidaan nopeuttaa, eli tietyn kokoinen simulointi voidaan laskea nopeammin. Rinnakkaistamisen tuoma nopeutustekiä SpeedUp prosessori-

5 Westerholm, Aspnäs, Signell 25 määrän funktiona lasketaan kaavasta SpeedU p(n) = RunTime()/RunTime(N) ossa RunTime(N) on ohelman aoaika N:llä prosessorilla. Käytännössä harvaa ohelmaa kuitenkaan aetaan suuremmalla prosessorimäärällä kuin on tarpeen. Jonkinlaista minimaalista aatusmallia edustaa havaitsemamme käytäntö, onka mukaan simuloinnin tarvitsema muistimäärä kiinnittää käytettävien prosessorien lukumäärän. Oletetaan, että meillä on simulointiohelma, onka kokonaisaasta tietty osuus on sekventiaalista, kun aetaan "pientä" ongelmaa ehkä 8 prosessorilla. Halutaan arvioida aoaika, kun ongelman koko kasvaa a prosessorien lukumäärä lisääntyy esimerkiks8:aan ta56:een. Keskeinen kysymys ohelman ns. skaalautuvuuden kannalta on nyt: miten käy sekventiaaliselle osalle kun simulaation koko suurenee? Jos ohelma suunnitellaan alusta asti rinnakkaiseksi, on ainakin periaatteessa mahdollista, että sekventiaalisen osuuden aoaika pysyy vakiona. Harva kohtaamamme ohelma on onnistunut tässä. Sen siaan olemme usein todenneet, että sekventiaalisen aoaan osuus on kasvanut prosessorilukumäärän suhteessa. Tarkempi analyysi kertoo, että tiedostoihin kiroittaminen on usein implementoitu sekventiaalisesti yhden tietyn prosessin kautta: kaikki prosessit lähettävät tuloksensa tälle prosessille, oka kokoaa tiedot oikeaan ärestykseen a kiroittaa välituloksia, diagnostisia arvoa, keskeytyneen ohelmasuorituksen uudelleenkäynnistyksen tietoa tai lopputuloksia kovalevyille. Sekventiaalisen osuuden aoaika kasvaakin suhteessa ongelman kokoon a sitä kautta prosessien lukumäärään. Tästä seuraa, että suuremman prosessorilukumäärän tapauksessa ohelma ei nopeudu vaan hidastuu, koska sekventiaalinen osuus kasvaa prosessorilukumäärän kasvaessa. 4. Triviaalisti rinnakkaistuvat On olemassa laskutehtäviä, oiden rinnakkaistaminen on suoraviivasta a yksinkertaista, a niissä rinnakkaistus on onnistunut hyvin. Näihin tapauksiin kuuluvat yhteen laskentaytimeen mahtuvat ohelmat, otka aetaan monta kertaa eri lähtöparametreilla suorittaen siten parametripyyhkäisyn, tai Monte Carlo -tyyppiset simuloinnit oissa sama ohelma aetaan monta kertaa eri satunnaislukualustuksella statistisen arvion laskemiseksi. Käytännössä yksi prosessi kerää N :n ohelman tulokset a suorittaa älkiprosessoinnin. Ammattislangi kutsuu näitä ohelmia "triviaalisti rinnakkaistuviksi" mikä saattaa kuulostaa hieman halventavalta, mutta meidän mielestämme ne edustavat hyvin tärkeää luokkaa rinnakkaisohelmia, oille on ominaista, että ne voidaan aaa ongelmitta erittäin suurilla prosessorimäärillä. 4.2 Prosessien välinen kommunikaatio Rinnakkaisohelmoinnissa pyritään aina akamaan laskennat eri prosessorien kesken siten, ettei kaikkien prosessien tarvitse simulointiaskelten välillä vaihtaa dataa kaikkien muiden prosessien kanssa. Tällöin nimittäin N prosessia saa aikaan N(N )/2 kommunikaatiota, olloin N:n kasvaessa yhä suurempi osuus kokonaisaasta kuluu kommunikaatioon. Kaikki tähän asti kohtaamamme ohelmat ovat onneksi(?) olleet rakenteeltaan hilaakoon a lähinaapurivuorovaikutukseen perustuvia. Simulointitehtävä on tällöin formuloitu tapahtuvaksi esimerkiksi kolmidimensioisella hilalla, oka on aettu säännöllisesti pienempiin kuutiotyyppisiin osiin, a okainen prosessi laskee oman kuutionsa hilapisteet vaihtaen aina simulointiaskelten välillä dataa lähimpien naapuripro-

6 26 Supertietokoneiden tehoa anotaan Kuva : Fuusiosimulaatiokoodin skaalautuvuus Cray XT4/5 koneessa sessorien kanssa reuna-alueeseen verrannollisen määrän. Kolmessa dimensiossa lähinaapuriprosessea on vakiomäärä, 26 kappaletta, a kahdessa dimensiossa vain 8. Tästä seuraa että ohelman kommunikaatiossa vaihdettava kokonaistietomäärä kasvaa suhteessa prosessorien lukumäärään eli kommunikaatio skaalautuu, olloin on odotettavissa ettei ohelma huku kommunikaatioon suuremmillakaan prosessorimäärillä (katso kuva ). Erikoisena piirteenä havaitsimme, että kommunikaation suunnittelussa on usein noudatettu ehkä hieman liioiteltuakin varovaisuutta a suunnitelmallisuutta. Periaatteena käytettiin kuviota, ossa prosessori ensin pyyhkäisee oman hilansa yli, onka älkeen se lähettää tiedot laskemistaan reunapisteiden uusista arvoista ensimmäiselle naapurilleen, odottaa kuittausta vastaanottaalta eli sen lähettämää dataa a etenee sen älkeen seuraavalle naapurille. Varmuuden vuoksi ohelmaan liitetään lopuksi globaali puomi (eng. barrier), oka pakottaa kaikki prosessorit odottamaan kunnes okainen prosessori on saavuttanut saman kohdan ohelman suorituksessa. Nykyiset rinnakkaisohelmointikirastot tukevat asynkronista kommunikaatiota, ossa prosessori ei tarvitse naapureilta kuittausta, vaan prosessori pyyhkäisee ensin reunapisteidensä yli, lähettää nämä tiedot naapureilleen odottamatta kuittausta, pyyhkäisee tämän älkeen kaikkien muiden pisteidensä yli a vasta sen älkeen tarkistaa ovatko naapuriprosessien reunapisteet saapuneet. Kaikkien uusien reuna-arvoen saavuttua prosessori voi edetä seuraavalle simulaatioaskeleelle ilman globaalia puomia. 4. Kuormantasaus Tutkimissamme ohelmissa simuloidaan usein aassa eteenpäin siten, että kehitetään kaava, oka mallittaa miten systeemi kehittyy aassa, onka älkeen edetään aanhetkestä t = pienin askelin t eteenpäin. Mikäli prosessorien simulaatio-osuus kokonaistyöstä perustuu edellä kuvattuun hilaakoon, on hilan ta-

7 Westerholm, Aspnäs, Signell 27 saaolla varmistettu, että okainen prosessi tekee saman verran laskentaa, eikä synny tilannetta, ossa kaikki muut prosessorit odottavat eniten työtä tekevän prosessorin valmistumista. Mikäli simulaatio sisältää stokastisia piirteitä, esimerkiksi os hilapisteiden välissä liikkuu hiukkasia, otka voivat tilapäisesti kasaantua oihinkin hilan osiin a toisaalta harventua muilta osin, on mahdollista että työnako muuttuu epätasaiseksi a useimmat prosessorit outuvat olemaan outilaina odottaessaan työllistettyen prosessoreiden valmistumista. Havaintomme mukaan tällaisia työnaon osalta epätasaisia ohelmia esiintyy melko usein a niiden kohdalla voi olla mielekästä toteuttaa työn uudelleenako tietyin aikavälein. Eräässä tapauksessa nopein prosessori suoriutui työstään sekunnissa hitaimman pyöriessä sekuntia, olloin kokonaisaoaika määräytyi hitaimman prosessin mukaan. Työn uudelleenaon älkeen, sisältäen akoon liittyvän lisätyön, kaikkien prosessoreiden aoaika ol sekuntia. Uudelleenaosta aiheutuva lisälaskenta oli siis pieni verrattuna kokonaisaan pienenemiseen. 4.4 Rinnakkaistiedostot Suurten rinnakkaisaoen käsittelemät tietomäärät on helppo arvioida kertomalla prosessorien lukumäärä prosessorin muistimäärällä. Mikäli käytössä on esimerkiksi 24 prosessoria a okaisella on GB keskusmuistia on lopputulos TB (teratavu). Simuloinnin valmistuttua halutaan mahdollisesti tallettaa tulokset, a oskus on mielekästä esimerkiksi simuloinnin edistymisen valvomiseksi tai simulointivideota varten tallettaa myös välituloksia, esimerkiksi okaista simuloinnin aika-askelta kohden. Sanonnalle "Teraflopsit tuottavat teratavua" löytyy tänään katetta eritoten plasmafuusion simuloinneissa a tilanne mutkistuu tulevaisuudessa yhä suurempien simulointien ollessa mahdollisia. Empiirisesti havaitsimme rinnakkaisohelmien kohdalla, että tiedostosta lukeminen a siihen kiroittaminen usein toteutetaan keräämällä tieto pieninä osina yhteen prosessiin, oka kiroittaa tiedot tiedostoon kovalevylle. Tässä on oiva esimerkki siitä miten rinnakkasiohelmaa ei ole suunniteltu loppuun asti rinnakkaiseksi, vaan siihen on äänyt sekventiaalinen osuus, oka käytännössä määrää aoaan. Eräässä tapauksessa saimme ohelman, ossa itse simulointilaskenta 24 prosessorilla kest sekuntia, mutta (väli)tuloksen kiroittaminen kovalevylle 8 sekuntia, olloin 2 prosessoria oli outilaana 9 % aoaasta. Standardirinnakkaiskirastoissa on o pitkään tuettu tiedostoen rinnakkaislukemista a -kiroittamista, a nämä ovatkin suositeltavia mikäli vain supertietokoneeseen tai laskentaklusteriin on rakennettu rinnakkainen tiedostoärestelmä. Lisäksi on olemassa näiden rutiinien päälle rakennettua kirastoa, kuten esimerkiksi HDF5 (Hierarchical Data Format [9]), otka vielä entisestään yksinkertaistavat rinnakkaista tiedostonkäsittelyä tehden sen melkein normaaliin tiedostonkäsittelyyn verrattavaksi. Esimerkkitapauksessa tiedostoon kiroittaminen lyheni sekuntiin. 4.5 Kirastorutiinien hyödyntäminen Ohelmien rinnakkaistuksen perusrakenteen lisäksi pyrimme myös selvittämään mahdollisuuksia käyttää rinnakkaisohelmointikirastoen taroamaa tukea. Rinnakkaisohelmointistandardi Message Passing Interface MPI [] perustuu laskentanoodien väliseen viestinvälitykseen, ossa tavua lähetetään a vastaanotetaan sovitun kaavan mukaisesti. MPI-kirastoen kehittyessä niihin on rakennettu yhä enemmän toiminnallisuutta erityyppisille rinnakkaisohelmissa usein

8 28 Supertietokoneiden tehoa anotaan esiintyville algoritmeille, oita on siis turha lähteä rakentamaan itse. Yksi esimerkki on ns. all-reduce operaatio, ossa okaisesta prosessorista kootaan tietty määrä dataa yhteen prosessoriin, a tämä prosessori suorittaa datalle onkun operaation, esimerkiksi ynnää kaikki arvot yhteen, a lopputulos kommunikoidaan takaisin kaikille prosesseille. Sen siaan, että lähdemme rakentamaan rutiinia, ossa kommunikoidaan rinnakkaiskiraston lähetys- a vastaanottokutsuilla, voimme käyttää hyväksi yksinkertaista MPI_All_reduce-tyyppistä kutsua, oka hoitaa kommunikaation mitattavasti tehokkaammin kuin omat rutiinit. Toinen esimerkki liittyy tilanteeseen, ossa esimerkiksi kolmidimensioista hilaakoa halutaan kuvata prosesseille: voimme tietysti itse päätellä miten kannattaa akaa alihilat eri prosesseille, mutta MPI:stä löytyy tukea oka helpottaa tätä työtä. 5 Koodin optimointi Varsinaiset tekniikat oiden avulla pyrittiin nopeuttamaan ohelmia olivat välimuistin tehokas hyödyntäminen sekä SSE-vektorointi. 5. Välimuistin optimointi Välimuistin tarkoitus on luoda prosessorille mielikuva, onka mukaan tietokoneen keskusmuisti on nopea. Jos ohelma tarvitsee tavua, otka voidaan lukea välimuistista, on hakuaika noin kellonaksoa, kun taas keskusmuistista haku kestää pyöreästi kellonaksoa. Tämä mielikuva saadaan aikaiseksi siten, että uusia arvoa ladataan keskusmuistista välimuistiin sillä aikaa kun prosessori tekee laskentaa edellisellä kerralla välimuistiin luettuen arvoen kanssa. Välimuistiin kiroitetaan a sieltä luetaan peräkkäisiä tavua välimuistirivin verran, tyypillisesti 64 tavua eli kahdeksan kaksoistarkkuuden liukuluvun verran. Välimuistin käytön optimointi voidaan nyt tiivistää lauseeseen "Käytä tehokkaasti hyväksesi o välimuistiin luettua arvoa äläkä hyppää mielivaltaisella tavalla ympäri keskusmuistia lukien yksittäisiä arvoa sieltä täältä". Jos kuitenkin tarvittavat tavut ovat kaukana toisistaan skaalalla 64 tavua kannattaa yrittää ärestää tietorakenteet uudelleen siten, että tarvittavat arvot ovat peräkkäin muistissa. Tätä periaatetta käyttäen ryhmämme onnistui nopeuttamaan yleisesti käytössä olevaa proteiinisekvensointiohelmaa PSI-BLAST [4]. Proteiini koostuu pitkästä nauhasta aminohappoa, oita löytyy 2 eri tyyppiä. Sekvensoinnissa pyritään asettamaan kaksi proteiinia rinnakkain siten, että niillä on mahdollisimman monta osumaa eli kaksi samaa tai melkein samaa aminohappoa vierekkäin. PSI-BLAST-ohelmassa proteiinin okaista aminohappoa varten käytettiin 2 tavun kokoista tietuetta, ossa on ensimmäisenä äsenenä yhden tavun pituinen aminohapon tyyppiä edustava kirain letter, toisena äsenenä kahdeksan tavua pitkä aminohapon satunnainen osumatodennäköisyys e_value, ne. Tietueet oli ärestetty muistiin taulukkoon. Kuitenkin suurin osa ohelman aoaasta kului peräkkäisten aminohappotietueiden läpikäymiseen etsien aminohapon tyyppiä. Käytännössä siis välimuistiin luettiin okaisella lukukerralla 64 tavua, mutta niistä käytettiin vain oka 2:s, eli noin tavua, ennen kuin seuraava välimuistirivi piti lukea. Järestimme tietorakenteet uudelleen siten, että tietuetaulukon siaan meillä oli yksi taulukko okaista alkuperäisen tietueen äsentä kohden (katso kuva 2). Lukemalla nyt pelkästään tyyppitietue välimuistiin voidaan käyttää hyväksi okaista luettua tavua, a koko ohelmaa voidaan nopeuttaa opa tekiällä kolme [5].

9 Westerholm, Aspnäs, Signell 29 Kuva 2: Alkuperäinen (vasen) a optimoitu (oikea) PSIBlast-ohelman tietue. 5.2 Tietorakenteet Välimuistin optimointi on käytännössä sellaisten tietorakenteiden käyttöä, otka ovat sopusoinnussa välimuistin toiminnan kanssa. Tyypilliset ohelmissa esiintyvät tietorakenteet ovat vektori a matriisi, mutta oskus ohelmissa käytetään yksinkertaisia tietueita tai linkitettyä listoa. Suoraviivaisesta rakenteestaan huolimatta matriisit voidaan tietoteknisesti esittää eri tavoin. Esimerkkinä mainittakoon usein vastaan tullut tilanne, ossa kolmidimensioista hilaa (sivun pituus N) on esitetty oikeaoppisesti kolmidimensioisena matriisina, mutta laskennan ossakin vaiheessa muodostetaan hilapisteiden perusteella lineaarinen matriisiyhtälöryhmä, onka matriisi on erittäin harva a kokoa N. Tällöin kannattaa ilman muuta siirtyä käyttämään harvaa matriisia a valita harvaa matriisia hyödyntävä ratkaisualgoritmi. Harvan matriisin esitystapoa on useita, oten esitystavan valinnassa täytyy suunnitella koko laskentaketu etukäteen, otta se menee kivuitta läpi. Toinen maininnan arvoinen tietorakenne liittyy listoihin, oista halutaan etsiä arvoa tietyin ehdoin, esimerkiksi löytyykö annettu arvo listasta tai mikä on lähinnä pienempi arvo. Mikäli lista on hieman pitempi, enemmän kuin kymmeniä elementteä, kannattaa esimerkiksi ärestää listan arvot suuruusärestykseen a käyttää binäärihakua arvoen etsimiseen, tai ryhmitellä listan arvot hash-tyyppisillä avaimilla. 5. Vektorointi Moderneista prosessoreista on o pitkään löytynyt ns. vektoroitua multimediakäskyä, Streaming SIMD Extensions SSE, (SIMD = Single Instruction Multiple Data), oissa käytetään normaalia pitempiä tyypillisest8-bittisiä rekistereitä. Näihin rekistereihin voidaan tuoda kaksi 64-bittistä kaksoistarkkuuden liukulukua tai vaihtoehtoisesti nelä 2-bittistä yksinkertaisen tarkkuuden liukulukua. Laskennallinen etu on saavutettavissa siten, että suoritetaan aritmeettisia toimintoa näiden rekistereiden kesken tätä varten olevilla SSE-käskyillä, olloin yhden käskyn suorittaminen saa aikaan kahden (tai yksinkertaisen tarkkuuden tapauksessa nelän) samanaikaisen liukulukulaskutoimituksen suorittamisen. Teoreettisesti laskien kaksoistarkkuuden aritmetiikka voidaan nopeuttaa tekiällä 2 (katso kuva ). Vastaanottamiemme ohelmien oukossa ei ollut yhtäkään, ossa x86- arkkitehtuurin SSE-multimediarekistereitä olisi käytetty tehokkaasti hyväksi! Ohelmien tehokkuuden kannalta vektorilaskenta SSE-rekistereillä oli täysin käyttämätön resurssi. Lähdekoodeissa esiintyi monesti useampikin silmukka, oi-

10 Supertietokoneiden tehoa anotaan Kuva : Nelän yksinkertaisen tarkkuuden liukuluvun samanaikainen kertolasku SSEvektoroinnilla. den olisi pitänyt pystyä hyödyntämään SSE-vektorointia, mutta ostakin syystä kääntäät eivät tuottaneet vektoroitua koodia. Myös kääntään tekemän periaatteessa suoraviivaisesti vektoroitavissa olevan silmukan tekemän konekielen läpikäynti osoitti, ettei kääntää tehnyt vektorikäskyä ollenkaan. Tilanteen ymmärtämiseksi kiroitimme plasmasimuloinneissa usein esiintyvälle ns. Arakawamenetelmälle [6] konekieliversion, ossa eksplisiittisesti käytimme pelkästään vektorikäskyä koko SSE-rekisterille. Jo 96-luvulla huomattiin, että virtausmekaniikan simuloinneissa esiintyy numeerista epästabiilisuutta, onka seurauksena pyörteiden kineettinen energia kasvaa raattomasti. Keskeinen laskettava suure on kahden virtauskentän ζ a ψ 2- dimensioinen Jakobiaani J(ζ,ψ) = ζ ψ x y ζ y ψ x () Arakawa osoitti, että ensimmäisen kertaluvun osittaisderivaattoen suoraviivaisessa nelän pisteen diskretoinnissa (lähinaapurit x- a y-suunnassa) systeemin kokonaisenergia ei säily. Sen siaan hän ohti Jakobiaanin diskretoinnille kokonaisenergian säilyttävän muodon, ossa on mukana yhdeksän pistettä kummastakin virtauskentästä muodostaen x matriisin laskettavan Jakobiaanin elementin ympärille. Kuvissa 4 a 5 on esitetty miten paikka-avaruus on diskretoitu a Arakawan menetelmällä pyyhitään virtauskentän 2-dimensioisen matriisin yli, kuvassa 4 ilman SSE-vektorointia a kuvassa 5 SSE-vektoroinnilla. Koodin optimoinnin tulos oli odotettu: ohelma nopeutui tekiällä,8. Mistä syystä sitten kääntää ei suostu vektoroimaan Arakawa-koodia? Tälle on itse asiassa olemassa hyvä syy. Aatellaan tapausta ossa Arakawa-rutiini toteutetaan aliohelmakutsulla, onka lähtöarvoina on kaksi matriisia (ζ i, a ψ i, ) sekä tulosmatriisina Jakobiaani J i, (ζ,ψ). Jos alirutiini kutsutaan siten, että toinen lähtömatriiseista a tulosmatriisi ovatkin sama matriisi(!), tulokset tulevat olemaan aivan erilaiset riippuen siitä onko aliohelma vektoroitu tai ei, olloin kääntää tekee päätöksen olla vektoroimatta aliohelmaa. Jos kuitenkin käyttää ilmoittaa eksplisiittisesti että erinimiset osoittimet, kuten matriisit tai vektorit, varmasti osoittavat eri muistipaikkoihin, onnistuu vektorointi hyvin. Esimerkkinä käyköön Intelin icc-kääntää [7], olle ilmoitetaan

11 Westerholm, Aspnäs, Signell i= = i= =2 i= = i= =4 i=2 = i=2 =2 i=2 = i=2 =4 Kuva 4: Iterointi 6x4-kokoisen gridin yli käyttäen Arakawan x matriisia. i= = i= = i=2 = i=2 = Kuva 5: Arakawan menetelmän iterointi 6x4-kokoisen gridin yli käyttäen SSE-vektorointia. Yhtenäinen viiva a katkoviiva edustavat kaksoistarkkuuden lukua, otka sioittuvat SSE-rekisterin vasemmalle a oikealle puolelle.

12 2 Supertietokoneiden tehoa anotaan oko komentoriviltä icc -fno-alias tai restrict avainsanalla parametreille aliohelmakutsussa, että tarkoitamme nimenomaan eri matriisea, olloin kääntää osaa riittävän selkeissä tapauksissa generoida erittäin käyttökelpoista vektoroitua koodia. Muut C-kääntäät, kuten GNU [], Pathscale [2] a Portlandin PGI [], pystyät tuottmaaan yhtä tehokasta vektoroitua koodia vain hyvin yksinkertasille lausekkeille. Lähitulevaisuudessa vektorirekisterien pituus kaksinkertaistuu 256 bittiin, olloin yhteen rekisteriin mahtuu kerralla nelä kaksoistarkkuuden liukulukua avaten siten mahdollisuuden yhä suuremmille nopeutuksille. 6 Tuloksia Mitkä olivat havaintomme rinnakkaisohelmista a sekventiaalisista ohelmista oita aetaan supertietokoneissa ympäri Eurooppaa a myös maailmanlaauisesti nimenomaan rinnakkaisohelmoinnin sekä koodin optimoinnin kannalta? Yleistoteamus on positiivinen: vielä voi parantaa ohelmia käyttämään paremmin hyväksi prosessorien tehoa. Usein sekventiaalinen ohelma voidaan rinnakkaistaa a tällä tavoin ohelma voidaan nopeuttaa tekiällä -. Jo rinnakkaistettuen ohelmien uudelleensuunnittelu merkitsi usein, että ohelmat, otka ennen pyörivät korkeintaan 6 tai 2 prosessorilla, voidaan tarkemmin suunnitellun rinnakkaistamisen älkeen aaa opa 24 ta48 prosessorilla. Rinnakkainen tiedostonkäsittely on mielestämme se osa, ossa voi suhteellisen ärkevällä ohelmointipanostuksella saavuttaa merkittävimmät nopeutukset tapauksissa, oissa ohelma tuottaa palon dataa kovalevylle. Jos ohelmassa on keskeisiä rutiinea, otka voidaan vektorisoida SSE-tyyppisillä käskyillä, voidaan hyöty usein saada irti pienellä muutoksella lähdekoodiin tai kääntään asetuksilla olettaen, että erinimiset tietorakenteet todella ovat eri paikoissa muistissa. Koodin optimointi yleensäkin nopeuttaa aoaat noin tekiällä 2, parhaassa tapauksessa, a mikäli aoaika alunperin on ollut tuntea tai päiviä voi nopeutus tekiällä kaksi olla hyvinkin kouriintuntuva parannus. Viitteet pdfs/finhpc.pdf/download. Pär Strand, Bernard Guillerminet, Frederic Imbeaux, Rui Coelho, David Coster, Lars-Göran Eriksson, Francesco Iannone, Gabriele Manduchi, Isabel Campos, Matthieu Haefele, Eric Sonnedrücker, Adrian Jackson, Jan Westerholm, Marcin Plociennik a Michal Owsiak: A European Infrastructure for Fusion Simulations, toim. Marco Danelutto, Julien Bourgeois and Tom Gross: PDP 2 Proceedings of the 8th Euromicro Conference on Parallel, Distributed and Network-Based Processing, Pisa, helmikuuta, 2, s Mats Aspnäs, Kimmo Mattila, Kristoffer Osowski a Jan Westerholm, Code Optimization of the Subroutine to Remove Near Identical Matches in the Sequence Database Homology Search Tool PSI- BLAST, Journal of Computational Biology, vol. 7, s. -5, A. Arakawa, Computational design for long-term numerical integration of the equations of fluid motion: twodimensional incompressible flow. Part I, Journal of Computational Physics, Vol., s. 9-4,

Tietokoneet täh++eteessä

Tietokoneet täh++eteessä Tietokoneet täh++eteessä Peter Johansson Fysiikan laitos, Helsingin yliopisto PC- käy:äjät ry kevätkokous 2014 Helsinki 23.3.2014 1. Miksi +etokoneita tarvitaan täh++eteessä ja mikä on niiden rooli modernissa

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Matematiikka ja teknologia, kevät 2011

Matematiikka ja teknologia, kevät 2011 Matematiikka ja teknologia, kevät 2011 Peter Hästö 3. helmikuuta 2011 Matemaattisten tieteiden laitos Sisältö Kurssi koostuu kuudesta (seitsemästä) toisistaan riippumattomasta luennosta. Aihepiirit ovat:

Lisätiedot

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

Moderneissa grafiikkakorteissa hyödynnetään myös samanlaista toimintamallia 1 Datan rinnakkaistamisessa siis eri prosessointiyksiköt suorittavat saman operaation annetulle datalle, joka pilkotaan prosessointiyksikköjen kesken. Pointti on siis se, että kyseessä ei ole tehtävien

Lisätiedot

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Simulointi. Varianssinhallintaa Esimerkki

Simulointi. Varianssinhallintaa Esimerkki Simulointi Varianssinhallintaa Esimerkki M C Esimerkki Tarkastellaan lasersäteen sirontaa partikkelikerroksesta Jukka Räbinän pro gradu 2005 Tavoitteena simuloida sirontakuvion tunnuslukuja Monte Carlo

Lisätiedot

Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan?

Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan? Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan? 2012-2013 Lasse Lensu 2 Ihmisen, eläinten ja kasvien hyvinvoinnin kannalta nykyaikaiset mittaus-,

Lisätiedot

Ei välttämättä, se voi olla esimerkiksi Reuleaux n kolmio:

Ei välttämättä, se voi olla esimerkiksi Reuleaux n kolmio: Inversio-ongelmista Craig, Brown: Inverse problems in astronomy, Adam Hilger 1986. Havaitaan oppositiossa olevaa asteroidia. Pyörimisestä huolimatta sen kirkkaus ei muutu. Projisoitu pinta-ala pysyy ilmeisesti

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Numeriikan kirjastoja

Numeriikan kirjastoja Numeriikan kirjastoja + Säästää aikaa, hikeä ja kyyneleitä + Aliohjelmat testattuja ja luotettavia + Tehokkuus optimoitu - Ei aina sovellu kovin hyvin omaan tehtävään - Kaupallisista kirjastoista ei saa

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Parinmuodostuksesta tietojenkäsittelytieteen silmin Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Suomalainen Tiedeakatemia Nuorten Akatemiaklubi 18.10.2010 Sisältö Mitä tietojenkäsittelytieteessä

Lisätiedot

S-114.2720 Havaitseminen ja toiminta

S-114.2720 Havaitseminen ja toiminta S-114.2720 Havaitseminen ja toiminta Heikki Hyyti 60451P Harjoitustyö 2 visuaalinen prosessointi Treismanin FIT Kuva 1. Kuvassa on Treismanin kokeen ensimmäinen osio, jossa piti etsiä vihreätä T kirjainta.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Rinnakkaistietokoneet luento 1 521475S

Rinnakkaistietokoneet luento 1 521475S Rinnakkaistietokoneet luento 1 521475S Yleistä Luennnoitsija: Janne Haverinen huone: TS349 s-posti: janne.haverinen@oulu.fi puh: 553 2801 Assistentti: Jarno Haapamäki huone: TS354 s-posti: jarno.haapamaki@oulu.fi

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

Lisätiedot

Luento 7. T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Luento 7. T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä Luento 7 T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1 Luennoitsija: Otto Seppälä Kurssin WWW: http://www.cs.hut.fi/opinnot/t-106.1240/s2007 Suunnitelmista Yleistaso oli

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Testiraportti Android virtuaalikone vs. natiivikoodi Ville Laine, Delta 23

Testiraportti Android virtuaalikone vs. natiivikoodi Ville Laine, Delta 23 Testiraportti Android virtuaalikone vs. natiivikoodi Ville Laine, Delta 23 1 Sisällys 1. Johdanto...3 2. Testiohjelma...3 2.1. Testi 1: Raaka funktiokutsu...3 2.2. Testi 2: Yhteenlaskutesti...3 2.3. Testi

Lisätiedot

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

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Markov-prosessit (Jatkuva-aikaiset Markov-ketjut)

Markov-prosessit (Jatkuva-aikaiset Markov-ketjut) J. Virtamo 38.3143 Jonoteoria / Markov-prosessit 1 Markov-prosessit (Jatkuva-aikaiset Markov-ketut) Tarkastellaan (stationaarisia) Markov-prosessea, oiden parametriavaruus on atkuva (yleensä aika). Siirtymät

Lisätiedot

ẋ(t) = s x (t) + f x y(t) u x x(t) ẏ(t) = s y (t) + f y x(t) u y y(t),

ẋ(t) = s x (t) + f x y(t) u x x(t) ẏ(t) = s y (t) + f y x(t) u y y(t), Aalto-yliopiston Perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos Mat-2.4129 Systeemien Identifiointi 1. harjoituksen ratkaisut 1. Tarkastellaan maita X ja Y. Olkoon näiden varustelutaso

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

Lisätiedot

A* Reitinhaku Aloittelijoille

A* Reitinhaku Aloittelijoille A* Reitinhaku Aloittelijoille Alkuperäisen artikkelin kirjoittanut Patrick Lester, suomentanut Antti Veräjänkorva. Suom. huom. Tätä kääntäessäni olen pyrkinyt pitämään saman alkuperäisen tyylin ja kerronnan.

Lisätiedot

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

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää Levyn rakenne Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

Säätötekniikan matematiikan verkkokurssi, Matlab tehtäviä ja vastauksia 29.7.2002

Säätötekniikan matematiikan verkkokurssi, Matlab tehtäviä ja vastauksia 29.7.2002 Matlab tehtäviä 1. Muodosta seuraavasta differentiaaliyhtälöstä siirtofuntio. Tämä differentiaaliyhtälö saattaisi kuvata esimerkiksi yksinkertaista vaimennettua jousi-massa systeemiä, johon on liitetty

Lisätiedot

Jatkuvat satunnaismuuttujat

Jatkuvat satunnaismuuttujat Jatkuvat satunnaismuuttujat Satunnaismuuttuja on jatkuva jos se voi ainakin periaatteessa saada kaikkia mahdollisia reaalilukuarvoja ainakin tietyltä väliltä. Täytyy ymmärtää, että tällä ei ole mitään

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

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

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka Rinnakkaisuus parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa Rinnakkaisuuden etuja: laskennan nopeutuminen (sarjoittuvat operaatiojonot) ilmaisuvoima (ongelman

Lisätiedot

Harjoitus 6: Simulink - Säätöteoria. Syksy 2006. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1

Harjoitus 6: Simulink - Säätöteoria. Syksy 2006. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoitus 6: Simulink - Säätöteoria Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen säätötekniikkaan Takaisinkytkennän

Lisätiedot

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

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

Lisätiedot

Tiedosto Muuttuja Kuvaus Havaintoväli Aikasarjan pituus. Intelin osakekurssi. (Pörssi-) päivä n = 20 Intel_Volume. Auringonpilkkujen määrä

Tiedosto Muuttuja Kuvaus Havaintoväli Aikasarjan pituus. Intelin osakekurssi. (Pörssi-) päivä n = 20 Intel_Volume. Auringonpilkkujen määrä MS-C2128 Ennustaminen ja aikasarja-analyysi 4. harjoitukset / Tehtävät Kotitehtävät: 3, 5 Aihe: ARMA-mallit Tehtävä 4.1. Tutustu seuraaviin aikasarjoihin: Tiedosto Muuttuja Kuvaus Havaintoväli Aikasarjan

Lisätiedot

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

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen Käyttöjärjestelmien historia Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen Käyttöjärjestelmien jaottelu Voidaan jaotella erilaisin menetelmin Aikajana (määrä,

Lisätiedot

Korkean resoluution ja suuren kuva-alueen SAR

Korkean resoluution ja suuren kuva-alueen SAR Korkean resoluution ja suuren kuva-alueen SAR Risto Vehmas, Juha Jylhä, Minna Väilä ja prof. Ari Visa Tampereen teknillinen yliopisto Signaalinkäsittelyn laitos Myönnetty rahoitus: 50 000 euroa Esityksen

Lisätiedot

10. Globaali valaistus

10. Globaali valaistus 10. Globaali valaistus Globaalilla eli kokonaisvalaistuksella tarkoitetaan tietokonegrafiikassa malleja, jotka renderöivät kuvaa laskien pisteestä x heijastuneen valon ottamalla huomioon kaiken tähän pisteeseen

Lisätiedot

2009 Mat-2.4177 Operaatiotutkimuksen Projektityöseminaari L

2009 Mat-2.4177 Operaatiotutkimuksen Projektityöseminaari L 2009 Mat-2.4177 Operaatiotutkimuksen Projektityöseminaari L Väliraportti 25.2.2009 Puustokuvioiden korjuukelpoisuus- ja saavutettavuusanalyysi Juha Valvanne Juho Matikainen Joni Nurmentaus Lasse Östring

Lisätiedot

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Lauri Karppi j82095. SATE.2010 Dynaaminen kenttäteoria DIPOLIRYHMÄANTENNI.

VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Lauri Karppi j82095. SATE.2010 Dynaaminen kenttäteoria DIPOLIRYHMÄANTENNI. VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA Oskari Uitto i78966 Lauri Karppi j82095 SATE.2010 Dynaaminen kenttäteoria DIPOLIRYHMÄANTENNI Sivumäärä: 14 Jätetty tarkastettavaksi: 25.02.2008 Työn

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

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

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Tietokoneen muisti nyt ja tulevaisuudessa Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Yleisesti Muisti on yksi keskeisimmistä tietokoneen komponenteista Random Access Memory on yleistynyt

Lisätiedot

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?

Lisätiedot

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä 3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a 21

Lisätiedot

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

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi Versiohistoria: Versio: Pvm: Laatijat: Muutokset: 0.1 2006-11-25 Janne Mäkelä Alustava 1.0 2006-12-10 Janne Mäkelä Valmis 1.

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

(5) Tentin maksimipistemaara on 40 pistetta. Kaikki vastaukset naihin tehtavapapereihin.

(5) Tentin maksimipistemaara on 40 pistetta. Kaikki vastaukset naihin tehtavapapereihin. (5) VAASAN YLIOPISTO (TITE,1021) Tentti 10.1.2013 Teemu Saari Nimi: Opiskelijanumero: Pisteet: + + + Yiit: /40 Arv. Tentin maksimipistemaara on 40 pistetta. Kaikki vastaukset naihin tehtavapapereihin.

Lisätiedot

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen Enigmail-opas Enigmail on Mozilla Thunderbird ja Mozilla Seamonkey -ohjelmille tehty liitännäinen GPG-salausohjelmiston käyttöä varten. Sitä käytetään etenkin Thunderbirdin kanssa sähköpostin salaamiseen

Lisätiedot

1 Aritmeettiset ja geometriset jonot

1 Aritmeettiset ja geometriset jonot 1 Aritmeettiset ja geometriset jonot Johdatus Johdatteleva esimerkki 1 Kasvutulille talletetaan vuoden jokaisen kuukauden alussa tammikuusta alkaen 100 euroa. Tilin nettokorkokanta on 6%. Korko lisätään

Lisätiedot

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9.2.2011

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9.2.2011 PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9..0 Kokeessa saa vastata enintään kymmeneen tehtävään.. Sievennä a) 9 x x 6x + 9, b) 5 9 009 a a, c) log 7 + lne 7. Muovailuvahasta tehty säännöllinen tetraedri muovataan

Lisätiedot

3. Kuvio taitetaan kuutioksi. Mikä on suurin samaa kärkeä ympäröivillä kolmella sivutahkolla olevien lukujen tulo?

3. Kuvio taitetaan kuutioksi. Mikä on suurin samaa kärkeä ympäröivillä kolmella sivutahkolla olevien lukujen tulo? Peruskoulun matematiikkakilpailu Loppukilpailu perjantaina 4.2.2011 OSA 1 Ratkaisuaika 30 min Pistemäärä 20 Tässä osassa ei käytetä laskinta. Esitä myös lasku, kuvio, päätelmä tai muu lyhyt perustelu.

Lisätiedot

Avoin data ja sen hyödyntäminen tähtitieteessä. Juhani Huovelin Fysiikan laitos Helsingin yliopisto

Avoin data ja sen hyödyntäminen tähtitieteessä. Juhani Huovelin Fysiikan laitos Helsingin yliopisto Avoin data ja sen hyödyntäminen tähtitieteessä Juhani Huovelin Fysiikan laitos Helsingin yliopisto Avoin data avain uuteen, 1.11.2011 Tiedesatelliittien datat tallennettu julkisiin arkistoihin jo kymmeniä

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat Taulukkolaskennan perusteet Taulukkolaskentaohjelmat MS Excel ja LO Calc H6: Lomakkeen solujen visuaalisten ja sisältöominaisuuksien käsittely ja soluviittausten perusteet Taulukkolaskennan perusteita

Lisätiedot

1 Kannat ja kannanvaihto

1 Kannat ja kannanvaihto 1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:

Lisätiedot

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi

Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi 24.01.2011 Ohjaaja: Tapio Niemi Valvoja: Harri Ehtamo Tausta ja työn tavoite Työ tehtiin Helsinki Institute of Physics:ille,

Lisätiedot

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä: Nielsen: "Olen tutkinut Webin käytettävyyttä vuodesta 1994, ja jokaisessa tutkimuksessa esiin on noussut sama asia: käyttäjät haluaisivat sivujen latautuvan nopeammin. Aluksi olin sitä mieltä, että käyttäjät

Lisätiedot

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

Opetusmateriaali. Fermat'n periaatteen esittely

Opetusmateriaali. Fermat'n periaatteen esittely Opetusmateriaali Fermat'n periaatteen esittely Hengenpelastajan tehtävässä kuvataan miten hengenpelastaja yrittää hakea nopeinta reittiä vedessä apua tarvitsevan ihmisen luo - olettaen, että hengenpelastaja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut. www.ohjelmoimaan.net

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut. www.ohjelmoimaan.net Paavo Räisänen Ohjelmoijan binaarialgebra ja heksaluvut www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Intel Threading Building Blocks

Intel Threading Building Blocks Intel Threading Building Blocks Markku Vajaranta Esko Pekkarinen TBB Pähkinänkuoressa C++ luokkamallinen rinnakkaisuus Abstrahoi rinnakkaisuutta korkean tason tehtävät (tasks) ja niiden skedulointi suuri

Lisätiedot

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen Intel Pentium Pro -prosessori tietokonearkkitehtuurit, syksy -96 Ari Rantanen Tarkasteltavat aiheet Katsaus Pentium Pro:n ominaisuuksiin Käskyn suoritus Pentium Pro:n liukuhihnalla Pentium Pro:n suorituskyky

Lisätiedot

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö Algoritmit 1 Luento 14 Ke 25.2.2015 Timo Männikkö Luento 14 Heuristiset menetelmät Heuristiikkoja kapsäkkiongelmalle Kauppamatkustajan ongelma Lähimmän naapurin menetelmä Kertaus ja tenttivinkit Algoritmit

Lisätiedot

Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna

Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna Laadullinen, verbaalinen, tulkinnallinen aineisto kootaan esimerkiksi haastattelemalla, videoimalla, ääneenpuhumalla nauhalle, yms. keinoin.

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

5. Numeerisesta derivoinnista

5. Numeerisesta derivoinnista Funktion derivaatta ilmaisee riippumattoman muuttujan muutosnopeuden riippuvan muuttujan suteen. Esimerkiksi paikan derivaatta ajan suteen (paikan ensimmäinen aikaderivaatta) on nopeus, joka ilmaistaan

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT ALGORITMIEN ANALYYSISTÄ 1.ratkaisu Laskentaaika hakkeri - optimoitu ALGORITMIANALYYSIÄ hyvä algoritmi hakkeri -optimoitu hyvä algoritmi Tehtävän koko Kuva mukailtu

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Tietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori

Tietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori kevät 2004 TP02S-D Tietokoneen rakenne: Harjoitustyö Motorola MC68030 -prosessori Työn valvojat: Seppo Haltsonen Pasi Lankinen RAPORTTI 13.5.2004 Sisällysluettelo sivu Tiivistelmä... 1 Lohkokaavio... 2

Lisätiedot

Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen. Pekka Peura 28.01.2012

Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen. Pekka Peura 28.01.2012 Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen Pekka Peura 28.01.2012 MOTIVAATIOTA JA AKTIIVISUUTTA LISÄÄVÄN OPPIMISYMPÄRISTÖN ESITTELY (lisätietoja maot.fi)

Lisätiedot

Perussurffaajat: Tiia Tirkkonen, Teppo Porkka, Janne Tuomisto. Verkkopalvelun arviointisuunnitelma Spotify

Perussurffaajat: Tiia Tirkkonen, Teppo Porkka, Janne Tuomisto. Verkkopalvelun arviointisuunnitelma Spotify Perussurffaajat: Tiia Tirkkonen, Teppo Porkka, Janne Tuomisto Verkkopalvelun arviointisuunnitelma Spotify Tampereen teknillinen yliopisto Hypermedia MATHM- 00000 Hypermedian opintojakso 30.9.2011 Sisällysluettelo

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus Versio: 28.2.2013 Julkaistu: 28.2.2013 Voimassaoloaika: toistaiseksi Sisällys 1 Yleiset vaatimukset... 2 2 Latauspalvelun

Lisätiedot

Kombinatorinen optimointi

Kombinatorinen optimointi Kombinatorinen optimointi Sallittujen pisteiden lukumäärä on äärellinen Periaatteessa ratkaisu löydetään käymällä läpi kaikki pisteet Käytännössä lukumäärä on niin suuri, että tämä on mahdotonta Usein

Lisätiedot

LIITE. asiakirjaan. komission delegoitu asetus

LIITE. asiakirjaan. komission delegoitu asetus EUROOPAN KOMISSIO Bryssel 12.10.2015 C(2015) 6823 final ANNEX 1 PART 6/11 LIITE asiakirjaan komission delegoitu asetus kaksikäyttötuotteiden vientiä, siirtoa, välitystä ja kauttakulkua koskevan yhteisön

Lisätiedot

Tieteellinen laskenta 2 Törmäykset

Tieteellinen laskenta 2 Törmäykset Tieteellinen laskenta 2 Törmäykset Aki Kutvonen Op.nmr 013185860 Sisällysluettelo Ohjelman tekninen dokumentti...3 Yleiskuvaus...3 Kääntöohje...3 Ohjelman yleinen rakenne...4 Esimerkkiajo ja käyttöohje...5

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann

Lisätiedot

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt Matriisihajotelmat: Schur ja Jordan Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2015 1 / 18 R. Kangaslampi Matriisihajotelmat:

Lisätiedot

1) Ymmärrä - ja tule asiantuntijaksi askel askeleelta

1) Ymmärrä - ja tule asiantuntijaksi askel askeleelta Tarkkailuharjoitus 4..4. Tarkkailu- harjoitus Tarkkailuvihkotekniikka Alla on kuvattu askel askeleelta etenevät ohjeet siitä, kuinka kuluttajien tarpeita voidaan paljastaa. Tämä metodi auttaa sinua tekemään

Lisätiedot

SIMO-pilotointi Metsähallituksessa. SIMO-seminaari

SIMO-pilotointi Metsähallituksessa. SIMO-seminaari SIMO-pilotointi Metsähallituksessa SIMO-seminaari Hakkuiden optimointi tiimitasolla Metsähallituksen metsissä Heli Virtasen Pro gradu -tutkielma Tutkimusalue ja aineisto Metsätalouden Kainuun alue Kuhmon

Lisätiedot