Näytönohjain CPU:n laskennan suorittajana
Järvinen, Markus (2015)
Järvinen, Markus
Jyväskylän ammattikorkeakoulu
2015

Creative Commons Attribution-ShareAlike 1.0 Suomi
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2015121721390
https://urn.fi/URN:NBN:fi:amk-2015121721390
Tiivistelmä
Näytönohjaimia käytetään perinteisesti 2D- tai 3D-grafiikan piirtämiseen, mutta nykyisin näytönohjaimilla voidaan suorittaa grafiikan piirron lisäksi muutakin laskentaa. Tätä näytönohjaimen laskentakapasiteetin hyödyntämistä kutsutaan GPGPU-tekniikaksi ja sitä voidaan käyttää mm. OpenCL-ohjelmointirajapinnan avulla. Näytönohjaimet ovat keskusprosessoreihin verrattuna hyvin tehokkaita rinnakkaislaskennassa. GPGPUtekniikkaa on hyödynnetty piirtämisen apuvälineenä esim. peleissä piirrettävien kohteiden tietoja päivittämiseen näytönohjaimessa. Työn tavoitteena oli selvittää näytönohjaimen hyödyntämistä keskusprosessorin rinnalla tietokonepelien yhteydessä. Opinnäytetyössä luotiin pelimoottorin pohja, jonka avulla luotiin vokselipohjainen simulaatio. Simulaatio toteutettiin OpenCL-ohjelmointirajapinnan avulla näytönohjaimelle sopivaksi suunniteltuna. Lisäksi verrattiin näytönohjaimesta saatuja tuloksia keskusprosessorilla suoritettavaan vastaavan toteutukseen. Opinnäytetyöllä ei ollut toimeksiantajaa vaan kyseessä oli henkilökohtainen tutkimusprojekti GPGPU-tekniikan hyödyntämisestä. Toteutus kirjoitettiin C++-kielellä Ubuntu Linux -käyttöjärjestelmäympäristössä. Toteutuksessa hyödynnettiin myös keskusprosessorin monisäietukea. Simulaation avulla ei onnistuttu keräämään suoritukseen liittyviä tuloksia, joten toteutus jäi siltä osin vajaaksi. Tiedonsiirroista saadut tulokset rajoittuivat vain yhteen näytönohjaimeen, mutta siitä saadut tiedot toimivat kohtuullisen hyvin suunnan antajina näytönohjaimen hyödyntämisessä. Opinnäytetyön tulokset osoittavat, että tiedonsiirto näytönohjaimelle on hidasta näytönohjaimen tarjoamaan muistimäärään nähden. Tulosten avulla pääteltiin, että painopisteenä tulisi olla GPGPU-tekniikan hyödyntäminen näytönohjaimessa jo olevalle datalle ja tiedonsiirtojen minimointi näytönohjaimen ja tietokoneen keskusmuistin välillä. Suurien datakokoelmien käsittely näytönohjaimella kestäisi liian kauan, mikäli tulokset tulisi siirtää pois näytönohjaimelta käsittelyn jälkeen. Nämä tiedonsiirrot laskisivat kuvanpiirtämisten määrän alle 30 kuvanpiirtoon sekunnissa, jota ei voida hyväksyä monissa nykyajan peleissä