Uusimmat

GPGPU ja sen käyttökohteet & näytönohjaimen edut prosessoriin verrattuna

24.08.2011 18:35 Muropaketin toimitus

GPGPU on tekniikka, jonka tarkoituksena on siirtää aiemmin pelkästään prosessorin vastuulla olevaa laskentaa myös näytönohjaimelle. Näytönohjainten grafiikkapiirit on suunniteltu aiemmin huomattavasti rajoitetumpaan käyttöön kuin prosessorit, mutta näytönohjainkehitys on jo muutaman vuoden ajan suunnannut kohti yleiskäyttöisempää linjaa. Prosessoreihin verrattuna nykypäivän grafiikkapiirit ovat vahvoilla esimerkiksi rinnakkais- ja vektorilaskentaan liittyvillä osa-alueilla. Pienien käyttäjäryhmien lisäksi kiinnostus on herännyt peruskuluttajien ja tutkijoiden keskuudessa, kun markkinoille on saapunut helposti saataville GPGPU:ta tukevia laitteita ja ohjelmistoja.

Suorituskykyyn liittyvien seikkojen ohella GPGPU on herättänyt kiinnostusta myös kustannusten saralla, sillä parhaimmissa tapauksissa muutaman kymmenen euron hintainen näytönohjain kykenee tarjoamaan huomattavasti paremman vastineen rahoille kuin tuhannen euron hintainen prosessori.

 

GPGPU:n käyttökohteet

Fysiikkamallinnuksessa laskut ovat usein yksinkertaisia, mutta riippuvat toisista laskutoimenpiteistä. Uudet näytönohjaimet kykenevät suorittamaan valtavan määrän laskutoimituksia sekunnissa ja rinnakkaisuuteen perustuvien arkkitehtuurien myötä niissä riittää resursseja laskemaan laskutoimenpiteitä suurilla nopeuksilla ja ne kykenevät mukautumaan toisten ytimien tuottamiin tuloksiin.

Nykyiset grafiikan osalta huippuunsa hiotut pelit kuluttavat prosessoritehoa pelin perustoimintojen lisäksi muun muassa mahdollisimman realistisen tekoälyn ja fysiikanmallinnuksen luomiseen. Rajallisten resurssien vuoksi useat paljon fysiikkamallinnusta vaativat efektit, kuten räjähdykset ja realistisen näköiset vesivirtaukset, ovat loistaneet poissaolollaan.

Kuluttajien kannalta yksi hyvin näkyvä osa-alue, joka hyötyy GPGPU:sta, on teräväpiirtoelokuvia toistavat multimediasovellukset. Täyden 1080p-resoluution (1920×1080) elokuvien toistaminen vaatii paljon suorituskykyä ja pelkällä prosessorilla toistaessa se asettaa kohtuullisen kovat vaatimukset laitteistolle. Suurimpien ohjelmistotalojen multimediatoisto-ohjelmat ovat tukeneet jo jonkin aikaa näytönohjainkiihdytystä, mikä käytännössä tarkoittaa tekniikkaa tukevan näytönohjaimen omistajalle, ettei prosessorilta vaadita elokuvien toistamiseen juuri lainkaan suorituskykyä. Toistoon saattaa riittää pelkästään emolevyn piirisarjaan integroitu grafiikka-ohjain ja erillisnäytönohjaimen osalta kaikki nykyään markkinoilta saatavilla olevat mallit jaksavat toistaa sulavasti raskaimpiakin elokuvia.

Ammattikäytössä GPGPU:n käyttökohteita rajoittaa ainoastaan mielikuvitus ja tekniikkaa voidaan hyödyntää esimerkiksi matemaattisten laskutoimitusten suorittamisessa, sääennusteiden laskemisessa, moottoreiden sekä nesteiden käyttäytymisen mallintamisessa, kryptografiaan, kuvankäsittelyyn, säteenseurantaan, kasvojen ja erilaisten objektien tunnistukseen sekä kyseenalaisena alueena salausten purkamiseen.

Valmiita sovelluksia löytyy jo aiemmin mainittujen pelien ja multimediatoisto-ohjelmien ohella myös ohjelmistotalo Adobelta, jonka Photoshop-kuvankäsittelyohjelma ja Acrobat-PDF-ohjelma tukevat näytönohjainkiihdytystä. Myös hajautettua laskentaa hyväksi käyttävä Folding@home-ohjelmaa voi käyttää näytönohjainkiihdytteisesti ja ohjelman tarkoituksena on laskea proteiinien laskostumista ja auttaa lääketeollisuutta uusien hoitomenetelmien kehittämisessä. Yleisesti käytössä oleva numeerisen laskennan MATLAB-ohjelmisto, CAD-ohjelmisto AutoCAD sekä muun muassa 3D-mallinnusohjelma 3ds Max ovat ainoastaan muutamia esimerkkejä käyttökohteista, joissa näytönohjaimella kyetään nopeuttamaan ohjelman toimintaa pelkkään prosessoriin verrattuna.

 

