Tietokonepelit ovat niin valtava markkina-alue, että korkealaatuista 3D-grafiikkaa tuottavien erikoissuorittimien tai grafiikkasuorittimien kehittäminen on kannattavaa. Erityisiä videosuorittimia käytettiin jo 1970-luvulla, mutta tuntemamme grafiikkasuorittimet ovat olleet käytössä noin 1990-luvulta lähtien. Sony otti vuonna 1994 grafiikkasuorittimen käyttöön PlayStationissa, ja vuosikymmenen loppuun mennessä grafiikkasuorittimia alettiin käyttää myös tietokoneissa.
2000-luvun alussa grafiikkasuorittimia kokeiltiin käyttää ensimmäisiä kertoja tieteellisessä laskennassa. Joihinkin grafiikkasuorittimiin alettiin lisätä myös suurteholaskentaan tarvittavia ominaisuuksia, ja termi GPGPU (General Purpose Graphics Processing Unit) otettiin käyttöön. Nykyään suurteholaskennassa myös näistä monipuolisemmista grafiikkasuorittimista käytetään yksinkertaisesti termiä GPU.
Kun suoritinta verrataan grafiikkasuorittimeen, eroa voidaan kuvata yhdellä sanalla: monimutkaisuus. Alla on suorittimen ja grafiikkasuorittimen rinnakkainen kaavioesitys.
Suoritin on monimutkaisempi ja joustavampi laite, joka on tarkoitettu yleiskäyttöön. Se on nopea ja monipuolinen ja se on suunniteltu käyttöjärjestelmien ja useiden hyvin erilaisten sovellusten suorittamiseen. Siinä on paljon ominaisuuksia, kuten parempi ohjauslogiikka, välimuistit ja välimuistin yhtenäisyys, jotka eivät liity pelkästään laskentaan.
Grafiikkasuorittimessa on puolestaan suhteellisen pieni määrä ohjaukseen ja välimuistiin tallentamiseen tarkoitettuja transistoreita, mutta paljon suurempi määrä matemaattisiin toimintoihin tarkoitettuja transistoreita. Grafiikkasuorittimen ytimet on suunniteltu vain 3D-grafiikalle, joten ne voidaan tehdä paljon yksinkertaisemmiksi ja niitä voi olla erittäin paljon. Nykyisissä malleissa niitä on tuhansia. Grafiikkasuorittimen yksittäinen ydin ei ole yhtä tehokas kuin suorittimessa, mutta grafiikkasuorittimen suuren rinnakkaisuuden vuoksi se voi olla moniytimistä suoritinta tehokkaampi.
Grafiikkasuorittimien muistin käyttönopeus on yleensä paljon suurempi kuin suorittimissa, mikä voi myös olla tärkeää hyvän suorituskyvyn kannalta. Grafiikkasuorittimet ovat lisäksi yksinkertaisemman rakenteen ansiosta energiatehokkaampia kuin suorittimet, joten ne käyttävät vähemmän energiaa liukulukutoimintoa kohden. Tästä syystä useimmat eksa-luokan suorituskykyyn tähtäävät uudet järjestelmät käyttävät grafiikkasuorittimia. Muutoin näiden järjestelmien sähkönkulutus kasvaisi liian suureksi.
Alla oleva video havainnollistaa grafiikkasuorittimien massiivisen rinnakkaisuuden tehoa (ota huomioon, että suorittimissa käytetään myös rinnakkaisuutta, vaikkakin rajallisesti verrattuna grafiikkasuorittimiin).
Mythbusters demoing GPU vs. CPU
Grafiikkasuorittimien ytimien toiminta on yksinkertaisempaa ja se edellyttää kehittynyttä rinnakkaisuutta, joten kaikkia tieteellisiä ongelmia ei voida helposti sovittaa grafiikkasuorittimiin. Suorittimet voivat käsitellä tehokkaasti myös tehtävätason rinnakkaisuutta, jossa eri ytimet suorittavat eri toimintoja, mutta grafiikkasuorittimet toimivat tehokkaasti vain tapauksissa, joissa tiedot ovat rinnakkaisia ja kaikki ytimet suorittavat samanlaisia aritmeettisia toimintoja eri tiedoille. Yleisesti ottaen grafiikkasuorittimien ohjelmointi on monimutkaisempaa, ja hyvän suorituskyvyn aikaansaaminen voi edellyttää, että ohjelmoija ottaa huomioon hyvinkin yksityiskohtaisia laitteiston teknisiä ominaisuuksia.
Erityispiirteidensä vuoksi grafiikkasuorittimet tarvitsevat suorittimien tukea. Grafiikkasuorittimet eivät suorita käyttöjärjestelmää, ja sovelluksen ajaminen aloitetaan aina suorittimessa. Kun sovellus on käynnistynyt, laskentatyötä voidaan siirtää grafiikkasuorittimeen nopeuttamista varten. Tämän vuoksi grafiikkasuorittimia kutsutaan usein kiihdyttimiksi.
Tapauksesta riippuen vain osa sovelluksesta voidaan siirtää grafiikkasuorittimiin. Laskelmia voidaan myös suorittaa samanaikaisesti sekä suorittimessa että grafiikkasuorittimessa. Suorittimen ja grafiikkasuorittimen päämuistit ovat kuitenkin erillisiä, joten laskennan suorittaminen edellyttää, että tiedot kopioidaan ensin suorittimesta grafiikkasuorittimeen.
Jos suorittimen on käsiteltävä grafiikkasuorittimen tuloksia, tiedot on myös kopioitava grafiikkasuorittimesta suorittimeen. Kuten edellä mainittiin, grafiikkasuorittimen päämuistin ja grafiikkasuorittimen ytimien välinen muistiväylä on tavallisesti nopeampi kuin suorittimessa. Tietojen siirtäminen grafiikkasuorittimen ja suorittimen välillä on kuitenkin suhteellisen hidasta ja voi usein muodostua suorituskyvyn pullonkaulaksi. Tämän vuoksi ohjelmoijan on kiinnitettävä erityistä huomiota tiedonsiirtojen minimointiin niiden välillä.
Haasteista ja rajoituksista huolimatta monet sovellukset hyötyvät grafiikkasuorittimen nopeutuksesta. Esimerkiksi supertietokoneissa on tavallisesti neljästä kuuteen grafiikkasuoritinta ja yksi tai kaksi suoritinta solmua kohti. Kun sovelluksen suorituskykyä verrataan tilanteessa, jossa sitä käytetään grafiikkasuorittimien tai vaihtoehtoisesti vain suorittimien avulla, grafiikkasuorittimet voivat yleensä nopeuttaa ohjelmistoa 4–8-kertaisesti, joissakin tapauksissa jopa 10-kertaisesti tai enemmän.
Grafiikkasuorittimilla on erityisen tärkeä rooli koneoppimista hyödyntävissä sovelluksissa, kuten neuroverkkojen kouluttamisessa. Tämä johtuu siitä, että neuroverkkojen kouluttamisessa käytettävät aritmeettiset toiminnot ovat luontaisesti rinnakkaisia ja sellaisenaan grafiikkasuorittimille hyvin soveltuvia. Parhaimmillaan grafiikkasuorittimet suorittavat näitä toimintoja jopa 30 kertaa nopeammin kuin suorittimet.
Grafiikkasuorittimilla on ollut merkittävä rooli suurteholaskennassa lähes vuosikymmenen ajan, mutta kiihdyttimien käyttämisessä supertietokoneissa ei ole mitään uutta. Tietyntyyppisiä apusuorittimia on käytetty vaihtelevasti laskelmien osien suorittamiseen 1960-luvulta lähtien. Tällä hetkellä näyttää siltä, että grafiikkasuorittimet ja muut kiihdyttimet ovat tulleet jäädäkseen, mutta vain tulevaisuus kertoo, onko asia näin.
Nvidia on ollut perinteisesti tunnetuin grafiikkasuorittimien toimittaja sekä laitteiston suorituskyvyn että ohjelmistokehitysekosysteemin kypsyyden vuoksi. Intel ja AMD ovat kuitenkin viime aikoina kehittäneet aktiivisesti grafiikkasuorittimia suurteholaskentaa varten. LUMI-supertietokoneessa käytetäänkin AMD-grafiikkasuorittimia.
Sisältää "Supercomputing"-verkkokurssin materiaaleja (https://www.futurelearn.com/courses/supercomputing/), Edinburgh Supercomputing Center (EPCC), Creative Commons SA-BY -lisenssi