Rinnakkaisuudesta ohjelmien ajamisessa
7.7.2009, kirjoittanut Jussi KasurinenHei taas,
Tällä kertaa päivitän blogia tien päältä, olen par’aikaa Pariisissa tietojenkäsittelytieteiden konferenssissa kuuntelemassa alan uutta tutkimustietoa.
Konferenssissa eräs yksityiskohta kiinnosti minua erityisesti; erään suuren Yhdysvaltalaisen prosessorivalmistajan pitämä sponsoritilaisuus, jossa kovaan ääneen toitotettiin rinnakkaisuuden tuovan tietokoneiden toimintaan uutta, kauan kaivattua tehoa. Luennoija näytti kyllä mielellään esimerkkejä C++ ja Java-kielillä, ja totesi, että lähitulevaisuudessa pystytään rakentamaan 128 yleisytimen koneita, joissa pystytään ajamaan suuri määrä raskaita ohjelmia yht’aikaa ilman että yksikään niistä alkaisi hidastella. Ihan komea visio (ja promoständiltäkin irtosi kivasti taskunpohjalle kaikenlaista pikkulelua).
Itseasiassa, Mooren lakiakin pitäisi heidän mielestä viimeistään nyt päivittää muotoon ”prosessoriytimien määrä tuplaantuu kerran kahdessa vuodessa”. Totuus jäänee kuitenkin tässä asiassa nähtäväksi, rinnakkaisuuden kanssa on painittu ennenkin mm. hyperkuution yhteydessä, joten itse suhtaudun visioon hieman skeptisesti. Toisaalta taas, nykyisellään yksiytimisellä prosessorilla varustetun tietokoneen hankkiakseen pitää alkaa kiertelemaan kierrätyskeskuksia, muutaman vuoden päästä teknologiamuseoita.
Ajattelin kuitenkin huomattaa siitä, että kävi vision kanssa kuinka tahansa, on Pythonissa vastaavat toiminnot oletuskirjastoissa threading ja thread, joiden avulla ohjelma voi käynnistellä uusia prosesseja ja threadeja, käyttiksen huolehtiessa itse kuormajaosta. Tällä tavoin pystyy rinnakkaisuudella jakamaan raskaan suorituksen useaan osaan. Tai sotkemaan ohjelman lopullisesti pikkubugien ja synkronointiongelmien viidakkoon. Kummin tahansa, vaikuttaisi siltä että threadingin käyttämistä pitäisi alkaa jossain vaiheessa opettelemaan.
Vielä lopuksi, robotille josta mainitsin viimeksi, kuuluu hyvää. Ilokseni robotti osasi suoraan lukea sarjaporttiin USB-emulointisoftan läpi lähetettyjä käskyjä, tehden robotin ohjelmoinnista ja ohjaamisesta helppoa. Ainakin silloin kun se pirulainen ei ole ajamassa pöydältä tai portaista alas.
Täältä tähän,
Jussi Kasurinen
ohjelmointikurssit.com