Näytönohjaimen edut prosessoriin verrattuna

Prosessorin ja grafiikkapiirin alkuperäiset käyttötarkoitukset ovat hyvin erilaiset ja prosessorin englanninkielinen nimi Central Processing Unit antaa osviittaa siitä, että kyseessä on tietokoneen yksi keskeisimmistä komponenteista. Alun perin, vuosikymmeniä sitten, prosessorin rinnalla ei ollut erillisiä näytönohjaimia, mutta käyttöjärjestelmien 2D-ominaisuuksien kasvaessa rinnalle tarvittiin erikoistuneempi ratkaisu kiihdyttämään käyttöliittymää. 3D-sovellusten kehittyessä myös näytönohjaimet ovat kehittyneet ja nykypäivänä ne ovat prosessorin rinnalla välttämätön osa tietokonetta, kun esimerkiksi Microsoftin uusimman Windows 7 -käyttöjärjestelmän Aero-käyttöliittymä jo yksistään asettaa vaatimuksia näytönohjaimelle.

Ylempi kuva selventää karkeasti tilannetta prosessorin ja grafiikkapiirin välillä. Prosessorin ohjausyksikkö, laskentayksiköt ja välimuistit ovat merkittävästi suuremmat eli suorituskykyisemmät kuin grafiikkapiirillä, mutta DRAM-muistien koot ovat yhdenvertaisia.

Siinä missä prosessorissa ytimiä on muutama kappale, grafiikkapiirissä niitä on nykypäivänä satoja. Grafiikkapiirin käsittelemät säikeet ovat erittäin kevyitä ja täyden suorituskyvyn saavuttamiseksi niitä tarvitaan tuhansia, kun taas prosessorin tapauksessa käsiteltäviä säikeitä on yhtä aikaa ajossa vain muutamia. Prosessorin strategiana on saavuttaa mahdollisimman hyvä suorituskyky yhtä säiettä suoritettaessa, kun taas grafiikkapiirillä täysi suorituskyky saavutetaan suurella määrällä säikeitä.

Arkkitehtuurilliset eroavaisuudet ovat johtaneet siihen, että suorituskykyisimmissä näytönohjaimissa grafiikkapiireillä on käytössä GDDR5-muistia, kun taas prosessoreilla on käytössä DDR3-muistia. Muistien kaistanleveyksissä erot ovat moninkertaiset, sillä GDDR5-muisteilla kyetään saavuttamaan näytönohjaimilla maksimissaan hetkellisesti yli 200 gigatavun tiedonsiirtonopeuksia sekunnissa, kun DDR3:lla nopeudet jäävät alle 20 Gt/s:iin. Toisaalta prosessoreiden käytössä olevat muistit ovat tehokkaampia viiveissä.

Intelin kuusiytiminen Core i7-990X Extreme Edition -prosessori kykenee Hyper-Threading-teknologian myötä käsittelemään yhtäaikaisesti maksimissaan 12 säiettä ja sen suorituskyvyn yleisenä mittarina käytettävä GFLOPS-tulos ylittää 110:n.

NVIDIAn 512 CUDA-ytimellä varustetulla, uudistettuun Fermi-arkkitehtuuriin perustuvalla GeForce GTX 580 -näytönohjaimella arvo on 1,58 TFLOPSia eli 1581 GFLOPSia. Kun edellä mainitun näytönohjaimen sekä edellisessä kappaleessa mainitun prosessorin GFLOPS-lukuja verrataan keskenään, näytönohjaimelle ilmoitetun arvon voidaan todeta olevan yli 10-kertainen.

Prosessoreilla suorituskyvyn kasvattaminen FLOPS-arvon valossa on huomattavasti hankalampaa kuin näytönohjainten grafiikkapiireillä niiden monimutkaisuuden takia. Siinä missä markkinoiden suorituskykyisimmissä työpöytäkäyttöön suunnatuissa prosessoreissa on fyysisiä ytimiä maksimissaan kuusi kappaletta, GeForce GTX 580:n tapauksessa CUDA-ytimiä on 512 kappaletta.

FLOPS on suorituskyvyn vertailussa käytettävä suure, jossa verrataan liukulukulaskennan suorituskykyä. Varsinkin tieteellisessä laskennassa läsnäolollaan loistava suure ilmaisee lukuarvon, kuinka monta liukulukuoperaatiota laite kykenee suorittamaan sekunnissa. G-etuliite tarkoittaa kerrannaisyksikköä giga (109) ja T puolestaan teraa (1012).

Sisältö

  1. GPGPU-tekniikka: Laskentaa näytönohjaimella
  2. Näytönohjainten historia & markkinatilanne
  3. Näytönohjaimen rakenne & grafiikkapiirien arkkitehtuuri
  4. GPGPU ja sen käyttökohteet & näytönohjaimen edut prosessoriin verrattuna
  5. Ohjelmointikirjastot
  6. Testit
  7. Loppuyhteenveto